考虑Microsoft 2008
我需要创建一个表,它可以按照以下两种不同的方式创建。
Structure Columnwise
StudentId number, Name Varchar, Age number, Subject varchar
eg.(1,'Dharmesh',23,'Science')
(2,'David',21,'Maths')
Structure Rowwise
AttributeName varchar,AttributeValue varchar
eg.('StudentId','1'),('Name','Dharmesh'),('Age','23'),('Subject','Science')
('StudentId','2'),('Name','David'),('Age','21'),('Subject','Maths')在第一种情况下,记录将减少,但在第二种方法中,记录将增加4倍,但减少2列。
那么,在性能、磁盘存储和数据重试方面,哪种方法更好呢?
发布于 2012-02-17 09:52:24
第二种方法通常称为埃夫设计-实体-属性值。
IMHO,一路第一进场。这使您能够正确地键入列,从而能够最有效地存储数据,并且极大地有助于查询的方便和效率。
根据我的经验,EAV方法通常会造成世界的痛苦。关于这方面的前一个问题的这里有一个例子,与最佳实践的良好链接。如果你做了一个搜索,你会发现更多-很值得一筛。
人们选择EAV路径的一个常见原因是对灵活的模式进行建模,这在RDBMS中是比较困难的。其他方法包括在XML字段中存储数据。这是NOSQL (非关系数据库)由于其无模式特性(例如MongoDB)而非常有用的原因之一。
发布于 2012-02-17 09:48:26
第一种将具有更好的性能,磁盘存储和数据检索将更好。
使用第一种方法的理由有很多。
https://stackoverflow.com/questions/9325946
复制相似问题