我有一个涉及数据库设计的问题。对于我正在构建的应用程序,需要将一组特定标识符与可变数量的数据相关联。我构建的解决方案涉及两个表。
第一个表具有自动递增的主键ID,以及两个列都在唯一索引中(用于标识特定数据集)。然后,第二个表引用主键,并将数据与此键一起存储。
使用这种技术,我能够将第一个表中唯一索引中包含的两个标识符与第二个表中的可变行数链接起来。
我知道这会有效,但我的问题涉及这种结构的可行性。将整个第一个表包含在索引中是不是很糟糕的数据库设计?任何人都可以想到任何更好的解决方案,不涉及复制第一个表中使用的标识符吗?
我正在使用MySQL和innodb,如果它与问题相关。
答案 0 :(得分:1)
是否有糟糕的数据库设计 整个第一个表包含在 索引?
不是你的情况。真正的问题应该是,“第二张表中的候选键是什么?”
在您的情况下,您可以将“第一个”表视为假设的CHECK()约束中隐含的有效值的枚举。
您是否听说过域密钥正常格式(DKNF)?更熟悉的3NF,BCNF,4NF和5NF是DKNF的特例。