变量属性列表的设计数据模型(表设计)

时间:2014-07-08 00:23:44

标签: database oracle data-modeling erd

我有为以下问题创建数据库ERD的要求:

该公司现在销售具有以下属性的汽车:

CarId | Car brand | height | weight | passenger count

同时公司交易具有以下属性的计算机:

HardwareID | Ramsize | LCD | ScreensCount | 

我们现在需要创建一个新的数据库,一个通用数据库,以保存这些项目和公司将来交易的任何新项目。考虑以下因素:

  1. 我们不需要为每个业务创建两个表或
  2. 我们不需要创建一个表并将所有属性组合在一个表中。因为如果我们这样做,当我们保存计算机时,某些字段将为null,所有汽车字段将为空。
  3. 基本上,属性列表会因业务而异。
  4. 我只需要一些关于如何创建这样的东西的想法。

1 个答案:

答案 0 :(得分:0)

听起来汽车和电脑都是更通用的术语"产品"的子类型。听起来公司将来会添加更多产品类型,而这些产品类型将具有尚未知的属性。

EAV将允许您扩展属性列表而不更改数据定义,但它通常是反模式,正如其他人所建议的那样。问题是,无规则的属性添加可能会导致属性中的同义词,即具有两个或多个名称的一个属性。它甚至可以导致属性中的同音异义词,即具有相同名称的两个或多个属性。一旦发生这种情况,使用数据将与使用非托管数据一样困难。

两个更好的设计模式可能如下:类表继承(click)或单表继承(click)。