实验7 域继承文件分区表索引的使用Word格式.docx
《实验7 域继承文件分区表索引的使用Word格式.docx》由会员分享,可在线阅读,更多相关《实验7 域继承文件分区表索引的使用Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
2.能够使用PowerDesigner在CDM中定义和使用继承。
3.能够合理的进行数据库物理设计并确定数据库的存储结构。
4.能够创建和使用区分表。
实验内容:
1、定义并使用域
1.打开概念数据模型SIM
选择File→Open命令,打开实验2中创建的概念数据模型SIM。
2.打开ListofDomains窗口
选择Model→Domains命令,出现ListofDomains窗口,如图所示,如果已经定义了域,则会显示出来。
3.创建一个域
单击AddaRow按钮,第一个空行处开始出现一个箭头,Name和Code中都被赋予了默认值。
设置Name为Sex,Code与Name相同即可,单击Apply按钮,确认新创建的域,如图:
4.打开域的属性设置窗口
选择sex域,单击工具栏上的Properties按钮,打开域的属性窗口,如图所示:
5.指定域的数据类型和长度
单击DataType下拉列表框后面的三个点按钮,将显示StandardDataTypes对话框,在该对话框中指定应用到sex域的数据类型为characters,长度为2,然后单击ok按钮,如图所示:
6.设置业务规则
选择Rules选项卡,再单击工具栏上的CreateanObject按钮,出现业务规则属性设置窗口,在General选项卡中设置Name为sex_r。
Code与name一致即可。
在Expression选项卡中设置规则表达式,单击确定按钮,如图所示:
7.在模型对象浏览区查看域
在模型对象浏览区展开Domains选项,可以查看新建的sex域。
8.实体属性关联到域
在CDM中,双击实体student,出现实体属性设置框口,选择Attributes选项卡,单击Ssex所在行的Domain列,从下拉列表中选择sex域,单击“应用”按钮,这是,Ssex所在的行的DataType和Length将显示sex域的相应特性值,并且变为灰色,如图所示:
参照前面的操作,把实体teacher的Tsex关联到sex域上。
把实体student的Ssex域。
Teacher的Tsex域关联到sex域上后,约束Ssex_r和Tsex_r就可以删除了。
保存修改后的CDM,然后转换为PDM。
二、定义继承(概括)
学生是一个实体型,本科生、研究生也是实体型。
本科生、研究生均是学生的子集,学生为超类,本科生、研究生为学生的子类。
本科生、研究生继承了学生类型的属性,并可以增加自己的特殊属性。
学生实体型的属性有学号、姓名、性别、出生日期、院系和专业,学号为主键。
本科生实体型的特殊属性有班级;
研究生实体型的特殊属性有研究方向,导师。
1.创建实体型
参照实验2,新建一个CDM,命名为student;
创建三个实体型,分别命名为student、u_student和postgradute,依次代表学生,本科生和研究生实体型,如图所示:
创建student实体
创建u_student实体
创建postgradute实体型
2.创建继承
单击设计元素面板上的Inheritance工具,将光标至于实体postgradute,然后把光标拖动到student上,在两个实体之间出现一个继承联系。
继承联系在中间有一个半圆和一个指向实体student的箭头,表示student为父实体,postgradute为子实体。
如图所示:
Student与postgradute之间的继承联系
将光标置于u_student实体,然后拖到上图的半圆上,如图:
Student与u_student之间的继承联系
3.设置继承的属性
单击设计元素面板上的Pointer工具,双击半圆,出现继承的属性设置窗口。
(1)在General选项卡中,设置Name为different_student,Code与Name一致即可。
确认Parent为student。
(2)选择Children选项卡,确认ChildEntity为postgradute和u_student。
(3)选择Generation选项卡,设置生成模式。
生成模式定义了继承的物理实现,即描述了继承联系中的哪些实体到PDM中应该生成相应的表。
下面分别设置为三种不同的方式,并转换为PDM,观察PDM中表结构。
生成模式1:
选择Generateparent复选框,同时选择Generatechildren复选框,并进一步选择Inheritonlyprimaryattributes单选按钮,如图所示:
生成模式1
单击确定“按钮”。
打开Tools菜单,选择GeneratePhysicalDataModel命令,创建PDM,设置DBMS为MicrosoftSQLServer2008,设置Name为student_pdm1,单击“确定”按钮。
下图显示了PDM,观察三个表的结构。
由生成模式1生成的PDM
生成模式2:
不选择Generateparent复选框,只选择Generatechildren复选框,并进一步选择Inheritallattributes单选按钮,如图所示:
生成模式2
单击“确定”按钮。
打开Tools菜单,创建PDM,将Name名设为student_pdm2,观察两个表结构,并与生成模式1进行对比。
由生成模式2生成的PDM
生成模式3:
选择Generateparent复选框,不选择Generatechildren复选框,在Specifyingattributes下面的属性列表中添加一个属性,Name为tag,Code与Name一致即可,类型为integer。
这种情况下,只生成一个表,而tag的作用是区分每个子实体的实例。
Specifyingattributes只有在选择Generateparent复选框后,才能进一步设置。
创建PDM,观察表结构,与生成模式1和2对比。
生成模式3
由生成模式3生成的PDM
3、数据库的文件与文件组
1.了解数据库文件和文件组
文件主要有三种类型:
主要文件/主文件,次要文件/辅助文件,事务日志。
文件组:
每个数据库必须而且只能有一个主要文件组,此文件组包含主要数据文件和未放入其他文件组的所有次要文件。
可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理,数据分配和放置。
2.创建包含多个文件,文件组的数据库
创建数据库,数据库名称为mydb,主文件逻辑名称采用默认值,即mydb,主文件物理名称和位置也采用默认值。
分别在两个磁盘驱动器上创建文件Data1.ndf和Date2.ndf,然后将特们分配给文件组FG_1。
接下来,可以明确的在FG_1上创建一个表,那么对表中数据的查询将分散到两个磁盘上,从而提高性能。
具体实现过程如下:
进入“新建数据库”窗口,设置数据库名称为mydb,主文件和日志文件相关属性默认即可。
设置数据库名称以及主文件,日志文件相关属性
接下来单击一个添加按钮,增加一个数据文件,逻辑名称为Data1,路径为D:
\Data,默认物理文件名为Data1.ndf。
该文件所属文件组为默认的PRIMARY,单击PRIMARY,则出现下拉列表框,在下拉列表框中选择“<
新建文件组>
”选项,则出想新建文件组对话框,如图所示,设置新文件组名称为“FG_1”,单击“确定”按钮。
设置新文件组的名称
按照同样的方法再添加一个Data2数据文件,设置完毕后如图:
次要文件设置
单击工具栏中“脚本”按钮旁边的下三角按钮,从中选择“将操作脚本保存到‘新建查询’窗口选项”,则对应的SQL语句和命令将出现在ManagementStudio的查询编辑器中。
单击确定,完成数据库的创建。
3.在文件组FG_1上创建表
新建一个表,选择“视图”→“属性”命令,在打开的“属性”窗口设置“Text/Image文件组”和“文件组或分区方案名称”均为FG_1,然后制定表的属性及类型并保存即可。
如图:
4、区分表
1.添加多个新的文件和文件组
给mydb数据库添加两个文件组:
FG_I_M和FG_N_Z。
创建数据文件FIle_I_M到文件组FG_I_M中,创建数据文件FIle_I_Z到文件组FG_N_Z中,SQL语句和命令如下所示,在ManagementStudio中新建查询,并执行这段代码。
USEMaster
ALTERDATABASEmydbADDFILEGROUPFG_I_M
GO
ALTERDATABASEmydb
ADDFILE
(
NAME=N’FILE_I_M’,FILENAME=‘D:
D:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\File_I_M.ndf’
)
TOFILEGROUPFG_I_M
ALTERDATABASEmydbADDFILEGROUPFG_N_Z
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\File_N_Z.ndf’
TOFILEGROUPFG_N_Z
2.创建分区函数
下面的分区函数可以获得三个分区:
‘A’~‘H’,‘I’~‘M’,‘N’~‘Z’。
CREATEPARTITIONFUNCTIONStaffNameRangePen(varchar(100))
AS
RANGELEEFFORVALIES(‘H’,’M’)
3.创建分区Scheme
USEmydb
CREATEPARTITIONFUNCTIONStaffNamePScheme
PARTITIONStaffNameRangePen
TO([primary],FG_I_M,FG_N_Z)
4.创建分区表
IFOBJECT_ID(N’Staff’)ISNOTNULL
DROPTABLEdbo.Satff;
CREATETABLE[dbo].[Staff]
[StaffName][varchar](100)NOTNULL
ONStaffNamePScheme([StaffName])
CREATECLUSTEREDINDEXIX_StaffNameON[Staff]([StaffName])
5.插入一些测试数据
INSERTINTO[dbo].[Staff]
SELECTFirestNameFROMmydb.Person.Contact
6.查看数据分布情况
运行下面的代码,看看数据的分布情况,三个分区的数据量都差不多。
5、索引的使用和使用原则
1.认识索引
数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;
聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
根据数据库的功能,可以在数据库设计器中创建三种索引:
唯一索