![]() |
1
3
这真的取决于你在做什么。 如果每个客户只能有一个假期,那么可以将客户ID设置为主键。 如果每个客户可以有多个假期,那么不,您需要添加一个新的ID列,使其成为主要的。这允许您按每个客户选择假日,并按其唯一ID选择单个记录。 另外,如果每个客户只能有一个假期,我只需将假期信息添加到表中,因为一对一关系通常是不必要的。 |
![]() |
2
0
如果我正确理解您的问题,您只能将客户表用作假日的主键,如果有的话 从未 在餐桌上为那个顾客安排其他节日。换句话说,一个客户的两个假期使用客户ID作为主键。 |
![]() |
3
0
如果有一个面向对象的程序与这个数据库相关联,那么每个实体(每一行)都必须有一个唯一的键。 第二种设计确保了假日的每个实例都可以由OO应用程序使用简单的对象关系映射进行唯一标识和处理。 一般来说,最好确保数据库中的每个实体都有一个唯一的、不变的、系统分配的(“代理”)键。其他“自然”键可以具有唯一的索引、约束等,以适应业务逻辑。 |
![]() |
4
0
前面的答案是正确的,但也要记住,每个表中可以有两个单独的主键,“假日”表将有指向customerid的外键。 然后,您可以在代码中管理假日分配给客户,以确保只有一个假日可以分配给客户,但这带来了问题并发性,即两个人同时为客户添加一个假日最可能导致客户有两个假日。 如果只能用假日创建客户,甚至可以将假日字段放在客户表中,但这种设计很混乱,并不建议这样做。 所以再一次,问题2中的选项仍然是最好的方式,只是给你选择。 |
![]() |
5
0
在实践中,我发现每个表都应该有一个唯一的主键来标识这些表中的记录。应显式声明与其他表的所有关系。 这有助于其他人更好地理解关系,尤其是当他们使用一个工具将模式反向工程到可视化表示中时。 此外,它还为您将来扩展解决方案提供了更多的灵活性。现在,每个客户可能只有一个假期,但如果将客户ID作为主键,则更难更改。 如果要强制假日表中客户的唯一性,请在该外键上创建唯一索引。事实上,这可以提高查询客户ID时的性能(尽管我猜您不会看到足够多的记录来注意到这一改进)。 |
![]() |
Michael Samuel · MYSQL在以下情况下自动创建索引 6 年前 |
![]() |
Patricia Rozario · 数据库设计确保一对一关系 6 年前 |
![]() |
dryhay · MySQL“多对多”关系错误 7 年前 |
![]() |
L. Fox · 我在这里用的是什么样的Laravel雄辩的关系 7 年前 |
![]() |
Geoff Harper · 我应该如何构建关系松散的SQL db 7 年前 |
![]() |
waroxx · SQL—当多个表具有相同的列时,最好怎么做 7 年前 |
![]() |
Lumpi01 · SQL 2不同的注释类型-最佳解决方案? 7 年前 |
![]() |
Hayreddin Tüzel · 预约系统数据库建模[关闭] 7 年前 |