我正在创建一个数据库,这是我第一次使用它们。
关于一对一的对应关系,我有一个问题。我正在创建一个代表某种运动队的表格。
我希望每个团队只有一个比赛场馆,并且每个团队都有自己的场馆。
场馆将有许多属性(名称、座位、门票价格等),因此,即使我已经阅读过最好的做法是把所有内容放在一个表格中,我仍然会为它们创建一个表格。
因为场馆和团队是两个如此不同的概念,所以我会分成两个表格,就像这样:
Club
--------------------
ClubID (PK)
ClubName
.
.
.
ArenaID (FK)
Arena
--------------------
ArenaID (PK)
ClubID (FK)
ArenaName
Seats
TicketPrice
此外,我想将ArenaID设为与ClubID相等,而非自动递增,因为当创建俱乐部时,我会自动创建竞技场。这样做合理吗?
我想要了解这种关系类型,因为它在其他情况下也会被使用(例如每个团队都将拥有一个助理教练及其技能)。
谢谢大家!
编辑:
@Kevin Bowersox 我只是在说明游戏的方式,感谢您的回答。
@Peter Gluck 您应将竞技场视为俱乐部的属性,但它有其他独立的属性,我希望将其与俱乐部表分开以更好地组织数据库。如果俱乐部想要“建造”另一个竞技场,它只需更改实际竞技场的名称,就可以更改座位数和票价。但“对象”保存在数据库中将保持不变。只有一些列会发生变化。
@Branko Dimitrijevic 感谢您详细的回答。为了更好地理解您所说的内容,我想问您一些问题(我现在开始使用数据库)。在第一个示例中,您没有为两个表使用两个键,这将分别成为主键和外键,而是使用一个既是主键又是外键的唯一键,这样做正确吗?这两种选择之间有什么区别? 然后,您说如果我没有太多的团队,最好将所有内容放在单个表中,但是我希望会有成千上万的团队。这种情况下是否足够大的数量来拆分表格?我这样说是因为在这个表格中不仅有这一个一对一关系,还有其他的一对一关系,所以如果我将所有这些一对一关系都放在同一个表格中,它将非常非常大。
感谢大家的建议,现在我将尝试使用两个不同ID键的两个表的方法。但是在其他表格中,我将使用ypercube建议的方法!