3

我想将各种引擎的数据存储在 MySQL 数据库中,其中包括活塞和旋转引擎。


在 OO 语言中,我可以创建和扩展Engine超类以获取PistonEngineRotaryEngine类。

子类将PistonEngine包含CylinderNoPistonBorePistonStroke等属性。

子类将RotaryEngine包含RotorThicknessRotorDiameter等属性。


在 MySQL 中,虽然我可以分别为活塞式发动机和旋转式发动机创建两个单独的表,但我更愿意将EngineType字段作为发动机数据的一部分,并将两种发动机类型共有的所有数据存储在一个表中。

如何设计我的数据库以尽可能避免数据冗余?

4

2 回答 2

2

在这种情况下,我会创建四个表。

一种称为 EngineTypes 的,它只包含您的发动机类型 1 Rotary 2 Piston 的 id/value 对

一种称为发动机,其中包含与活塞和旋转发动机相关的信息。它将有一个包含引擎类型 ID 的列。

一张名为 RotaryEngineDetails 的表,其中包含所有转子发动机特定数据。它将有一个指向您的引擎表的外键。

一张名为 PistonEngineDetails 的表,其中包含所有活塞发动机特定数据。

于 2009-09-25T17:48:54.360 回答
1

我的建议是创建一个表,其中包含两种引擎类型所需的所有信息,包括引擎类型本身的键。之后,您可以为每种类型的引擎“类”创建一个视图,以便它看起来是它自己的对象。虽然,根据您存储的所有数据,它可能不会生成,因为您的结构不会被规范化。

更新 根据评论,我扩展了我的答案。

根据定义,视图是由 SELECT 查询的结果集组成的虚拟或逻辑表。因为视图就像由行和列组成的表,所以您可以像使用表一样检索和更新其上的数据。视图是动态的,因此它与物理模式无关,仅作为视图定义存储。当作为视图源数据的表发生变化时;视图中的数据也会发生变化。(http://www.mysqltutorial.org/introduction-sql-views.aspx

这是创建视图的参考链接。这里还有一个链接

于 2009-09-25T17:32:56.450 回答