0

我正在尝试实现一些模仿关系(sqlite)数据库中的继承的表。我的目标是拥有一个包含通用字段的主表,以及一些具有专业字段的子表。主表中的每条记录都将在其中一个特定表中恰好有一个对应项。我想要的看起来像这样:

主表:

id (PK) #Your average web2py unique auto-incrementing int field
#Some general fields

子表:

id (PK, FK referencing the PK of the master table)
#Some specialized fields

为每个子表设置一个默认的“id”PK 对我来说没有用。我只需要一个对主表的 FK 引用,它可以作为子表的 PK。这意味着子表的 PK 将是唯一的,但会包含间隙。这是因为子表只会引用主表的部分记录。

我的印象是这样做(不给子表提供常规的“id”PK)违反了 Web2py 方式。所以我的问题如下:

  1. 这是一个坏主意™吗?如果是这样,为什么?
  2. 我将如何实现这一点?Web2py 可以处理没有自动递增 int 作为 PK 的表吗?

在编写代码时应用正确的风格和实践对我来说非常重要。我对替代方法持开放态度。

感谢您的帮助。

4

1 回答 1

1

请参阅有关键控表的书籍部分。如果这是一个专门用于 web2py 的数据库,我建议你坚持使用标准的 web2py 方法:

db.define_table('master', ...)

db.define_table('child', Field('master', db.master))
于 2012-07-02T22:23:59.610 回答