投影数据库的最佳方法

时间:2015-05-28 12:59:17

标签: database-design oracle11g

我有产品清单。现在有四种类型的产品。未来还有可能会有其他产品。每种产品类型都有共同的字段,但也有唯一的,只有这种类型。例如

PRODUCT_1
A varchar - common column
B varchar - common column
C int - unique for this type
D int - unique for this type

PRODUCT_2
A varchar - common column
B varchar - common column
E double -  unique for this type
F varchar - unique for this type

我想创建表格PRODUCT,其中包含所有产品类型的元数据。

PRODUCT
ProdId int - PK
ProdType - int
A varchar
B varchar

第二个名为PRODUCT_EXTENSION的表将定义其余的产品字段:

PRODUCT_EXTENSION
ProdExtId - PK
ProdId - FK
FieldName varchar
FieldValue varchar

这是创建这种结构的好方法吗?我有点害怕SELECTS语句的表现。甚至不确定如何创建SELECT将返回带有列的行:

SELECT A, B, C, F

也许我应该为每种类型的产品创建单独的表格?

TABLE PRODUCT_1
TABLE PRODUCT_2

请建议什么是更好的或者可能有另一种方法?

1 个答案:

答案 0 :(得分:0)

这取决于你在寻找什么:

  • 如果您要动态添加产品定义,那么您建议使用的第一个结构。缺点是您将失去使用索引和数据库优化的能力,因为您将表结构从数据库中抽象出来,例如,产品列成为DB的表行。
  • 如果您的产品定义明确且受限制,您可以拥有一个主PRODUCT表,其中包含具有特定产品列的每个产品的所有常用列和相关表。现在,缺点是您无法在不重写数据库架构的情况下添加新产品。