我决定将三个值的组合设置为我的数据库表的主键(复合键)。前两列的大多数时间都是唯一的。但在少数情况下它们都是相同的第三列值对于该行始终是唯一的。问题是第三列是描述,即用户可以输入的任何字符串。我知道不建议将用户给定字符串作为主键。但是可以将它作为复合键的一部分。我真的看不到其他选择。
答案 0 :(得分:1)
如果可能的话,你应该添加一个代理主键,这意味着一个唯一且没有任何商业意义的密钥。
复合主键经常变得不那么“稳定”。比预期 - 但是如果你必须使用一个,那么使用一个或多个用户几乎没有控制权的组件列(比如created_timestamp)会更好。
答案 1 :(得分:0)
添加一个名为id
的单独列,并将其设为auto increment
,并将此列用作primary key
。
希望这能解决您的问题。
干杯。