首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效数据库表结构

高效数据库表结构
EN

Stack Overflow用户
提问于 2012-02-17 09:42:18
回答 2查看 114关注 0票数 0

考虑Microsoft 2008

我需要创建一个表,它可以按照以下两种不同的方式创建。

代码语言:javascript
复制
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列。

那么,在性能、磁盘存储和数据重试方面,哪种方法更好呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-17 09:52:24

第二种方法通常称为埃夫设计-实体-属性值。

IMHO,一路第一进场。这使您能够正确地键入列,从而能够最有效地存储数据,并且极大地有助于查询的方便和效率。

根据我的经验,EAV方法通常会造成世界的痛苦。关于这方面的前一个问题的这里有一个例子,与最佳实践的良好链接。如果你做了一个搜索,你会发现更多-很值得一筛。

人们选择EAV路径的一个常见原因是对灵活的模式进行建模,这在RDBMS中是比较困难的。其他方法包括在XML字段中存储数据。这是NOSQL (非关系数据库)由于其无模式特性(例如MongoDB)而非常有用的原因之一。

票数 4
EN

Stack Overflow用户

发布于 2012-02-17 09:48:26

第一种将具有更好的性能,磁盘存储和数据检索将更好。

  1. 将属性名称作为varchars将使更改名称、数据类型或应用任何类型的验证变得不可能。
  2. 索引所需的搜索操作是不可能的。
  3. 将整数保存为varchars将使用更多的空间。
  4. 排序、添加或求和整数将是一个令人头痛的问题,而且性能会很差。
  5. 使用此数据库的编程语言将不可能具有强类型数据。

使用第一种方法的理由有很多。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9325946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档