【发布时间】:2016-09-02 05:52:20
【问题描述】:
我正在使用 Postgres 9.5 进行投票表设计(但也许问题本身通常适用于 sql)。我的投票表应该是这样的:
-------------------------
object | user | timestamp
-------------------------
其中object 和user 是对应于它们自己的表的id 的外键。我在确定什么应该是主键时遇到问题。
我起初想创建一个primary_key(object, user),但由于我使用 django 作为服务器,它只是不支持多列主键,我也不确定性能,因为我可能只使用其中一个来访问一行这 2 列(即object 或user),但这个想法的优点是自动作为唯一键起作用,因为同一个用户不应该为同一个对象投票两次。而且我不需要任何额外的索引。
另一个想法是引入auto 或serial id 字段,我真的不认为使用这种方法有什么好处,尤其是当表变大时。我还需要至少介绍一个unique_key(object, user),它会增加计算复杂性和数据存储。甚至不确定使用 2 列之一选择时的性能,可能我还需要 2 个额外的索引用于 object 和 user 来加速选择操作,因为我非常需要这个。
我在这里缺少什么吗?还是有更好的主意?
【问题讨论】:
标签: sql django postgresql