




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章关系数据库定义,目录,数据模型关系数据模型的基本概念数据类型(SQLSERVER)模式定义数据库的定义表的定义,数据模型,3,1.数据模型,在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟数据模型应满足三方面要求能比较真实地模拟现实世界容易为人所理解便于在计算机上实现,数据模型的组成要素,数据结构数据操作数据的约束条件,(1)数据结构,什么是数据结构对象类型的集合两类对象与数据类型、内容、性质有关的对象与数据之间联系有关的对象数据结构是对系统静态特性的描述,(2)数据操作,数据操作数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则数据操作的类型检索更新(包括插入、删除、修改),数据操作(续),数据模型对操作的定义操作的确切含义操作符号操作规则(如优先级)实现操作的语言数据操作是对系统动态特性的描述。,(3)数据的约束条件,数据的约束条件一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和储存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。,2.关系模型的基本概念,关系(Relation)一个关系对应通常说的一张表。把数据库表示为关系的集合,每一个关系类似于一张二维表。表2-1是一个关系的实例,其关系名为Student,包含4个属性:StudentNo、StudentName、Age和Dept,分别表示学号、姓名、年龄和系别四个性质。表2-1:关系Student,关系模型的基本概念,属性就是关系中各列,一列即为一个属性,给每一个属性起一个名称即属性名。在表2-1中,关系的属性为StudentNo、StudentName、Age和Dept,属性描述了该列各数据项的含义,例如,属性为Age的列存放着学生的年龄。,关系模型的基本概念,元组(Tuple)在表2-1中,除了关系的标题栏以外,其它各行统称为“元组”。元组的各分量分别对应各个属性在该元组上的取值。表2-1中有三个元组,第一个元组有四个分量:9900011、李明、19和计算机系分别对应于四个属性:StudentNo、StudentName、Age和Dept。单独书写元组的方法:(9900011、李明、19,计算机系)关系是元组的集合,在给定的关系中,一个元组不可能出现一次以上。,关系模型的基本概念,属性(Attribute)表中的一列即为一个属性,给每一个属性起一个名称即属性名。关系的模式:关系名和关系的属性集称为关系的“模式”。对关系的描述:关系名(属性1,属性2,属性n)模式的表示:Student(StudentNo,StudentName,Age,Dept),关系模型的基本概念,分量元组中的一个属性值。域(Domain)每个属性有一个允许的值的集合,称为该属性的“域”。指定的域通常是一个特定的基本类型。关系的任何元组的每个分量都必须在对应列的域中取值。关系模型要求每个元组的每个分量都是原子的,即必须属于某种基本的类型,如integer,string等。不允许一个值为记录结构、集合、列表、数组或者能合理地分解为更小分量的其他任何类型。例如,在表2-1中,关系Student的元组的第一和第三个分量必须是整数,第二和第四个分量必须是字符串。,关系模型的基本概念,超码:一个或者多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一地标识一个实体。候选码:任意真子集都不能成为超码的最小超码主码(Key)数据库中,设计人员选定的,用于唯一确定一个元组的候选码。,关系模型的基本概念-主码,表2-2:关系Stu_course,一个表中可能存在多个候选码,相应的键称为候选键。在建立数据库的时候,从候选键中选取哪一个作为主键都可以,因此,主键是从候选键中选取出来做主键的属性。比如,对于关系Student,如果能够保证StudentName肯定不重复的话,那么StudentName列也可以作为关系Student的主键。,关系数据模型的数据结构(续),例1学生、系、系与学生之间的一对多联系:学生(学号,姓名,年龄,性别,系号,年级)系(系号,系名,办公地点)例2系、系主任、系与系主任间的一对一联系,关系数据模型的数据结构(续),例3学生、课程、学生与课程之间的多对多联系:学生(学号,姓名,年龄,性别,系号,年级)课程(课程号,课程名,学分)选修(学号,课程号,成绩),关系数据模型的数据结构(续),关系必须是规范化的,满足一定的规范条件最基本的规范条件:关系的每一个分量必须是一个不可分的数据项。,关系模型的完整性约束,实体完整性:参照完整性:用户定义的完整性:,实体完整性是指一个表中的每一行必须是唯一的即实体是可以唯一区分的。若属性A是基本关系R的主键,则属性A不能取空值,另外不能存在属性A上分量相同的元组。,用户定义的完整性规则是针对某一应用环境的完整性约束条件,他反映了某一具体应用所涉及的数据应满足的要求。在实际系统中,这类完整性规则一般在建立库表的同时进行定义。例如,学生的考试成绩的取值范围为0100,或取优、良、中、及格、不及格。,关系模型的完整性约束-参照完整性,学生表,专业表,这样一个表中某列的取值受限于另一个表的取值范围约束的特点就称为参照完整性。在关系数据库中用外键(foreignkey,有时也称为外部关键字或外码)来实现参照完整性。外键实际上是表中的一个(或多个)属性,它引用某个其他表(特殊情况下,也可以是外键所在的表)的主键,当然,也可以是候选键,但多数情况下是主键。,参照完整性举例,课程表,选修表,学生表,参照完整性规则,若属性(或属性组)F是基本关系R的外键(外码),它与基本关系S的主键(主码)Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。,例如:学生关系中每个元组的“专业号”属性只取下面两类值:(1)空值,表示尚未给该学生分配专业。(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中。选修(学号,课程号,成绩)“学号”和“课程号”是选修关系中的主属性按照实体完整性和参照完整性规则,它们只能取相应被参照关系中已经存在的主码值。,关系模型的数据操纵,查询、插入、删除、更新数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”,关系数据模型的存储结构,表以文件形式存储有的DBMS一个表对应一个操作系统文件有的DBMS自己设计文件结构,关系模型的优缺点,优点建立在严格的数学概念的基础上概念单一。数据结构简单、清晰,用户易懂易用实体和各类联系都用关系来表示。对数据的检索结果也是关系。关系模型的存取路径对用户透明具有更高的数据独立性,更好的安全保密性简化了程序员的工作和数据库开发建立的工作,关系模型的优缺点(续),缺点存取路径对用户透明导致查询效率往往不如非关系数据模型为提高性能,必须对用户的查询请求进行优化增加了开发数据库管理系统的难度,3.创建数据库模式,以SQLServer为例,介绍定义数据库模式的基本操作,数据类型,整数Bitdecimal和numericmoney和smallmoney近似数字datetime和smalldatetime字符串Unicode字符串二进制字符串其它数据类型,整数,bigint:从-263(-9223372036854775808)到263-1(9223372036854775807)的整型数据(所有数字)。int:从-231(-2,147,483,648)到231-1(2,147,483,647)的整型数据(所有数字)。smallint:从-215(-32,768)到215-1(32,767)的整数数据。tinyint:从0到255的整数数据。,Bit,bit:1或0的整数数据。,decimal和numeric,decimal:从-1038+1到10381的固定精度和小数位的数字数据。numeric:功能上等同于decimal。,money和smallmoney,money:货币数据值介于-263(-922,337,203,685,477.5808)与263-1(+922,337,203,685,477.5807)之间,精确到货币单位的千分之十。smallmoney:货币数据值介于-214,748.3648与+214,748.3647之间,精确到货币单位的千分之十。,近似数字,float:从-1.79E+308到1.79E+308的浮点精度数字。real:从-3.40E+38到3.40E+38的浮点精度数字。,datetime和smalldatetime,datetime从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒(或3.33毫秒)。smalldatetime从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。,字符串,char:固定长度的非Unicode字符数据,最大长度为8,000个字符。varchar:可变长度的非Unicode数据,最长为8,000个字符。text:可变长度的非Unicode数据,最大长度为231-1(2,147,483,647)个字符。,Unicode字符串,nchar:固定长度的Unicode数据,最大长度为4,000个字符。nvarchar:可变长度Unicode数据,其最大长度为4,000字符。sysname是系统提供用户定义的数据类型,在功能上等同于nvarchar(128),用于引用数据库对象名。ntext:可变长度Unicode数据,其最大长度为230-1(1,073,741,823)个字符。,二进制字符串,binary:固定长度的二进制数据,其最大长度为8,000个字节。varbinary:可变长度的二进制数据,其最大长度为8,000个字节。image:可变长度的二进制数据,其最大长度为231-1(2,147,483,647)个字节。,其它数据类型,cursor:游标的引用。sql_variant:一种存储SQLServer支持的各种数据类型(text、ntext、timestamp和sql_variant除外)值的数据类型。table:一种特殊的数据类型,存储供以后处理的结果集。timestamp:数据库范围的唯一数字,每次更新行时也进行更新。uniqueidentifier:全局唯一标识符(GUID)。,4.CREATEDATABASE,创建一个新数据库及存储该数据库的文件,或从先前创建的数据库的文件中附加数据库。,CREATEDATABASEdatabase_nameON,.n,.nLOGON,.nCOLLATEcollation_nameFORLOAD|FORATTACH:=PRIMARY(NAME=logical_file_name,FILENAME=os_file_name,SIZE=size,MAXSIZE=max_size|UNLIMITED,FILEGROWTH=growth_increment),.n:=FILEGROUPfilegroup_name,.n,database_name:新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。,ON:指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。,LOGON:指定显式定义用来存储数据库日志的磁盘文件(日志文件)。如果没有指定LOGON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的25%。,FORATTACH:指定从现有的一组操作系统文件中附加数据库。,数据库的存储文件,有三种类型的文件用来存储数据库:1.主文件包含数据库的启动信息。主文件还可以用来存储数据。每个数据库都包含一个主文件。2.次要文件保存所有主要数据文件中容纳不下的数据。如果主文件大到足以容纳数据库中的所有数据,就不需要有次要数据文件。而另一些数据库可能非常大,需要多个次要数据文件,也可能使用多个独立磁盘驱动器上的次要文件,以将数据分布在多个磁盘上。3.事务日志文件保存用来恢复数据库的日志信息。每个数据库必须至少有一个事务日志文件(尽管可以有多个)。事务日志文件最小为512KB。,每个数据库至少有两个文件,一个主文件和一个事务日志文件。,数据库文件类型,创建数据库示例,USEmasterGOCREATEDATABASEmytest,创建名为mytest的数据库,并创建相应的主文件和事务日志文件。因为该语句没有项,所以主数据库文件的大小为model数据库主文件的大小。事务日志文件的大小为model数据库事务日志文件的大小。因为没有指定MAXSIZE,文件可以增长到填满所有可用的磁盘空间为止。,创建数据库示例,USEmasterGOCREATEDATABASEProductsON(NAME=prods_dat,FILENAME=c:programfilesmicrosoftsqlservermssqldataprods.mdf,SIZE=4,MAXSIZE=10,FILEGROWTH=1),创建名为Products的数据库,并指定单个文件。指定的文件成为主文件,并会自动创建一个1MB的事务日志文件。因为主文件的SIZE参数中没有指定MB或KB,所以主文件将以兆字节为单位进行分配。因为没有为事务日志文件指定,所以事务日志文件没有MAXSIZE,可以增长到填满所有可用的磁盘空间为止。,创建数据库示例,USEmasterGOCREATEDATABASESalesON(NAME=Sales_dat,FILENAME=c:programfilesmicrosoftsqlservermssqldatasaledat.mdf,SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON(NAME=Sales_log,FILENAME=c:programfilesmicrosoftsqlservermssqldatasalelog.ldf,SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB),创建名为Sales的数据库。因为没有使用关键字PRIMARY,第一个文件(Sales_dat)成为主文件。因为Salesdat文件的SIZE参数没有指定MB或KB,因此默认为MB,以兆字节为单位进行分配。Saleslog文件以兆字节为单位进行分配,因为SIZE参数中显式声明了MB后缀。,创建数据库示例,USEmasterCREATEDATABASEArchiveONPRIMARY(NAME=Arch1,FILENAME=c:programfilesmicrosoftsqlservermssqldataarchdat1.mdf,SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Arch2,FILENAME=c:programfilesmicrosoftsqlservermssqldataarchdat2.ndf,SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Arch3,FILENAME=c:programfilesmicrosoftsqlservermssqldataarchdat3.ndf,SIZE=100MB,MAXSIZE=200,FILEGROWTH=20)LOGON(NAME=Archlog1,FILENAME=c:programfilesmicrosoftsqlservermssqldataarchlog1.ldf,SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Archlog2,FILENAME=c:programfilesmicrosoftsqlservermssqldataarchlog2.ldf,SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),使用三个100MB的数据文件和两个100MB的事务日志文件创建了名为Archive的数据库。主文件是列表中的第一个文件,并使用PRIMARY关键字显式指定。事务日志文件在LOGON关键字后指定。注意FILENAME选项中所用的文件扩展名:主要数据文件使用.mdf,次要数据文件使用.ndf,事务日志文件使用.ldf。,分离数据库,sp_detach_dbArchiveGO,附加数据库,CREATEDATABASEArchiveONPRIMARY(FILENAME=c:programfilesmicrosoftsqlservermssqldataarchdat1.mdf)FORATTACH,删除数据库,语法:DROPDATABASEdatabase_name,.n,删除数据库,DROPDATABASEpublishingDROPDATABASEpubs,newpubs,简单表的定义,SQL语言使用CREATETABLE语句定义基本表。其一般格式为:CREATETABLE(列完整性约束,列完整性约束,表级完整性约束),:是指对某一列设置的约束条件。该列上的数据必须满足。最常见的有:NOTNULL该列值不能为空NULL该列值可以为空UNIQUE该列值不能存在相同DEFAULT该列某值在未定义时的默认值CHECK用户自定义的约束:规定了关系主键、外键和用户自定义完整性约束。,简单表的定义,创建部门关系表,通过外键建立部门关系表和员工关系表的关联。CREATETABLEDept(Dnochar(6)notnullprimarykey,Dnamevarchar(12)notnull,Managerchar(6)notnull);,简单表的定义,创建员工关系表,通过外键建立部门关系表和员工关系表的关联。CREATETABLEEmployee(EnoCHAR(5)NOTNULLprimarykey,EnameVARCHAR(10)NOTNULL,SexCHAR(2)NOTNULL,MarryCHAR(2)DEFAULT未,DnoCHAR(4)NULL,FOREIGNKEY(Dno)REFERENCESDept(Dno);,简单表的定义,CREATETABLEEmployee(EnoCHAR(5)NOTNULLprimarykey,EnameVARCHAR(10)NOTNULL,SexCHAR(2)NOTNULL,MarryCHAR(2)DEFAULT未,DnoCHAR(4)REFERENCESDept(Dno),);,简单表的定义,CREATETABLEEmployee(EnoCHAR(5)NOTNULLprimarykey,EnameVARCHAR(10)NOTNULL,SexCHAR(2)NOTNULL,MarryCHAR(2)DEFAULT未,DnoCHAR(4)NULL,ConstraintfcnameDnoFOREIGNKEY(Dno)REFERENCESDept(Dno);,实例-学生数据库,学生数据库涉及到专业、课程、教师、学生、班级、开课计划、学生选课七个表。其中专业、课程、班级、教师是基本表班级参照了专业表开课计划参照了课程和教师表学生参照了班级表选课参照了学生和开课计划表在创建这样一个完整的数据库的表的时候被参照的表应该先建立,参照其他关系的应该后建立,否则就会产生错误。,createtable专业(专业编号char(10)notnullprimarykey,专业名称varchar(50),级别char(6),学制int);,createtable课程(课程编号char(10)notnullprimarykey,课程名称varchar(50),理论学时intcheck(理论学时=0),实验学时intcheck(实验学时=0),开课学期int,课程性质课程介绍char(200);,createtable班级(班级编号char(10)notnullprimarykey,班级名称varchar(50)unique,专业编号char(10)references专业(专业编号),入学年份intdefaultyear(getdate();,createtable教师(教师编号char(10)notnullprimarykey,教师姓名varchar(10),性别char(2)check(性别=女or性别=男),职称char(6),政治面貌varchar(10),简介char(200),生日datetime,所在教研室varchar(50);,createtable学生(学号char(10)notnullprimarykey,姓名varchar(10),性别char(2)check(性别=女or性别=男),生日datetime,班级char(10)references班级(班级编号),政治面貌varchar(10);,createtable开课计划(开课计划编号cha
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60155:1993/AMD2:2006 EN-D Amendment 2 - Glow-starters for fluorescent lamps
- 专业领域技术研发工作经验证明(6篇)
- 诗词歌赋与修辞技巧融合:初中英语词汇教学方法
- 化工工艺流程及安全知识考核
- 艺术欣赏考试试题及答案
- 沂源小学考试试题及答案
- 六一亲子签到活动方案
- 六一德克士活动方案
- 六一活动女装活动方案
- 六一活动小集市活动方案
- 2024北京海淀区六年级(下)期末数学试题及答案
- 2025年中考英语作文预测及满分范文11篇
- 2025年中考道法时政新闻选择题预测100题
- 小学音乐教师个人成长研修方案及规划
- 2025-2030中国多融合蛋白行业市场现状供需分析及投资评估规划分析研究报告
- 承插型盘扣式钢管脚手架安全技术标准JGJT231-2021规范解读
- 尾矿库安全知识培训课件
- 地铁行车设备培训课件
- 国开现代管理原理形考作业1-4试题及答案
- 鲁班面试试题及答案
- T-CESA 1281-2023 制造业企业质量管理能力评估规范
评论
0/150
提交评论