Database 数据库表设计有很多属性
我想知道在这种情况下db的设计应该是什么样子 我想到的是每个实体的表格,如:Database 数据库表设计有很多属性,database,database-design,data-structures,Database,Database Design,Data Structures,我想知道在这种情况下db的设计应该是什么样子 我想到的是每个实体的表格,如: Engine EngineDesign ElectricalSystem Drivetrain etc. 但在我看来,它有很多桌子。我的想法是正确的还是过度的 那传动系统呢?今天我们有8个档位,但只要制造商提供不同的产品,档位就可以改变 应该是这样的: 表(列) 或 表(行) 我的第一反应是使用属性表和Cars表(我假设是Cars?) 编辑:请参阅下面的注释@HLGEM解释为什么在本例中实体属性值表
Engine
EngineDesign
ElectricalSystem
Drivetrain
etc.
但在我看来,它有很多桌子。我的想法是正确的还是过度的
那传动系统呢?今天我们有8个档位,但只要制造商提供不同的产品,档位就可以改变
应该是这样的:表(列) 或 表(行)
我的第一反应是使用属性表和Cars表(我假设是Cars?)
编辑:请参阅下面的注释@HLGEM解释为什么在本例中实体属性值表不是一个好主意。不能通过计算表来判断数据库设计的合理性。没有“太多表”的标准形式,也没有“不够表”的标准形式。也没有“列太多”的标准形式,也没有“列不够”的标准形式 就目前情况而言,为每个变速箱传动比设置一列可能仍然会使您达到5NF。这是因为它没有多个值来自同一个域的列,这是一个问题。它有多个列,这些列的值来自同一个域,并且具有相同的含义,这是一个问题 显然,8档和1档有不同的含义。事实上,你可以认为它们是从不同的领域中提取出来的。我猜0.67不是1档的有效值,4.85不是8档的有效值 当它们存储在不同的列中时
- 很容易实施约束,即每行都有8个变速箱传动比的值,以及
- 对每个传动比的有效值范围的限制非常简单。(但对于只有5档或6档的后期设计,必须考虑空值,这会引发规范化问题。)
- 更难——也许不可能——强制要求每辆车的8个传动比中的每一个都有一个值,以及
- 对每个传动比的有效值范围的约束更为复杂。(特别是当您以后适应只有5或6档位的设计时。)
DrivetrainId | 1st | 2nd | 3rd | etc.
DrivetrainId | Gears
1 | 1st
2 | 2nd
3 | 3rd
etc.
Attributes
AttributeId | AttributeCategory | AttributeDesc
Cars
CarId | AttributeId | AttributeValue