我正在创建一个数据库,这是我第一次与他们合作。
我有一个关于一对一通信的问题。我正在创建一个代表某项运动团队的表格。
我希望每支球队都只有一个比赛场地,每支球队都有自己的场地。
竞技场将有许多属性(名称、座位、票价等),所以我会为他们创建一个表,即使我已经读过创建一对一关系的最佳实践是将所有属性放在一个表中.
因为竞技场和团队是两个如此不同的概念,所以我会将它们分成两个表格,如下所示:
Club
--------------------
ClubID (PK)
ClubName
.
.
.
ArenaID (FK)
Arena
--------------------
ArenaID (PK)
ClubID (FK)
ArenaName
Seats
TicketPrice
此外,我认为 ArenaID 不是 AutoIncremental,而是与 ClubID 相等,因为我会在创建俱乐部时自动创建 Arena。合理吗?
我想很好地理解这种类型的关系,因为它也将用于其他情况(例如,每支球队总会有一名具有他技能的助理教练)。
谢谢大家!
编辑:
@Kevin Bowersox 我只是在说明游戏将如何进行,感谢您的回答。
@Peter Gluck您应该将竞技场视为俱乐部的一个属性,但它有其他自己的属性,我想将它与俱乐部表分开以更好地组织数据库。如果一个俱乐部想要“建造”另一个竞技场,它只需改变实际竞技场的名称,它就可以改变座位数和票价。但是保存在数据库中的“对象”将保持不变。只有一些列将被更改。
@Branko Dimitrijevic 感谢您的详细回答。我想问你一些问题,以便更好地理解你所说的(我现在开始使用数据库)。在第一个示例中,您没有为两个表使用两个键,或者一个主键,另一个是外键,但您使用唯一的键,即同时主键和外键,这是正确的吗?这两种选择有什么区别?然后,你说如果我没有太多的团队,我把所有都放在一个桌子上会更好,但我希望我会有几万(或几十万)队。在这种情况下,这是一个足够大的数字来拆分表吗?我这样说是因为我在这个表中不仅仅是这个一对一的关系,所以如果我把所有这些一对一的关系放在同一个表中,它会非常非常大。
感谢大家的建议,现在我将尝试使用带有两个表和两个不同 ID 键的方法。但我将在其他表格中使用 ypercube 建议的方法!