2011-02-15 38 views
0

我有一个涉及数据库设计的问题。对于我正在构建的应用程序,一定数量的唯一标识符需要与可变数量的数据相关联。我建立的解决方案涉及两个表格。整个表存储在索引

第一个表具有自动递增主键ID以及两个都在唯一索引(用于标识特定数据集)的列。第二个表然后引用主键,并将数据与此键一起存储。

使用此技术,我能够将第一个表中唯一索引中包含的两个标识符与第二个表中的可变数量的行链接起来。

我知道这会起作用,但我的问题涉及这种结构的可行性。索引中包含整个第一个表是否很差的数据库设计?任何人都可以想到任何更好的解决方案,不涉及重复第一个表中使用的标识符?

我使用MySQL以及innodb,如果它与问题有关。

回答

1

难道数据库设计中有 整个第一张表包含在 索引中吗?

不是你的情况。真正的问题可能应该是:“第二个表中的候选键是什么?”

对于您的情况,您可以将您的“第一个”表视为在假设的CHECK()约束中隐含的有效值的枚举。

你有没有听说过域密钥标准格式(DKNF)?比较熟悉的3NF,BCNF,4NF和5NF是DKNF的特例。

+0

谢谢你的回答。我知道规范化更像是一种实践,而不是知道教科书的定义。但是,我会查找DKNF。 – 2011-02-17 05:04:48