我正在阅读数据库结构规范化的概念。我对我项目中的以下情况感到困惑。
TableA
"和TableB
Parameter
本身作为对象具有相同的属性。所以我担心的是我应该有一个Parameter
表,其中TableA
和TableB
或者
Parameter
和Table A
Table B
表
结构看起来像这样
案例I:
TableA
ID
Name
Description
TableB
ID
Name
SomeFlag
Parameter
ID
TableA_ID
TableB_ID
Name
Description
Type
案例II
TableA
ID
Name
Description
Parameter_A
ID
TableA_ID
Name
Description
Type
TableB
ID
Name
SomeFlag
Parameter_B
ID
TableB_ID
Name
Description
Type
我个人更喜欢Case I,因为创建另一个表示相同类型数据的表是有意义的。
按照规范化的概念,我们应该有一个只代表一件事的表。所以我想我应该只有一个参数表。但是,如果从TableA查看该表时意味着完全不同,从TableB查看时表示不同,那该怎么办?
答案 0 :(得分:2)
我会使用案例一但有一些变化。参数实体确实包含一个事物,即表的参数。参数条目的实例应仅与一个表相关(根据您的分析,它们不相关)。
Parameter
----------
PK Param_ID
FK Main_Table_ID
Main_Table_name (A or B)
param_Name
param_Description
param_Type
答案 1 :(得分:0)
如果参数在同一实例中具有两者表A 和表B是合理的,那么情况I更好。
在关系理论中,每个表都是一个类型。即使它们可能具有共同数据,类型也基于其使用。虽然它有点复杂,但案例II更加规范化。
还有另一种可能性,没有被提及,我称之为案例III。
TableA
ID
Name
Description
PropertyID
TableB
ID
Name
SomeFlag
PropertyID
Parameter
ID
Name
Description
Type
如果两个表中的属性总是很常见,这可能是最好的解决方案。