mysql - 抽象的概念与 MySQL 中的表相关吗?如果是这样,我该怎么做?

标签 mysql oop abstraction

我想在 MySQL 数据库中存储各种发动机的数据,其中包括活塞发动机和转子发动机。


在 OO 语言中,我可以创建和扩展 Engine 父类(super class)以获得 PistonEngineRotaryEngine 子类。

PistonEngine 子类将包含诸如 CylinderNoPistonBorePistonStroke 等属性。

RotaryEngine 子类将包含 RotorThicknessRotorDiameter 等属性。


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

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

最佳答案

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

一个叫做 EngineTypes,它只有你的引擎类型的 id/value 对 1个旋转 2活塞

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

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

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

关于mysql - 抽象的概念与 MySQL 中的表相关吗?如果是这样,我该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478599/

相关文章:

Mysql COUNT 每个路由 id 的订阅者

mysql - SQL 查询 : Get the minimal element, 高于一个特定元素

PHP PDO fetchAll、PDO::FETCH_CLASS 和连接

Java:如何在吞下异常后调用先前的方法

java - 为什么 trimToSize/ensureCapacity 方法提供 'public' 级别的访问权限?

mysql - 查询实体的余额到期日和到期日

MySQL如何添加超过24的2次:00 hours

perl - 使用闭包修改 Perl BEGIN block 中的类

c# - 什么时候使用公共(public)字段才有意义?

java - 概念差异 : Fully Abstract Class v. 接口(interface)