仓酷云

标题: MSSQL教程之PowerDesigner计划数据库 [打印本页]

作者: 再现理想    时间: 2015-1-16 22:39
标题: MSSQL教程之PowerDesigner计划数据库
这里我们讨论用binlog来实现闪回的方案。计划|数据|数据库






PowerDesigner计划数据库















李伟华





2000年9月











申明:此文档为自己履历堆集之所得,非部门计划文档(版权一切)











本文档不报告怎样利用PowerDesigner,而是报告怎样将PowerDesigner的特性分离数据库计划的办法更好的计划一个数据库体系。
接纳PowerDesigner计划数据库
PowerDesigner作为数据库建模和计划的CASE工具之一,在数据库体系开辟中发扬侧重要感化。

使用PowerDesigner举行数据库计划,不仅给人直不雅地舆解模子,并且充实使用数据库的手艺,优化数据库的计划。PowerDesigner撑持Sybase、Oracle、Informix、SQLServer等多种数据库体系,在使用体系做数据库迁徙时不用保护多个数据库剧本。

关于接纳布局化剖析(SA),E-R图、数据流图直至最初的数据库物理图都是体系计划时不成短少的一个部分,当数据库物理图完成后,应当发生体系的数据字典。使用PowerDesigner完整可以完成这一计划流程。

关于接纳面向工具的剖析(OOA),因为数据库接纳的是RDBMS,因而存在工具和干系数据库之间的映照,也必要举行数据库计划。
两种数据库模子
PowerDesigner能够计划两种数据库模子图:数据库逻辑图(即E-R图或观点模子)和数据库物理图(物理模子),而且这两种数据库图是互逆的。

数据库逻辑图是对实际天下的一种笼统,表现实体之间的干系,能够有1对1、1对多、多对多等干系。出格说一点,在扩大E-R图中有归纳综合这类干系,表现范例之间的一种子集接洽,它界说了超类和子类。在PowerDesigner计划的E-R图中,不具有这类干系,但在E-RWin计划的模子中撑持这类干系,因而在用E-RWin图计划的模子转化为PowerDesigner的模子时注重这类干系。

数据库物理图中是逻辑模子的物理完成,表现了表间的参照干系。在物理模子中不成能存在多对多的干系。在逻辑图向物理图转换时,多对多的干系酿成两个1对多的干系。

逻辑模子和物理模子有着严密的接洽,也有实质的区分。逻辑模子的计划遵守数据库计划实际的第三范式(在一样平常的数据库使用到达第三范式便可),逻辑模子请求具有使用体系所表达的一切信息并打消数据冗余。物理模子是在逻辑模子的基本上,为了优化使用体系的功能而接纳增添冗余,创立索引等数据库手艺,它次要用非标准化的一些实际。

在思索计划的任何非标准化之前,数据库应先完整标准化,在没有完整了解数据和用户需求之前,不克不及举行非标准化。不然招致数据的构造愈来愈凌乱,使用程序愈来愈庞大。

因而逻辑模子和物理模子是互相冲突又严密接洽的,这点必要计划职员好好掌控。
PowerDesigner计划数据库物理图
用PowerDesigner计划数据库物理图,包含多个工具,如表(Table)、字段(Column)、域(Domain)等。计划时次要在PowerDesigner的Dictionary和Database两个菜单中。
表(Table)
表是数据存储的一个逻辑工具,包含别的工具如字段(Column)、索引(Index)、触发器(Trigger)、存储历程(Procedure)等,表的优化计划有支解等手艺,关于表的存储,假如会见数据量年夜,会见频次高则可思索将表放在分歧的存储(Storage)上。

在计划表时,应当预算表的巨细和增加量,便于创立数据库时分派数据库空键,如许削减了磁盘碎片的发生。

在干系数据库中计划主键时,接纳成心义的主键是致命的毛病。假如用户决意改动字段的贸易寄义,则必要在一切利用到该信息的中央举行修正。主键的感化应是坚持独一性和作为外键利用。任何对主键的修正会招致伟大的数据库保护事情量,明显这是分歧合适的计划。就干系数据库而言,计划主键战略接纳的是代办署理主键的办法。

计划主键时应当制止“热门”征象,但也必要剖析详细的使用体系的并发用户而定。
字段(Column)
界说一个字段次要有字段名、字段范例及长度、是不是主外键、是不是空、束缚、默许值、域等。

变长和定长的数据范例在数据库计划中会商对照多,作为一样平常准绳,假如预期某列中的数据局限变更很年夜,但变更其实不频仍,那么对如许的列利用变长数据范例最为合适。

决意行长时,既不克不及太华侈,又不克不及太怜惜。思索到未来的必要,而且意想到,假如增添行长而没有改动一页中包容的行数,那么增添的空间就即是无偿使用。

计划时,字段只管利用域,便利保护字段的范例。每一个字段最好将默许值加上,由于在数据库查询中,有NULL值会影响查询的功能。

经由过程CHECK束缚可限定字段的取值。
域(Domain)
复杂地说,是用户自界说范例,但域还能够界说它的取值局限或默许值,接纳域削减了保护字段范例的事情量,也削减数据的纷歧致性。
参照(Reference)
参照在数据库计划中是一个对照庞大的成绩,它是完成数据的完全性次要要素之一,具体叙述参考前面数据的束缚。

在PowerDesigner中,可对参照完全性举行各项设置,参照的基数从0到n,对修正和删除束缚可分离设置为None、Restrict、Cascade、SetNull、SetDefault。因为INSERT包括在UPDATE操纵中,因而没有独自的INSERT束缚。

束缚的分歧设置发生分歧的效果,以修正为例(删除不异):

None:父表修正,子表不影响。

Restrict:父表修正,假如子表存在,则堕落。

Cascade:父表修正,假如子表存在,则响应的修正。

SetNull:父表修正,假如子表存在,则响应置空。

SetDefault:父表修正,假如子表存在,则响应置默许值。
索引(Index)
索引是优化查询时接纳一种数据库手艺,索引有簇索引、非簇索引、独一索引等。

计划索引时,要注重索引宽度,只管削减索引的宽度。索引的宽度不是由字段的几决意的,而是由字段的长度来决意。关于窄索引关头字,在每索引页上安排更多的关头字和指针,如许就可以花消更少的I/O找到数据。

关于复合索引,选择首列相称主要,不然大概不克不及使用该索引,当使用复合索引查询时。必需确保查询从首列入手下手。

索引另有一个添补因子(FillFactor),添补因子的巨细视表的数据增加量和主键界说的情形而定。
触发器和存储历程(Trigger&&Procedure)
触发器在保护数据完全性起侧重要感化,它比参照更具天真性,

也能完成三层布局中数据层的营业划定规矩。

存储历程是接纳SQL及流程把持语句编写的完成某种营业的剧本。存储历程在数据处置上具有处置速率快、处置天真等长处。

可是,存储历程极年夜地增添了与数据库之间的耦合,在数据库迁徙时,必要重写存储历程,从而增添了版本保护的事情量。假如数据库请求从迁徙性思索,应只管制止利用存储历程大概触发器。

假如不工资修正PowerDesigner的触发器,其迁徙性PowerDesigner主动办理。
存储(Storage)
分歧的数据库中有分歧的观点,Sybase称为设备(Device),SQLServer称为文件或文件组(File、FileGroup),而Oracle称为表空间(TableSpace)。

依据体系创立一个或多个存储,按必定的优化划定规矩寄存。
数据库的分别
数据库的分别以它的物理散布为准绳,而不该数据量、表范例等准绳来分别,数据库的几对数据库的功能影响不年夜。关于会见数据量年夜、会见频仍的表来讲,I/O操纵很简单构成严峻的瓶颈,因而削减I/O操纵和I/O操纵堵塞是数据库计划思索的次要成绩,办理办法将将表放在多个设备上,设备需创立在分歧的物理驱动器上,最好能用智能型或阵列。

日记和数据分隔存储在分歧设备上,假如索引多且占用空间年夜,也能够接纳云云体例。

数据库数目少的保护本钱比数目年夜少。

因而数据库分别以物理散布为准绳。

在PowerDesigner供应盘算数据库或表的办法(ComputeDatabaseSize),可匡助计划者完成数据库的分别。
数据库的完全性
数据库完全性可经由过程存储历程、声明性参照完全性(DRI)、

数据范例、束缚、划定规矩、默许值,和触发器来完成。在数据库内,这些功效各以独有的体例发扬感化。综合使用这些完全性功效,可使数据库天真,易于办理,并且很平安。

数据完全性观点分为几个方面。

◆表域完全性

经由过程主键来强迫表的域完全性。

◆援用完全性

使用参照来增强表之间的逻辑干系。

◆数值域完全性

任何输出的数据在范例和局限上必需与指定的数据范例相婚配,只要当某列被申明同意NULL值,才同意向该列输出NULL。
数据库的功能测试
天生数据库以后,应举行数据库功能测试,以便优化数据库的计划,因而必要天生测试数据,因为是功能测试,数据的标准性请求不高。经由过程PowerDesigner可便利地天生测试数据(GenerateTestData),完成功能测试。
数据的束缚O-O束缚
对父表的INSERT、UPDATE、DELETE操纵没无限制。
M-O束缚
对父表操纵的束缚:

父表的INSERT操纵,对M-O束缚,父表两头的纪录能够没有任何束缚地增加到表中,由于这类束缚中纷歧定必需有后代。

父表的键值修正操纵,只要在子表中其一切的后代对应均做修正后,才干修正,即一样平常接纳级联更新的办法。

父表的删除,父亲只要在其一切后代均被删除或从头分派以后该父亲才干被删除。

强迫对可选(M-O)束缚
O-M束缚
父表操纵的束缚:

父表的INSERT操纵,对O-M束缚,一个父亲只要当最少当它的一个、后代同时被到场或最少存在一个正当的后代时,才干被到场。

父表的键值修正操纵,只要当一个后代被创立或已有一位后代存在才行。

父表的删除,实际上删除父亲是没无限制的,实践上,删除主表纪录时,不接纳级联删除子表的计划,而接纳将子表的外键置空。

可选对强迫(O-M)束缚


M-M束缚
父表操纵的束缚:

父表的INSERT操纵,大概随后必要天生后代,即在子表中创立新的行。也大概经由过程对子表的从头分派来实行完全行限定。

父表的键值修正操纵,只要在子表对应的外键的值修正成新值时才干举行。实践多是先创立新的父表记录,接着修正子表一切对应的记录,使其与父表的新记录联系关系,最初删除原父表记录。

父表的删除,只要在子表中一切相干的行全体删除或从头分派以后,才干删除父表中的记录,一样平常对子表也举行删除操纵。

强迫对强迫(M-M)束缚



在四类束缚:M-M、M-O、O-M、O-O。键值的修正大概会改动表之间的干系,并且大概违背一些束缚。违背束缚的操纵是不同意的。详细的使用必需依据实践的请求和贸易划定规矩举行得当的选择。但在计划和开辟时,必需思索所剖析的束缚。
物理图的构造
数据库物理的构造以功效来构造为好,让人很简单就分明该功效必要操纵哪些表,数据是怎样流向的,可是按此构造,大概有些参照创建对照乱,实在有些参照能够不用创建,如在写进一个表时,其数据的来历就是从另外一个查询失掉的,能够包管数据的准确性,从功效分别来构造物理图,就能够不创建这个参照。
数据库的天生
有了数据库物理图,在天生数据库或数据库剧本时,应注重以下的成绩:

参照完全性的完成,能够接纳声明性参照完成或触发器完成,至于两种完成的优弱点,后面已叙述过,这里仅说一点,假如接纳触发器完成必要在天生数据库后再天生触发器。

当参照含有级联(Cascade)删除或修正时,实在现要分情形处置:

Sybase、SQLServer不撑持声明性级联(Cascade)删除或修正,只能经由过程触发器(Trigger)来完成。

Oracle、Informix撑持声明性级联(Cascade)删除,但不撑持

级联(Cascade)修正,也只能经由过程触发器(Trigger)来完成。

当界说了用户自界说范例时,在天生数据库时,最恶化换成数据库基础范例,对数据库功能和迁徙都有益。
数据字典
数据字典作为产物的一个回档文档,它界说使用体系数据库的各个方面。数据库物理模子建好后,就能够天生数据字典,数据字典的内容和情势能够在PowerDesigner界说模板,根据模板天生数据字典,再处置一下文档格局。

在PowerDesigner用CreateReport天生数据字典。
今朝体系必要处置和优化的中央
主键的界说:

因为对营业懂得的深度不敷,某些表的主键创建存在一些成绩,跟着营业的深切慢慢完美。

参照的创建:

主键的界说不完美招致了参照创建的不完美,这也只能今后组不完美。

数据库的分别:

数据库的分别后面已谈过,因为这个分别影响着服务器和客户真个程序,也只能今后的新版中办理。

表布局的调剂:

关于有些表,如体系设置表,能够将它的横向布局改成纵向布局,如许增添了体系的天真性。
这章描述如何检查和处理在MySQL数据库中的数据损坏。如果你的表损坏很多,你应该尝试找出其原因!见G.1调试一个MySQL服务器。
作者: 谁可相欹    时间: 2015-1-19 20:43
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
作者: 精灵巫婆    时间: 2015-1-27 19:30
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
作者: 若天明    时间: 2015-2-5 10:49
连做梦都在想页面结构是怎么样的,绝非虚言
作者: 仓酷云    时间: 2015-2-11 09:31
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
作者: 莫相离    时间: 2015-3-2 09:51
另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);
作者: 蒙在股里    时间: 2015-3-11 03:07
分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
作者: 小妖女    时间: 2015-3-17 19:15
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
作者: 乐观    时间: 2015-3-24 21:45
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2