【发布时间】:2014-11-19 13:21:57
【问题描述】:
我有一个包含很多行的表,但是 name 和 id 列总是需要彼此相等。
例子:
name id value
'josh' 1 'blah'
'josh' 1 'foo'
'marc' 2 'bar'
'marc' 2 'boo'
在任何时候都不应该有一行名称为“josh”,其中 id != 1 但组合可能会重复多次(因此它不是主键)。
【问题讨论】:
-
如果是约束,则将其建模为约束。如果 {name,Id} 是唯一的,则使其唯一。 (
name似乎指的是更强大的域,也许id甚至是多余的,或者反过来) -
我删除了标签 [唯一约束]。这个案例看起来有些相似,但完全不相关。
-
“总是需要相对于彼此相等的相同事物”没有任何意义。
-
1) 当列 id 不是表的 id 时,你不应该调用它。 2) id 是人的身份证吗?那为什么没有 person 表保存这些人员,即 id 和 name?
标签: sql postgresql database-design normalization