如何玩转数据库设计
在日常任务中,当我们碰到海量数据时,若何从中遴选出本人想要的数据呢?是盲目标查找,照样追求新的处理方案亦或是经过技巧来获取?开拓者在设计一个数据表单时,往往会遵照三条常用方式,他们以为惯例形式是设计的独一路子。但是因为开拓者一开端就抱有这种心态,使数据表单设计变得故步自封,障碍了它的立异。
作者Shivprasad 从平常的任务项目中积聚了一些经历,向我们引见了11款制造数据表单技巧,当设计到数据表单制造时,无妨以此来参考,以丰厚我们的使用经历。
Rule 1:弄清(OLTP或OLAP)使用的实质是什么?
当开端制造数据表单设计时,起首,要剖析你设计的这个顺序的实质是什么?是事务性照样剖析性的?你会发现很多开拓者会默许使用惯例化规矩,随后才思索功能问题而不思索使用的实质。
关于事务性和剖析性,一同来看下两者区别。
Transactional:这种使用,用户对CRUD较为感兴致,即创立、读取、更新和删除记载。这种数据,官方称号之位OLTP。
Analytical:用户对剖析、申报、猜测等方面感兴致。这类数据库很少有嵌入和更新。首要目标是为了尽快获取和剖析数据。官方称号之为OLAP。
换句话说,假如你想以嵌入、更新、删除为重点,可选择惯例化的表单设计或许创立一个简略的十分规化的数据架构。
下面是一个简略的图表,左侧显示称号和地址,采用非标准化构造设计出的一款简略的惯例表单。
Rule 2:将数据依照逻辑思想分红分歧的块,让生涯更简略
这个规矩其实就是 “三范式” 中的第一范式。如许设计的目的,是为了当你需求查询套多的字符串解析功用时,如子串,charindexetc,它能为你供应这项功用。
例如,留意观看下面的图表,假如你想查询某个学生的姓名,经过“Koirala”和“Harisingh”来进行区分。
因而,更好的办法就是打破数据逻辑思想,以便我们编写愈加简练、轻易查询的表单。
Rule 3:当数据太多时,rule 2不成用
开拓者们的思想有时很单一,假如你通知他们某种方法,他们会不断这么做下去,要晓得过度的运用会形成不用要的费事。正如我们之前谈到的rule 2,起首要进行分化,明白本人的需求。例如,当你看到德律风号码字段时,你可以在ISD代码长进行操作区分这些德律风号码(直到知足你的需求)。虽然这是不错的办法,但会给你带来更多的并发症。
Rule 4:将反复、不一致的数据视作你最大的仇敌
聚集和重构复制数据。我比拟担忧的不是复制数据所需求的磁盘空间而是它因而而形成的紊乱。
从下面的图表中,“5th Standard”和“Fifth standard”意思是一样的,你可以说是由于数据或许验证数据录入到你的系统缘由,假如你想经过报表来显示他们的分歧之处,从用户的角度开看,这长短常坚苦的。
个中一个处理办法就是将分歧的义务栏把一样的数据经过新建一个键入值联接在一同。如图。我们经过创立一个新的条目“Standards”即可将数据从新排,显示一样的局部。
Rule 5:留意被分隔符切割的数据
前面的规矩2即“第一范式”提到防止数组反复,如图所示。假如你看到教育纲要严密陈列在一同,这个范畴中需求良多数据来填充,这种我们称之为“反复数组”。假如我们必需把持这些数据,单凭查询是很坚苦的,我甚至还疑心能否具有这个查询功用。
这些带分隔符的数据需求特殊留意,若何应用更好的办法将这些数据挪动到一个分歧的义务栏中,以便更好的分类呢?如图:
如图所示,可以看到我创立了一个自力的教育科目条目,然后列出了与之有相联系关系的科目。这种办法首要合用于在教育纲要范畴,防止过多的反复和数据分隔符中。
Rule 6:留神数据依靠
察看该范畴中的局部列表。如图,我们创立了roll number和standard,可以看到教育科目严密联络在一同,但与学生进修的科目没有直接联系关系。假如我们想给每位学生更新教育科目,这似乎看起来是不契合逻辑的,然则经过键入standard条目转换这些数据就可到达目标。
这个规矩通知我们“一切的键入都应该依靠主键”。All keys should depend on the full primary key and not partially。
Rule 7:选择派生列
假如你想进行OLTP使用起首得挑选出派生列,在OLAP中我们需求做一些乞降,方可取得uixie很好的功能。如图,求的均匀数需求应用marks和subject两列。
这个规矩被称为第三范式,“不该该有依靠于非主键的列”(No columns should depend on other non-primary key columns)我小我以为是不克不及盲目运用此规矩。假如该数据是核算过的数据,看清情况然后在决议施行第三范式。
Rule 8:假如功能很要害,不要避开冗余数据
假如你急迫的思索到功能标准化问题,凡间状况下需求衔接很多列表以及削减添加非标准化的列表以便来进步数据图表功能。
Rule 9:数据多、冗杂
OLAP项目首要是为了处置数据繁复,例如,如图所示,假设你想取得每个国度、每个用户、每年的发卖额度。关于这种状况,你可以创立一个实践发卖列表条目(sales fact table)。
Rule 10:设计name value table列表
明值表意味着它有一些键,这些键被其他数据联系关系着。如图所示,我们需求弄清晰currency table (钱币列)和country table(国度列),图中键入值(数字局部)显示的就是我们所需求的数据。
经过创立键入值(Type)来显示出分歧区域的数据。
Rule 11:无限制构造数据,自界说PK和FK
我们会常常碰着一些无限父子分级构造的数据。例如:思索到一个多条理的营销方案,个中一个发卖人员可以指导多个发卖人员。在这种状况下,你可以运用自界说的主键和设置外键来协助你完成一致。
您可以依据本身的项目需求选择分歧的数据处置办法。如下所示:三种惯例范式。
- 1如何玩转数据库设计
- 2网站建设之后,维护才是重中之重
- 3玩具租赁如何走出困境
- 4万网云服务器,优惠啦!!!
- 5PHP Google的translate API代码
- 6最新动态-久途迁新址
- 7网贷平台主要运营模式主要有两类---传统P2P模式
- 8PHP/MYSQL 查询大数据/遍历表
- 9企业网站的优化现状
- 10Windows Azure 网站上运行 CakePHP
- 11租赁网站功能介绍
- 12企业做网站有没有用?
- 13PHP 5中垃圾回收算法的演化
- 14有关,PHP.ini 性能优化
- 15企业四网合一网站升级版1
- 16网站建设之搜索功能强化升级标准
- 17JavaScript cookie详解
- 18企业如何定位自己的企业网站目标
- 19企业网站与其他网站有什么区别和差异呢!
- 20网站建设和营销带来的经济效益
- 21泛普软件-U2ME网站设计方案计划表
- 22评估企业站做的好坏的方法
- 23企业建站要写简洁的代码
- 24玩具租赁商城系统需求3
- 25ecshop的数据字典
- 26如何让您的网站盈利中发挥到极致
- 27如何使自己的企业网站和同行业的网站不类似冲突
- 28如何用PHP模拟QQ登录
- 29关于编码最佳应用实践
- 30世界看到你-----微信公众平台
成都公司:成都市成华区建设南路160号1层9号
重庆公司:重庆市江北区红旗河沟华创商务大厦18楼