版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章 关系数据库定义,目录,数据模型 关系数据模型的基本概念 数据类型(SQL SERVER) 模式定义 数据库的定义 表的定义,数据模型,3,1. 数据模型,在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟 数据模型应满足三方面要求 能比较真实地模拟现实世界 容易为人所理解 便于在计算机上实现,数据模型的组成要素,数据结构 数据操作 数据的约束条件,(1) 数据结构,什么是数据结构 对象类型的集合 两类对象 与数据类型、内容、性质有关的对象 与数据之间联系有关的对象 数据结构是对系统静态特性的描述,(2)数据操作,数据操作 数据库中各
2、种对象(型)的实例(值)允许执行的操作及有关的操作规则 数据操作的类型 检索 更新(包括插入、删除、修改),数据操作(续),数据模型对操作的定义 操作的确切含义 操作符号 操作规则(如优先级) 实现操作的语言 数据操作是对系统动态特性的描述。,(3)数据的约束条件,数据的约束条件 一组完整性规则的集合。 完整性规则是给定的数据模型中数据及其联系所具有的制约和储存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。 在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。,2. 关系模型的基本概念,关系(Relation) 一个关系对应通常说的一张表。把数据
3、库表示为关系的集合,每一个关系类似于一张二维表。表2-1是一个关系的实例,其关系名为Student,包含4个属性:StudentNo、StudentName、Age和Dept,分别表示学号、姓名、年龄和系别四个性质。 表2-1:关系Student,关系模型的基本概念,属性就是关系中各列,一列即为一个属性,给每一个属性起一个名称即属性名。在表2-1中,关系的属性为StudentNo、StudentName、Age和Dept,属性描述了该列各数据项的含义,例如,属性为Age的列存放着学生的年龄。,关系模型的基本概念,元组(Tuple) 在表2-1中,除了关系的标题栏以外,其它各行统称为“元组”。元
4、组的各分量分别对应各个属性在该元组上的取值。 表2-1中有三个元组,第一个元组有四个分量: 9900011、李明、19和计算机系 分别对应于四个属性: StudentNo、StudentName、Age和Dept。 单独书写元组的方法:(9900011、李明、19,计算机系) 关系是元组的集合,在给定的关系中,一个元组不可能出现一次以上。,关系模型的基本概念,属性(Attribute) 表中的一列即为一个属性,给每一个属性起一个名称即属性名。 关系的模式:关系名和关系的属性集称为关系的“模式”。 对关系的描述:关系名(属性1,属性2,属性n) 模式的表示: Student(StudentNo,
5、StudentName,Age,Dept),关系模型的基本概念,分量 元组中的一个属性值。 域(Domain) 每个属性有一个允许的值的集合,称为该属性的“域”。 指定的域通常是一个特定的基本类型。 关系的任何元组的每个分量都必须在对应列的域中取值。 关系模型要求每个元组的每个分量都是原子的,即必须属于某种基本的类型,如integer, string等。不允许一个值为记录结构、集合、列表、数组或者能合理地分解为更小分量的其他任何类型。 例如,在表2-1中,关系Student的元组的第一和第三个分量必须是整数,第二和第四个分量必须是字符串。,关系模型的基本概念,超码:一个或者多个属性的集合,这些
6、属性的组合可以使我们在一个实体集中唯一地标识一个实体。 候选码:任意真子集都不能成为超码的最小超码 主码(Key) 数据库中,设计人员选定的,用于唯一确定一个元组的候选码。,关系模型的基本概念-主码,表2-2:关系Stu_course,一个表中可能存在多个候选码,相应的键称为候选键。在建立数据库的时候,从候选键中选取哪一个作为主键都可以,因此,主键是从候选键中选取出来做主键的属性。 比如,对于关系Student,如果能够保证StudentName肯定不重复的话,那么StudentName列也可以作为关系Student的主键。,关系数据模型的数据结构(续),例1 学生、系、系与学生之间的一对多联
7、系: 学生(学号,姓名,年龄,性别,系号,年级) 系 (系号,系名,办公地点) 例2 系、系主任、系与系主任间的一对一联系,关系数据模型的数据结构(续),例3 学生、课程、学生与课程之间的多对多联系: 学生(学号,姓名,年龄,性别,系号,年级) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩),关系数据模型的数据结构(续),关系必须是规范化的,满足一定的规范条件 最基本的规范条件:关系的每一个分量必须是一个不 可分的数据项。,关系模型的完整性约束,实体完整性: 参照完整性: 用户定义的完整性:,实体完整性是指一个表中的每一行必须是唯一的即实体是可以唯一区分的 。 若属性A是基本关系R的
8、主键,则属性A不能取空值,另外不能存在属性A上分量相同的元组。,用户定义的完整性规则是针对某一应用环境的完整性约束条件,他反映了某一具体应用所涉及的数据应满足的要求。在实际系统中,这类完整性规则一般在建立库表的同时进行定义。 例如,学生的考试成绩的取值范围为0100,或取优、良、中、及格、不及格。,关系模型的完整性约束-参照完整性,学生表,专业表,这样一个表中某列的取值受限于另一个表的取值范围约束的特点就称为参照完整性。在关系数据库中用外键(foreign key,有时也称为外部关键字或外码)来实现参照完整性。 外键实际上是表中的一个(或多个)属性,它引用某个其他表(特殊情况下,也可以是外键所
9、在的表)的主键,当然,也可以是候选键,但多数情况下是主键。,参照完整性举例,课程表,选修表,学生表,参照完整性规则,若属性(或属性组)F是基本关系R的外键(外码),它与基本关系S的主键(主码)Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值); 或者等于S中某个元组的主码值。,例如:学生关系中每个元组的“专业号”属性只取下面两类值: (1)空值,表示尚未给该学生分配专业。 (2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中。 选修(学号,课程号,成绩) “学号”和“课程号
10、”是选修关系中的主属性按照实体完整性和参照完整性规则,它们只能取相应被参照关系中已经存在的主码值。,关系模型的数据操纵,查询、插入、删除、更新 数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合 存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”,关系数据模型的存储结构,表以文件形式存储 有的DBMS一个表对应一个操作系统文件 有的DBMS自己设计文件结构,关系模型的优缺点,优点 建立在严格的数学概念的基础上 概念单一。数据结构简单、清晰,用户易懂易用 实体和各类联系都用关系来表示。 对数据的检索结果也是关系。 关系模型的存取路径对用户透明 具有更高的数据独立性,
11、更好的安全保密性 简化了程序员的工作和数据库开发建立的工作,关系模型的优缺点(续),缺点 存取路径对用户透明导致查询效率往往不如非 关系数据模型 为提高性能,必须对用户的查询请求进行优化 增加了开发数据库管理系统的难度,3. 创建数据库模式,以SQL Server 为例,介绍定义数据库模式的基本操作,数据类型,整数 Bit decimal 和 numeric money 和 smallmoney 近似数字 datetime 和 smalldatetime 字符串 Unicode 字符串 二进制字符串 其它数据类型,整数,bigint:从 -263 (-9223372036854775808)
12、到 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 到 1038 1 的固定精度和小数位的数字数据。 numeric:功能上等同于 decimal。,money
13、和 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,date
14、time 从 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:固定长度的
15、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
16、,147,483,647) 个字节。,其它数据类型,cursor:游标的引用。 sql_variant:一种存储 SQL Server 支持的各种数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。 table:一种特殊的数据类型,存储供以后处理的结果集。 timestamp:数据库范围的唯一数字,每次更新行时也进行更新。 uniqueidentifier:全局唯一标识符 (GUID)。,4. CREATE DATABASE,创建一个新数据库及存储该数据库的文件, 或从先前创建的数据库的文件中附加数据库。,CREATE DATABASE data
17、base_name ON ,.n , ,.n LOG ON ,.n COLLATE collation_name FOR LOAD | FOR ATTACH := PRIMARY ( NAME = logical_file_name , FILENAME = os_file_name , SIZE = size , MAXSIZE = max_size | UNLIMITED , FILEGROWTH = growth_increment ) ,.n := FILEGROUP filegroup_name ,.n ,database_name:新数据库的名称。数据库名称在服务器中必须唯一,并且
18、符合标识符的规则。,ON:指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。,LOG ON :指定显式定义用来存储数据库日志的磁盘文件(日志文件)。 如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。,FOR ATTACH:指定从现有的一组操作系统文件中附加数据库。,数据库的存储文件,有三种类型的文件用来存储数据库: 1.主文件包含数据库的启动信息。主文件还可以用来存储数据。每个数据库都包含一个主文件。 2. 次要文件保存所有主要数据文件中容纳不下的数据。如果主文件大到足以容纳数据库中的所有数据,就不需要有次要数据
19、文件。而另一些数据库可能非常大,需要多个次要数据文件,也可能使用多个独立磁盘驱动器上的次要文件,以将数据分布在多个磁盘上。 3.事务日志文件保存用来恢复数据库的日志信息。每个数据库必须至少有一个事务日志文件(尽管可以有多个)。事务日志文件最小为 512 KB。,每个数据库至少有两个文件,一个主文件和一个事务日志文件。,数据库文件类型,创建数据库示例,USE master GO CREATE DATABASE mytest,创建名为 mytest 的数据库,并创建相应的主文件和事务日志文件。因为该语句没有 项,所以主数据库文件的大小为 model 数据库主文件的大小。事务日志文件的大小为 mod
20、el 数据库事务日志文件的大小。因为没有指定 MAXSIZE,文件可以增长到填满所有可用的磁盘空间为止。,创建数据库示例,USE master GO CREATE DATABASE Products ON ( NAME = prods_dat, FILENAME = c:program filesmicrosoft sql servermssqldataprods.mdf, SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1 ),创建名为 Products 的数据库,并指定单个文件。指定的文件成为主文件,并会自动创建一个 1 MB 的事务日志文件。因为主文件的 SIZ
21、E 参数中没有指定 MB 或 KB,所以主文件将以兆字节为单位进行分配。因为没有为事务日志文件指定 ,所以事务日志文件没有 MAXSIZE,可以增长到填满所有可用的磁盘空间为止。,创建数据库示例,USE master GO CREATE DATABASE Sales ON ( NAME = Sales_dat, FILENAME = c:program filesmicrosoft sql servermssqldatasaledat.mdf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON( NAME = Sales_log, FILENAM
22、E = c:program filesmicrosoft sql servermssqldatasalelog.ldf, SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ),创建名为 Sales 的数据库。因为没有使用关键字 PRIMARY,第一个文件 (Sales_dat) 成为主文件。因为 Salesdat 文件的 SIZE 参数没有指定 MB 或 KB,因此默认为 MB,以兆字节为单位进行分配。Saleslog 文件以兆字节为单位进行分配,因为 SIZE 参数中显式声明了 MB 后缀。,创建数据库示例,USE master CREATE DATA
23、BASE Archive ON PRIMARY ( NAME = Arch1, FILENAME = c:program filesmicrosoft sql servermssqldataarchdat1.mdf, SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Arch2, FILENAME = c:program filesmicrosoft sql servermssqldataarchdat2.ndf, SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Arc
24、h3, FILENAME = c:program filesmicrosoft sql servermssqldataarchdat3.ndf, SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20) LOG ON ( NAME = Archlog1, FILENAME = c:program filesmicrosoft sql servermssqldataarchlog1.ldf, SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Archlog2, FILENAME = c:program
25、 filesmicrosoft sql servermssqldataarchlog2.ldf, SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20),使用三个 100 MB 的数据文件和两个 100 MB 的事务日志文件创建了名为 Archive 的数据库。主文件是列表中的第一个文件,并使用 PRIMARY 关键字显式指定。事务日志文件在 LOG ON 关键字后指定。注意 FILENAME 选项中所用的文件扩展名:主要数据文件使用 .mdf,次要数据文件使用 .ndf,事务日志文件使用 .ldf。,分离数据库,sp_detach_db Archive G
26、O,附加数据库,CREATE DATABASE Archive ON PRIMARY (FILENAME = c:program filesmicrosoft sql servermssqldataarchdat1.mdf) FOR ATTACH,删除数据库,语法: DROP DATABASE database_name ,.n ,删除数据库,DROP DATABASE publishing DROP DATABASE pubs, newpubs,简单表的定义,SQL语言使用CREATE TABLE语句定义基本表。其一般格式为: CREATE TABLE ( 列完整性约束, 列完整性约束, 表
27、级完整性约束),:是指对某一列设置的约束条件。该列上的数据必须满足。最常见的有: NOT NULL该列值不能为空 NULL该列值可以为空 UNIQUE该列值不能存在相同 DEFAULT该列某值在未定义时的默认值 CHECK用户自定义的约束 :规定了关系主键、外键和用户自定义完整性约束。,简单表的定义,创建部门关系表,通过外键建立部门关系表和员工关系表的关联。 CREATE TABLE Dept (Dno char(6) not null primary key, Dname varchar(12) not null, Manager char(6) not null);,简单表的定义,创建员工
28、关系表,通过外键建立部门关系表和员工关系表的关联。 CREATE TABLE Employee (Eno CHAR(5) NOT NULL primary key, Ename VARCHAR(10) NOT NULL, Sex CHAR(2) NOT NULL, Marry CHAR(2) DEFAULT 未, Dno CHAR(4) NULL, FOREIGN KEY (Dno) REFERENCES Dept (Dno);,简单表的定义,CREATE TABLE Employee (Eno CHAR(5) NOT NULL primary key, Ename VARCHAR(10) N
29、OT NULL, Sex CHAR(2) NOT NULL, Marry CHAR(2) DEFAULT 未, Dno CHAR(4) REFERENCES Dept (Dno), );,简单表的定义,CREATE TABLE Employee (Eno CHAR(5) NOT NULL primary key, Ename VARCHAR(10) NOT NULL, Sex CHAR(2) NOT NULL, Marry CHAR(2) DEFAULT 未, Dno CHAR(4) NULL, Constraint fcnameDno FOREIGN KEY (Dno) REFERENCES
30、 Dept (Dno);,实 例-学生数据库,学生数据库涉及到专业、课程、教师、学生、班级、开课计划、学生选课七个表。 其中专业、课程、班级、教师是基本表 班级参照了专业表 开课计划参照了课程和教师表 学生参照了班级表 选课参照了学生和开课计划表 在创建这样一个完整的数据库的表的时候被参照的表应该先建立,参照其他关系的应该后建立,否则就会产生错误。,create table 专业( 专业编号 char(10) not null primary key, 专业名称 varchar(50), 级别char(6), 学制int );,create table 课程( 课程编号 char(10) no
31、t null primary key, 课程名称 varchar(50), 理论学时 int check(理论学时=0), 实验学时 int check(实验学时=0), 开课学期 int , 课程性质课程介绍 char(200) );,create table 班级( 班级编号 char(10) not null primary key, 班级名称 varchar(50) unique, 专业编号 char(10) references 专业(专业编号), 入学年份 int default year(getdate() );,create table 教师( 教师编号 char(10) no
32、t null primary key, 教师姓名 varchar(10), 性别 char(2) check(性别=女 or 性别=男 ), 职称 char(6), 政治面貌 varchar(10), 简介 char(200), 生日 datetime, 所在教研室 varchar(50) );,create table 学生( 学号 char(10) not null primary key, 姓名 varchar(10), 性别 char(2) check(性别=女 or 性别=男 ), 生日 datetime, 班级 char(10) references 班级(班级编号), 政治面貌
33、varchar(10) );,create table 开课计划( 开课计划编号 char(10) not null primary key, 课程编号 char(10) references 课程(课程编号), 教师编号 char(10) references 教师(教师编号), 学期 char(9) check(学期 like 0-90-90-90-90-90-90-90-91-2) );,create table 选课表( 学号 char(10) references 学生(学号), 开课计划编号 char(10) references 开课计划(开课计划编号), 成绩 int check(成绩=0 and 成绩=100) constraint pkofxuanke primary key (学号,开课计划编号) );,引用属性组做外码,属性组做外码的情况。如果没有 “开课计划编号属性”,开课计划表中的课程编号、教师编号以及学期共同组成一个主码,在选课表中,这个属性组做外码。 c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 混合动力电动汽车结构原理与检修 第2版 课件 学习情景2 混合动力电动汽车高压维修操作安全
- 年末晚会活动策划方案(3篇)
- 牛杂店工人管理制度范本(3篇)
- 甲醇炉燃气安全管理制度(3篇)
- 兽药质检培训
- 线上帮办团队管理制度内容(3篇)
- 蔬菜种植后期管理制度(3篇)
- 通信网管中心管理制度(3篇)
- 饭店协会档案管理制度(3篇)
- 《GA 1016-2012枪支(弹药)库室风险等级划分与安全防范要求》专题研究报告
- 2025年广东省中考语文试卷真题(含答案解析)
- 烫熨治疗法讲课件
- 2025至2030中国模块化变电站行业发展趋势分析与未来投资战略咨询研究报告
- 电厂清洁生产管理制度
- 2025年江苏省事业单位招聘考试教师招聘体育学科专业知识试题
- 机械设计年终述职报告
- 可信数据空间解决方案星环科技
- 建筑工程监理服务承诺书范文
- 知荣明耻主题班会课件
- 职业技术学院工业机器人技术高职技能考核标准1022(简化版)
- 声学基础课后题答案
评论
0/150
提交评论