【发布时间】:2012-05-24 14:33:43
【问题描述】:
我创建了一个包含三个表的数据库:
Restaurant
restaurant_id (autoincrement, PK)
Owner
owner_id (autoincrement, PK)
restaurant_id (FK to Restaurant)
Deal
deal_id (autoincrement)
owner_id (FK to Owner)
restaurant_id (FK to Restaurant)
(PK: deal_id, owner_id, restaurant_id)
每个餐厅可以有多个所有者。我为 Deal 选择了两个外键,因此我可以通过所有者或餐厅来引用该交易。交易表将有三个主键,两个是外键。它会有两个指向它的一对多关系。我所有的外键都是主键,我不知道以后会不会后悔这样做。这种设计是否有意义,并且看起来对我想要实现的目标有好处?
编辑:我真正需要在这里完成的是当所有者登录并查看他们的帐户时,我希望他们能够查看和编辑所有关联的交易与那家特定的餐厅。而且因为每家餐厅可以有多个所有者,所以我需要能够执行如下查询:select *from deal where restaurant_id = restaurant_id。换句话说,如果我是所有者并且我已登录,我需要能够进行查询:获取不仅与我(所有者)相关的所有交易,而且与与关联的所有所有者相关的所有交易这家餐厅。
【问题讨论】:
-
如果可以从
owner表中推断出餐厅,那么就不需要deal表中的餐厅。但我仍然会在deal表中使用复合主键。
标签: mysql sql database-design data-modeling