por*_*ton 12 foreign-key database-design
假设我正在为存在一对零或一 (1-0..1) 关系的场景设计数据库。例如:
因此,我创建了两个对应的表,users
和customers
,但是……
…在给定的 SQL 平台中表示和实现这种情况的最佳方法是什么?我考虑了两种可能的解决方案:
在里面 users
表中,添加customer
可能是 FOREIGN KEY 引用customers
或NULL
标记的列。
在customers
表中,包括一个user
UNIQUE
指向users
表格列(设置有约束)。
我已经在一些论坛上问过类似的问题,但答案基本上是“你需要什么”,“你觉得方便什么”。我不喜欢这种回答。我想要一个严肃的 DB 理论,一个有根据的答案。我在哪里可以读到 1-0..1 关系?
one*_*hen 10
我想要一个严肃的 DB 理论
现代关系理论拒绝 nulls,这似乎会立即使您的选项 1 无效。但是,可以通过将默认 null 替换为默认值(例如,仅为显式建模“不是客户”而创建的“虚拟”客户)来消除这个稻草人一致。
我认为您的选项 2 在理论上是最合理的,因为与修改后的选项 1 不同,这些关系可以采用第六范式 (6NF),即投影连接范式和可达到的最高范式。
我还听说过一个设计经验法则,该规则指出关系应该为实体或实体之间的关系建模,但不能同时为两者建模,这对我来说似乎很合理。同样,这将有利于选项 2。但是,我多年前听说过这个经验法则,不记得在哪里并且不能提供任何严肃的理论基础(除了上面提到的 6NF)。
归档时间: |
|
查看次数: |
8387 次 |
最近记录: |