【发布时间】:2021-10-12 05:44:31
【问题描述】:
我正在尝试设计一个 SQL lite 数据库。我已经在纸上快速设计了我想要的东西。
到目前为止,我有一个包含以下列的表格:
-
user_id(是唯一的,也是表的主键) -
number_of_items_allowed(可以是任意数字,不必一定是 独一无二) -
list_of_items(任意大小的列表,只要小于等于 到 number_of_items_allowed 并且此列表存储项目 ID)
我最苦恼的专栏是list_of_items。我知道关系数据库没有允许列表的列,您必须使用该信息创建第二个表来规范化数据库。我查看了一些堆栈溢出答案,包括 this 一个,它表示您不能将列表存储在列中,但我无法将接受的答案应用于我的案例。
我曾考虑过有一个辅助表,其中每个项目 ID 都有一行属于 user_id,在这种情况下主键将是项目 ID 和 user_id 的组合,但是,我不确定这是否是理想的解决方法。
【问题讨论】:
-
我不会有一个列
list_of_items,我肯定更喜欢另一个具有 userID 和 itemID 复合唯一索引的表。不需要主键,尽管您可以有一个,只要其他两列是唯一的复合索引以避免重复。
标签: sql sqlite database-design triggers foreign-keys