建立表和定义完整性约束
- 格式:doc
- 大小:37.50 KB
- 文档页数:4
【据库系统原理复习题第4章、选择题1.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(A )。
A DBS 包枯DB 和DBMS B. DBMS 包括DB 和DBSC. DB包括DBS和DBMSD. DBS就是DB,也就是DBMS2•概念模型是现实世界的第一层抽象,这一类模型中最著名的模型是(D )。
A层次模型 B.关系模型 C.网状模型 D.实体-联系模型3.目前,数据库管理系统最常用的逻辑数据模型是(C)。
A.网状模型B•层次模型C .关系模型D •面向对象模型4.下列四项中,不属于数据库系统特点的是(C)oA数据共享 B.数据完整性 C.数据冗余度高 D.数据独立性高5.数据模型的三个要素分别是(B )。
A.实体完整性、参照完整性、用户自定义完整性B.数据结构、数据操作、数据完整性约束条件C.插入数据、修改数据、删除数据D.外模式、模式、内模式6.数据库三级结构从内到外的3个层次依次为(B)。
A外模式、模式、内模式 B.内模式、模式、外模式C.模式、外模式、内模式D.内模式、外模式、模式7.下列关于数据库系统的正确叙述是(A):A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型的一致D.数据库系统比文件系统能管理更多的数据8.数据的逻辑独立性是指(B)。
A.外模式改变时保持应用程序不变B.模式改变时保持外模式不变C.内模式改变时保持模式不变D.数据改变时保持应用程序不变9.数据的物理独立性是指(C)。
A.外模式改变时保持应用程序不变B•模式改变时保持外模式不变C•内模式改变时保持模式不变 D.数据改变时保持应用程序不变10.公司有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从部门到职员的联系类型是(D)。
A.多对多B. 一对一C.多对一D.—对多11.储蓄所有多个储户,储户在多个储蓄所之间存款,储户与储蓄所之间是(C)。
创建表的约束条件创建表的约束条件是在数据库中定义表结构时,为了保证数据的完整性和一致性,对表中的数据进行限制和规范的条件。
下面将介绍常见的表约束条件及其作用。
1. 主键约束:主键是用于标识表中每条记录的唯一标识符。
主键约束要求主键的值在表中是唯一的,并且不能为空。
主键可以是单个列,也可以是多个列的组合。
主键约束的作用是保证数据的唯一性和查询的高效性。
2. 唯一约束:唯一约束要求某个或某些列的值在表中是唯一的,但可以为空。
唯一约束的作用是保证数据的唯一性,可以用于限制某个字段的取值范围。
3. 非空约束:非空约束要求某个或某些列的值不能为空。
非空约束的作用是保证数据的完整性,防止出现空值。
4. 默认约束:默认约束是指在插入数据时,如果没有指定某个列的值,那么该列使用默认值。
默认约束的作用是提供默认值,简化数据插入操作。
5. 外键约束:外键约束用于建立两个表之间的关联关系,通过外键可以实现表与表之间的数据一致性和完整性。
外键约束要求外键列的值必须在主表中存在,或者为空。
外键约束的作用是保证数据的一致性和完整性,限制了数据之间的关联关系。
6. 检查约束:检查约束是对某个列的取值进行限制的条件,只有满足条件的数据才能插入或修改。
检查约束的作用是保证数据的合法性和一致性,可以用于限制某个字段的取值范围。
7. 级联约束:级联约束是指在对主表进行更新或删除操作时,自动更新或删除与之关联的从表中的数据。
级联约束的作用是保证关联表之间的数据一致性和完整性。
8. 域约束:域约束是在某个列的取值范围内进行限制的条件。
域约束的作用是保证数据的合法性和一致性,可以用于限制某个字段的取值范围。
9. 长度约束:长度约束是指对某个列的字符长度或数值长度进行限制的条件。
长度约束的作用是保证数据的完整性和一致性,可以用于限制某个字段的长度。
10. 唯一组合约束:唯一组合约束要求某几个列的组合在表中是唯一的。
唯一组合约束的作用是保证多个字段的组合值的唯一性。
数据库设计与规范化确保数据的一致性与完整性在当今信息化时代,数据的管理和维护对于企业的决策和运营起着至关重要的作用。
而数据库的设计和规范化则是确保数据的一致性与完整性的关键。
本文将从数据库设计原则、规范化过程以及数据一致性与完整性保障方面进行讨论。
一、数据库设计原则数据库设计是一个综合性的任务,需要考虑多方面因素。
以下是一些数据库设计的基本原则,能够帮助我们确保数据的一致性与完整性。
1. 合理划分数据表:将数据按照其内在逻辑关系进行划分,形成多个数据表。
通过合理的数据表划分,能够减少数据冗余和冗长,提高数据查询效率。
2. 定义适当的字段:在数据库表中定义合适的字段,确保每个字段存储的数据类型和长度都是符合实际需求的。
这样能够避免数据溢出或数据类型不匹配的问题。
3. 设定有效的主键:为每个数据表设定一个唯一标识,即主键。
主键能够确保每条记录的唯一性,方便数据的查询和关联。
4. 建立合适的索引:通过创建索引来提高数据库的查询性能。
根据实际需求,选择合适的字段作为索引,能够加快查询速度,并提高数据的一致性。
二、规范化过程规范化是数据库设计的重要步骤,通过将数据库分解为多个关系表,从而减少数据冗余,并确保每个关系表都符合一定的规范化要求。
常用的规范化形式有第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。
1. 第一范式(1NF):确保每个字段都是原子性的,不可再分解。
即每个字段中的值都是不可再分解的最小单位。
2. 第二范式(2NF):在1NF的基础上,消除非主键字段对主键字段的部分依赖。
即每个非主键字段都必须完全依赖于主键字段。
3. 第三范式(3NF):在2NF的基础上,消除非主键字段对其他非主键字段的传递依赖。
即任何非主键字段都不依赖于其他非主键字段。
通过规范化的过程,我们能够将数据表分解为更小、更精确的关系表,减少冗余数据,提高数据的一致性。
三、数据一致性与完整性保障数据库设计和规范化的过程可以帮助我们确保数据的一致性和完整性。
实用文档SQL-Server实验答案上海师范大学计算机系目录第一部分企业管理器的使用 (4)试验一注册服务器....................................... 错误!未定义书签。
试验二创建数据库....................................... 错误!未定义书签。
试验三创建表........................................... 错误!未定义书签。
实验四数据输入......................................... 错误!未定义书签。
实验五登录到数据库服务器............................... 错误!未定义书签。
第二部分 SQL语言 (4)第二部分 SQL语言 (4)试验一数据库创建 (4)试验二创建表 (4)试验三创建数据完整性 (6)试验四数据完整性试验 (8)试验五索引 (11)试验六更新数据 (12)试验七 Sql 查询语句 (13)试验八视图 (16)试验九安全性控制实验 (17)试验十存储过程 (18)试验十二触发器 (23)试验十二恢复技术 (26)试验十三事务 (27)试验十四锁 (28)第一部分企业管理器的使用第二部分 SQL语言试验一数据库创建目的:1掌握利用SQL语言进行数据库的创建、维护。
2 sp_helpdb 命令要求:1 创建数据库 2 修改数据库 3 删除数据库一建立school 数据库1 使用查询分析器创建数据库 schoolCreate DataBase school2 使用 SP_helpdb 查询数据库 School 的信息3 使用SQL-Server 的企业管理器查看数据库 school 的信息。
4 记录:1)school 数据库文件所在的文件夹。
2)school 数据库的文件名二删除School数据库1 使用查询分析器删除数据库 schoolDROP DATABASE school2 使用SQL-Server 的企业管理器删除数据库 school 。
实验三、四 创建表及输入数据及完整性约束本实验需要4学时。
一、实验目的要求学生熟练掌握和使用Transact-SQL、SQL Server企业管理器创建表、索引和修改表结构,并学会使用SQL Server 查询分析器接收Transact-SQL语句和进行结果分析。
学生熟练掌握使用 SQL、Transact-SQL和SQL Server企业管理器向数据库输入数据、修改数据和删除数据的操作。
二、实验内容1 创建表、确定表的主码和约束条件。
为主码建索引。
2 查看和修改表结构。
3 输入数据、修改数据和删除数据三、实验步骤(1)通过企业管理器,在建好的图书借阅数据库中建立图书、读者和借阅3个表,其结构为;图书(书号,类别,出版社,作者,书名,定价,作者).读者(编号,姓名,单位,性别,电话).借阅(书号,读者编号,借阅日期)要求为属性选择合适的数据类型,定义每个表的主码.是否允许空值和默认值等列级数据约束。
(2)在企业管理器中建立图书、读者和借阅3个表的表级约束.每个表的主码约束.借阅表与图书表间、借阅表与读者表之间的外码约束,要求按语义先确定外码约束表达式.再通过操作予以实现.实现借阅表的书号和读者编号的惟一性约束:实现读者性别只能是“男”或“女”的Check(检查)约束。
(3)通过企业管理器,在图书借阅数据库的图书、读者和借阅3个表中各输入10条记录。
要求记录不仅满足数据约束要求.还要有表间关联的记录。
(4)通过企业管理器实现对图书借阅数据库的图书、读者和借阅3个表中数据的插入。
删除和修改操作。
(5)通过企业管理器实现对学生选课库的数据增加、数据删除和数据修改操作、要求学生、课程和选课表中各有10条以上的记录。
四、实验方法1 新建表在 SQL Serve 2000的数据库中,文件夹是按数据库对象的类型建立的.文件夹名是该数据库对象名。
当在企业管理器中选择服务器和数据库文件夹,并打开已定义好的图书.读者数据库后,会发现它自动设置了关系图、表、视图、存储过程、用户、角色、规则、默认等文件夹。
题目一问题描述:为管理岗位业务培训信息,建立3个表:S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄C (C#,CN ) C#,CN 分别代表课程编号、课程名称SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名--实现代码:SELECT SN,S# FROM SWHERE [S#] IN(SELECT [S#] FROM C,SCWHERE C.[C#]=SC.[C#]AND CN=N\'税收基础\')2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位--实现代码:SELECT S.SN,S.SD FROM S,SCWHERE S.[S#]=SC.[S#]AND SC.[C#]=\'C2\'3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位--实现代码:SELECT SN,SD FROM SWHERE [S#] NOT IN(SELECT [S#] FROM SCWHERE [C#]=\'C5\')4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位--实现代码:SELECT SN,SD FROM SWHERE [S#] IN(SELECT [S#] FROM SCRIGHT JOINC ON SC.[C#]=C.[C#] GROUP BY [S#]HAVING COUNT(*)=COUNT([S#]))5. 查询选修了课程的学员人数--实现代码:SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC6. 查询选修课程超过5门的学员学号和所属单位--实现代码:SELECT SN,SD FROM SWHERE [S#] IN(SELECT [S#] FROM SCGROUP BY [S#]HAVING COUNT(DISTINCT [C#])>5)题目二问题描述:本题用到下面三个关系表:CARD 借书卡。
数据库1. 在关系数据库系统中,当关系的模式改变时,用户程序也可以不变,这是()[单选题] *A.数据的物理独立性B.数据的逻辑独立性(正确答案)C.数据的位置独立性D.数据的存储独立性2. E-R图用于描述数据库的() [单选题] *A.数据模型B.概念模式(正确答案)C.存储模型D.逻辑模型3. 在建立表时,将年龄字段值限制在18-40之间,这种约束属于() [单选题] * A.实体完整性约束B.用户定义完整性约束(正确答案)C.参照完整性约束D.视图完整性约束4. SQL是一种()语言。
[单选题] *A.高级算法B.人工智能C.关系数据库(正确答案)D.函数型5. SQL语言按其功能可分为4类,包括查询语言、定义语言、操纵语言和控制语言,其中最重要的,使用最频繁的语言为()。
[单选题] *A.定义语言B.查询语言(正确答案)C.操纵语言D.控制语言6. 要保证数据库的数据独立性,需要修改的是()。
[单选题] *A.三层模式之间的两种映射(正确答案)B.模式与内模式C.模式与外模式D.三层模式7. 下列SQL语句中,实现数据记录修改的语句是()。
[单选题] *A. ALTERB. UPDATE(正确答案)C. CREATED.SELECT8. 两个表的记录数为5和4,对两个表执行连接查询,查询结果最多得到()条记录。
[单选题] *A.16B.63C.20(正确答案)D.29. 以下操作不会对数据库安全性产生威胁的是()。
[单选题] *A.非授权用户对数据库的恶意存取和破坏B.数据中重要或敏感的数据被泄露C.安全环境的脆弱D.授权给有资格的用户访问数据库的权限(正确答案)10. 视图是一个“虚表”,视图的构造基于()。
[单选题] *A.基本表B.视图C.基本表或视图(正确答案)D.数据字典11. 一个关系中的候选关键字()。
[单选题] *A.至多一个B.可多个(正确答案)C.必须多个D.至少三个12. 在数据库中,产生数据不一致的根本原因是。
实验六数据库的完整性定义与检查实验目的:1.充分理解关系数据库中关于数据库完整性的概念。
2.掌握实体完整性的定义和检查方法。
3.掌握参照完整性的定义和检查方法。
4.掌握用户自定义完整性的定义和检查方法。
实验内容:一、在企业管理器中定义以下数据表中各字段的完整性约束(包括实体完整性、参照完整性和用户定义完整性)。
1.Student表。
记录学生基本信息。
表1-1 Student 表结构[Sno] [char](9)PRIMARY KEY,[Sname] [char](8)NOT NULL,[Ssex] [char](2)CHECK(Ssex IN('女','男')),[Sage] SMALLINT CHECK(Sage>=15 AND Sage<=45),[Sdept] [char](20)default('计算机'))2.Course表。
记录课程信息。
表1-2 Course 表结构[Cno] [char](10)PRIMARY KEY,[Cname] [char](20)NOT NULL,[Ccredit] SMALLINT CHECK(Ccredit>0),[Semester] SMALLINT CHECK(Semester>0),[Period] SMALLINT CHECK(Period>0),)3.Sc表。
记录学生选修课程的信息。
表1-3 Sc 表结构[Sno] [char](9)NOT NULL,[Cno] [char](10)NOT NULL,[Grade]SMALLINT CHECK(Grade>=0 and Grade<=100),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno))二、在查询编辑器中,写出创建表的语句同时写出设置实体完整性、参照完整性和用户自定义完整性的语句。
数据库的四种类型的完整性约束数据完整性:是指存储在数据库中的所有数据值均正确的状态。
四种类型的完整性约束:1、实体完整性约束:表中的每⼀⾏数据都反映不同的实体,不能存在相同的数据⾏.通过索引.唯⼀约束,主键约束或标识列属性,可以⽤来实现表的实体完整性.索引:将⽂献中具有检索意义的事项(可以是⼈名、地名、词语、概念、或其他事项)按照⼀定⽅式有序编排起来,以供检索的⼯具书。
数据库索引好⽐是⼀本书前⾯的⽬录,能加快数据库的查询速度。
例如这样⼀个查询:select * from table1 where id=44。
如果没有索引,必须遍历整个表,直到ID等于44的这⼀⾏被找到为⽌;有了索引之后(必须是在ID这⼀列上建⽴的索引),直接在索引⾥⾯找44(也就是在ID这⼀列找),就可以得知这⼀⾏的位置,也就是找到了这⼀⾏。
可见,索引是⽤来定位的。
唯⼀约束:⽐如⼀张表的学⽣姓名设置了唯⼀约束,那么学⽣的姓名就是不能重复的,只能是唯⼀的唯⼀约束保证在⼀个字段或者⼀组字段⾥地数据与表中其它⾏的数据相⽐是唯⼀的附上与主键约束的区别,以更好理解创建唯⼀约束可确保在未参与主键的特定列中不输⼊重复值。
尽管唯⼀约束和主键都强制唯⼀性,但如果情况如下,则应向表附加唯⼀约束⽽不是主键约束:希望在某⼀列或某⼀组列中强制唯⼀性。
您可以向表附加多个唯⼀约束,但只能向表附加⼀个主键约束。
希望在允许空值的列中强制唯⼀性。
您可以向允许空值的列附加唯⼀约束,但只能向不允许空值的列附加主键约束。
当向允许空值的列附加唯⼀约束时,请确保在所约束的列中最多只有⼀⾏包含空值。
2、域完整性约束:指给定列的输⼊有效性通过限制数据类型,检查约束,输⼊格式,外键约束,默认值,⾮空约束等多种⽅法,可以⽤来实现表的域完整性.3、参照完整性约束:在输⼊或删除数据⾏时,引⽤完性约束⽤来保持表之间已定义的关系4:、⽤户定义的完整性约束:⽤来定义特定的规则,例如,向⽤户信息表中插⼊⼀个⽤户记录时,要求通过⾝份证编号来检查另外⼀个数据库中是否存在该⽤户,并且该⽤户的信誉度是否满⾜要求等.如果不满⾜要求则不能够插⼊,这个时候就需要使⽤数据库的规则存储过程或者触发器来进⾏约束。
《数据库实验》实验报告《数据库实验》实验报告黄爱蓉编审湖北汽车⼯业学院电⼦信息科学系⼆〇〇七年⼀⽉实验⼀:建⽴数据库及基本表实验报告⼀、实验⽬的1、了解SQL Server数据库的逻辑结构和物理结构;2、了解SQL Server的基本数据类型;3、学会在企业管理器中创建数据库和表;4、使⽤SQL查询分析器⽤CREA TE、DROP、ALTER语句创建和删除数据库,创建、删除、更新基本表。
⼆、实验内容1、创建数据库和查看数据库属性。
2、创建表。
3、查看和修改表结构。
4、熟悉企业管理器和查询分析器⼯具的使⽤⽅法三、实验步骤1、在企业管理器中创建数据库和数据表。
(1) 使⽤企业管理器建⽴图书管理数据库,数据库名为BM,初始⼤⼩为10MB,最⼤为50MB,数据库⾃动增长,增长⽅式是按5%⽐例增长;⽇志⽂件初始为2MB,最⼤可增长到5MB,按1MB增长。
数据库的逻辑⽂件名和物理⽂件名均采⽤默认值。
详细步骤:(2) 在企业管理器中查看图书管理数据库的属性,并进⾏修改,使之符合要求。
(3) 通过企业管理器,在建好了图书管理数据库BM中建⽴图书(book)、读者(reader)和借阅(borrow)3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价);读者(编号,姓名,单位,性别,电话);借阅(书号,读者编号,借阅⽇期)。
创建上述三个表的步骤:三个表各个字段的数据类型:2、在查询分析器中创建数据库和数据表(1) 创建数据库S-C 的sql语句:(2) 在数据库S-C下,创建基本表学⽣表student(sno,sname,ssex,sage,sdept)的sql语句:创建基本表课程表course(cno,cname, ccredit)的sql语句:创建基本表成绩表sc(sno,cno,grade)的sql语句:(3) 在窗⼝下分别键⼊DROP TABLE Student及DROP TABLE SC命令,运⾏后观察结果。
计算机科学与技术系
实验报告
专业名称计算机科学与技术
课程名称数据库系统及应用
项目名称建立表和定义完整性约束
班级
学号
姓名
实验日期 2015/10/27
一、实验目的与要求:熟练掌握表的建立和数据完整性约束的定义方法,实践DBMS提供的数据完整性功能,加深对数据完整性的理解。
实验要求:(1)用CREATE DATABASE命令建立数据库(自己命名数据库的名称)。
(2)用CREATE SCHEMA命令建立架构(自己命名架构的名称)。
(3)在定义的架构下参考课本138页图5-1所示的样本数据库和表5-8具体要求使用TABLE命令建立表并定义完整性约束。
(4)使用ALTER TABLE命令按如下要求修改表结构:
①为学生表增加一个“平均成绩”字段,类型为短整形,默认是空值;
②为课程表的“学时”字段重新定义约束:取值为8的倍数,不允许为空值;
③将院系表的名称字段的类型修改为varchar(30)。
④为教师表增加一个工资字段,类型为5位整数、2位小数的数值型。
二、实验方法:(代码)
--create database
create database 学生管理系统
create table yuanxi
(
编号 smallint primary key,
名称 char(20) unique not null,
负责人 char(10),
办公地点 char(20)
)
--drop table yuanxi
create table xuesheng
(
学号 char(8) primary key,
院系 smallint foreign key references yuanxi(编号),
姓名 char(10) not null,
性别 char(2) check (性别 = '男' or 性别 = '女'),
生源 char(6),
状态 char(4) check (状态 = '正常' or 状态 = '留级' or 状态 = '休学' or 状态 = '退学') )
create table jiaoshi
(
教师编号 char(8) primary key,
院系 smallint foreign key references yuanxi(编号),
姓名 char(10) not null,
性别 char(2) check (性别 = '男' or 性别 = '女'),
职称 char(6) check (职称 = '教授' or 职称 = '副教授' or 职称 = '讲师' or 职称 = '助教'), 专业 char(10)
)
create table kecheng
(
课程编号 char(8) primary key,
课程名称 char(20) not null,
负责讲师 char(8) foreign key references jiaoshi(教师编号),
学时 smallint not null,
课程性质 char(10) check(课程性质 = '公共基础' or 课程性质 = '专业基础' or 课程性质 = '专业选修' or 课程性质 = '任意选修')
)
create table xuanke
(
学号 char(8)
foreign key references xuesheng(学号),
课程编号 char(8) foreign key references kecheng(课程编号),
成绩 smallint check(成绩 >= 0 and 成绩 <=100) default null ,
primary key(学号,课程编号)
)
--drop table xuanke
alter table xuesheng
add 平均成绩 smallint default null
alter table xuesheng
drop column 平均成绩
alter table jiaoshi
add 工资 numeric(5,2)
alter table yuanxi
alter column 名称 varchar(30)
alter table kecheng
add check (学时 / 8 =0)
三、实验分析与小结:
数据库是一门很难学的课程,而且,我在平时比较少关注这方面的东西,所以,我在做这个实验的时候就觉得十分的困难。
很多的时候我都需要别人的帮助。
我是一个比较粗心的人,因此,我在做这个实验的时候没有留意输入的时候要用英文符号,要加空格。
所以,我总是出现错误,让我觉得很烦恼。
但是,在做这个实验的时候,我觉得一点快乐。
因为我又接触了以前我从未接触过的东西,我又学了一点新的知识。
过程是最重要的,在这个实验过程中我学会了新知识,这是最重要的。
得分(百分制)。