如何对这个模式进行分类?

时间:2018-09-28 09:05:22

标签: database database-design relational-database entity-attribute-value

我有这样的模式: enter image description here

该方案的本质是组织某些公司所有产品的入口点,从而提供了一定的灵活性。

工作原理:

  1. 我们在表“表”中创建表列表(其中name是数据库中表的名称,pk_name是该表的主键的名称)
  2. 我们在“产品”中创建产品列表(其中table_id是“表”中的表标识符,pk_value是主键的值)
  3. 此外,我们创建诸如“ some_product”,“ another_product”之类的表。它们包含特定产品的不同字段

问题是:

  1. 如何调用此类方案?例如,EAV还专门用于 数据库的灵活性,但在EAV列中作为记录存储在 数据库。
  2. 因此,我不明白是否建议将此方案与EAV进行比较?
  3. 那里有这种模式的相似之处,以了解最好使用什么?
  4. 此架构的缺点是什么?

我是DB的新手,所以希望我的问题不会很愚蠢。

谢谢!

1 个答案:

答案 0 :(得分:1)

在该示例中,您显示了some_productanother_product表具有相同的属性和类型。在这种情况下最好有一个产品表。如果在不同的表中将不同的属性应用于不同类型的产品,那么这就是分型的示例。

所有产品共有的

属性将放在公共products表( supertype 表)中。我希望在该表中看到产品类型属性,以区分各种产品。

tables表是不必要的。所有DBMS都提供对表和主键的元数据的访问权限,因此没有理由将其捕获到您自己的表中。