Web2py:id作为外键

时间:2012-07-02 18:00:24

标签: foreign-keys primary-key web2py

我正在尝试实现一些模仿关系(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吗?
  3. 在编写代码时,应用正确的样式和练习非常重要。我对其他方法持开放态度。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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