我想将各种引擎上的数据存储在MySQL数据库中,该数据库包括活塞引擎和旋转引擎.
在OO语言中,我可以创建和扩展Engine超类以获得PistonEngine和RotaryEngine子类.
PistonEngine子类将包含诸如CylinderNo,PistonBore和PistonStroke之类的属性.
RotaryEngine子类将包含RotorThickness和RotorDiameter之类的属性.
在MySQL中,虽然我可以分别为活塞式发动机和旋转式发动机创建两个单独的表,但我还是希望保留EngineType字段作为发动机数据的一部分,并将这两种发动机类型共有的所有数据存储在一个表中.
如何设计数据库以尽可能避免数据冗余?
解决方法:
在这种情况下,我将创建四个表.
一种称为EngineTypes,其中只有您的引擎类型的ID /值对
1个旋转
2活塞
一种称为“引擎”,其中包含与活塞式发动机和旋转式发动机相关的信息.它将在其中包含引擎类型ID的列.
一个名为RotaryEngineDetails的表,其中包含您的所有旋转引擎特定数据.它将具有您的引擎表的外键.
一个名为PistonEngineDetails的表,其中包含您所有活塞发动机的特定数据.