gpt4 book ai didi

sql - 有限制的多对多关系的数据库设计

转载 作者:行者123 更新时间:2023-12-03 02:23:21 27 4
gpt4 key购买 nike

我有一个包含用户的数据库和一个包含问题的数据库。我想要的是确保每个用户只能回答每个问题一次。

我想到了一个数据库,其中所有问题 id 作为列,所有用户 id 作为记录,但是当问题和用户数量增长时,这个数据库会变得非常大(而且我猜很慢)。

是否有其他方法可以实现更好的性能?

最佳答案

您可能想要这样的设置。

Questions table (QuestionID Primary Key, QuestionText)
Users table (UserID Primary Key, Username)
Answers table (QuestionID, UserID, Date) -- plus AnswerText/Score/Etc as needed.

Answers表的前两列一起形成复合主键 (QuestionID, UserID)两者都是 Question(QuestionID) 的外键和Users(UserID)分别。

复合主键确保 QuestionID/UserID 的每个组合只允许一次。如果您希望允许用户多次回答同一问题,您可以扩展“复合主键”以包含日期(这样它将成为一个复合键)。

这是一个标准化的设计,应该足够高效。通常使用 surrogate primary key (如 AnswerID )而不是复合键并使用 unique约束而不是确保唯一性 - 使用代理键通常是出于易用性的动机,但这绝不是必要的。

关于sql - 有限制的多对多关系的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31620869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com