我的产品有多种尺寸。下一个设计好吗?
产品(#product_id,product_name)
尺寸(#size_id,#product_id,尺寸)
通过'#'我表示一个外键或主键。
答案 0 :(得分:1)
您没有明确指定哪些列组合是主键,哪些是外键约束,哪些是唯一约束在Size表中。
Product_id显然是引用Product的外键。它没有问题。
Size_id可能是一个自动递增的标识符,并且是“Size”的“主键”。这对我来说似乎有些过分,但实际上并没有错。
Product_ID和Size的未记录组合需要一个唯一的约束,以确保您不会像这样结束两行:
Size_ID Product_ID Size
1234 23456 12
1235 23456 12
两次说同样的东西 - ID为23456的产品大小为12。并且说同样的东西两次是重复的并且容易导致错误的答案(产品23456有多少尺寸 - 答案更难计算你是否必须写COUNT(DISTINCT大小)而不是COUNT(*),而不是因为输入而是因为DBMS必须做更多的工作,并且因为有人会忘记某些时候并产生错误的查询而它赢了直到事后检查为什么出现了严重错误之后才被发现是一个问题。
使用Product_ID和Size作为主键的组合,没有Size_ID就可以完美地完成。如果做不到这一点,您需要对Product_ID和Size进行唯一约束。