【发布时间】:2013-02-22 00:59:08
【问题描述】:
我在 Oracle 数据库中有一个包含 60 列的表。以下是表结构。
ID NAME TIMESTAMP PROERTY1 ...... PROPERTY60
这个表会有很多行。表的大小将以 GB 为单位。但是表结构的问题是,将来如果我必须添加一个新属性,我必须更改架构。为避免这种情况,我想将表结构更改为以下。
ID NAME TIMESTAMP PROPERTYNAME PROPERTYVALUE
将是一个示例行。
1 xyz 40560 PROPERTY1 34500
通过这种方式我将能够解决问题,但表格的大小会变大。在获取数据方面是否会对性能产生任何影响。我是甲骨文的新手。我需要你的建议。
【问题讨论】:
-
为什么必须更改架构才能将新的属性列添加到表中?
-
假设我将来要支持“PROPERTY61”,在这种情况下,如果我采用第一种方法,我必须更改架构。
-
这接近于名为 EAV Entity, Attribute, Value 的方案。由于各种原因,这通常是一个坏主意。这不会阻止人们使用它,但它变得非常难以查询,甚至更难以确保数据是自洽的。
-
ALTER TABLE ADD COLUMN ...变化不大,对吧?如果程序员不使用SELECT *你以后应该没有问题。 -
当我说“重大更改”时,我指的是应用程序代码更改和升级工作。
标签: oracle database-design data-modeling