我处于这样一种情况:我必须在表格中存储key -> value
对,表示已投票选定某些产品的用户。
UserId ProductID
1 2345
1 1786
6 657
2 1254
1 2187
正如您所看到的那样userId
不断重复,productId
也是如此。我想知道什么是表示这些数据的最佳方式。此处还需要使用主键。我搜索了很多,但无法找到关于我的问题的确切规范。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:2)
如果您想强制某个用户最多只能投票给定一个产品一次,请在两列上创建一个唯一约束:
ALTER TABLE mytable ADD UNIQUE INDEX (UserId, ProductID);
虽然您可以将这两个列一起用作键,但是如果您定义一个单独的,通常是自动增量的键列,则应用程序代码通常更简单,但执行此操作的决定取决于您使用的应用程序代码语言/库
如果你有任何表持有对该表的外键引用,并且你打算使用引用完整性,那么如果你创建一个单独的键列,这些表和用于定义关系的SQL也会更简单 - 你只是结束了多个列而不是一个列。