是否可以自动增加一个非主键字段?
表 "book_comments"
book_id medium_int
timestamp medium_int
user_id medium_int
vote_up small_int
vote_down small_int
comment text
comment_id medium_int
Primary key -> (book_id, timestamp, user_id)
这个表不会有其他索引。但是,我想让 comment_id
这一列自动增加,以便我可以轻松地创建另一个表:
表格“book_comments_votes”
comment_id (medium_int)
user_id (medium_int)
Primary key -> (comment_id, user_id)
每个书评只能投一次票。这个表通过主键来强制执行这个规则。
问题:
是否可以自动递增非主键 - 比如,在“book_comments”表中自动递增“comment_id”列?
备选方案,讨论。
我希望出于简单的考虑而这样做,但其他方案并不理想。
- 将“comment_id”设置为PK,并通过对“book_id”、“timestamp”和“user_id”的唯一索引来保证完整性。在这种情况下,我会创建一个额外的索引。
- 保留PK,用整个PK替换“book_comments_votes”中的“comment_id”。这将使表的大小增加三倍以上。
有建议吗?想法呢?
comment_id
设为主键呢?我不明白为什么你需要额外的唯一索引。可能是我没有完全理解你的问题。 - Michael Miorcomment_id
作为主键不足以保证数据完整性 - 特别是针对特定书籍的其他重复用户投票。因此,需要使用复合键创建唯一索引。 - ProfileTwist