内容正文:
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第57卷,为专题训练卷,按“数据库基础知识”专题范围和要求编写。具体内容为:(1)理解数据库的有关概念。(2)了解实体、属性和实体集的概念及实体之间的关系;(3)理解数据模型的基本知识。(4)了解Access数据库的基本对象。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第57卷 专题训练——数据库基础知识
(考试时间:45分钟 满分:100分)
一、选择题(共25题,每题2分,共50分)
1.某校要保存学生的学号、姓名和班级信息,最适合采用的组织方式是( )
A.把每名学生保存为一张独立数据库
B.把全部信息写入同一个长文本段
C.只保存学生姓名而不保存标识
D.按字段和记录组织的关系表
【答案】D
【解析】学生数据具有固定属性,使用字段和记录组织的关系表便于统一保存、查询和维护。
2.在“学生选课”场景中,学生和课程分别属于( )
A.两个属性
B.两条记录
C.两个查询条件
D.两个实体集
【答案】D
【解析】学生和课程都是具有独立意义的对象类别,各自包含多个具体对象,因此分别构成实体集。
3.“学号为S08的学生”在概念上更接近( )
A.一个具体实体
B.一个实体集
C.一个属性名称
D.一种联系类型
【答案】A
【解析】带有具体标识的某名学生是一个具体实体,不是同类对象的集合。
4.“联系电话”用于描述某名学生的特征,它属于学生实体的( )
A.属性
B.实体集
C.记录
D.联系
【答案】A
【解析】联系电话是描述学生特征的数据项,在概念模型中属于学生实体的属性。
5.“本学期所有选修数据库课程的学生”表示的是( )
A.一个单独实体
B.一组同类对象
C.一个字段值
D.一条联系记录
【答案】B
【解析】多个同类学生对象组成一个集合,题干描述的是一组学生对象。
6.一个学院下设多个专业,每个专业只属于一个学院,该联系属于( )
A.一对一
B.多对多
C.一对多
D.无联系
【答案】C
【解析】一个学院对应多个专业,每个专业对应一个学院,因此为一对多联系。
7.一名员工对应一个工位,一个工位也只安排一名员工,属于( )联系
A.一对多
B.多对多
C.一对一
D.多对一
【答案】C
【解析】联系两端都按一对应一,员工与工位构成一对一联系。
8.在图书馆场景中,读者和图书通常形成多对多联系,是因为( )
A.每本图书只能借出一次
B.双方没有业务联系
C.双方都可对应多个对象
D.读者只能借一本图书
【答案】C
【解析】一名读者可以有多本借阅记录,一本图书在不同时间也可能对应多名读者,属于多对多业务联系。
9.若要保证“课程编号”在课程表中不重复,通常应将其设置为( )
A.备注字段
B.普通文本说明
C.主键字段
D.显示格式字段
【答案】C
【解析】主键要求值具有唯一性,可用于保证课程编号不重复并标识课程记录。
10.在员工表中,下面更适合用于唯一标识员工的是( )
A.姓名
B.员工编号
C.入职年份
D.部门名称
【答案】B
【解析】员工编号通常为每名员工分配的唯一标识,姓名、年份和部门可能重复。
11.在关系表中,“联系电话”这一列主要用于表示( )
A.全部学生实体集
B.学生与班级的联系
C.实体的一个属性
D.整张表的记录集合
【答案】C
【解析】一列通常描述实体的一个特征,联系电话是学生实体的一个属性。
12.在“订单”表中,一行包含订单号、日期和金额,这一行表示( )
A.一个订单实体集
B.一个金额属性
C.一种表间联系
D.一条订单记录
【答案】D
【解析】一行数据描述一个具体订单对象,因此表示一个订单实体实例或一条订单记录。
13.“教师”作为学校管理系统中的独立对象类别,通常建模为( )
A.属性值
B.字段格式
C.实体
D.查询结果
【答案】C
【解析】教师是具有独立意义并可单独管理的对象类别,通常建模为实体。
14.“全体教师”在概念模型中表示( )
A.一个教师实体
B.教师的一个属性
C.教师表中的一条记录
D.教师实体集
【答案】D
【解析】全体教师是多个教师实体组成的同类对象集合,属于教师实体集。
15.一个社团有多名成员,而每名成员可参加多个社团,社团与成员属于( )
A.多对多
B.一对多
C.一对一
D.没有联系
【答案】A
【解析】社团一端和成员一端都可能对应多个对象,属于多对多联系。
16.下列哪一项是“图书”实体的属性( )
A.图书馆全部图书
B.读者借阅图书
C.图书与读者的联系
D.图书名称
【答案】D
【解析】图书名称用于描述图书实体的特征,是图书实体的属性。
17.下列对象中,属于“课程”实体集的是( )
A.本学期全部课程
B.课程号C01对应的一门课
C.课程名称
D.学生选修课程的行为
【答案】A
【解析】本学期全部课程是同类课程实体组成的集合,属于课程实体集。
18.把读者与图书之间的多对多联系转换为关系表时,通常应( )
A.删除读者实体集
B.建立借阅表保存两端编号
C.把所有信息合并成一个字段
D.只保留图书名称而不保存标识
【答案】B
【解析】多对多联系通常通过联系表实现,借阅表可保存读者号、图书号和借阅日期等联系属性。
19.在数据库概念设计阶段,分析实体、属性和联系的主要成果是( )
A.打印版式
B.记录排序结果
C.概念模型
D.用户登录界面
【答案】C
【解析】概念设计阶段通过分析实体、属性和联系形成概念模型,为后续逻辑结构设计提供依据。
20.关于实体、属性、实体集和联系的说法,正确的是( )
A.实体表示集合,属性表示对象,联系表示字段
B.四者分别表示对象、特征、集合和对象关联
C.实体集表示单个对象,属性表示对象之间的关系
D.联系表示对象特征,属性表示同类对象的集合
【答案】B
【解析】实体、属性、实体集和联系分别表示对象、特征、同类对象集合及对象之间的关联,概念作用不同。
21.关系表中Student表的一行数据通常表示( )
A.一个学生实体实例
B.学生实体集
C.学生姓名属性
D.学生与课程的联系
【答案】A
【解析】一行记录描述一个具体学生对象,表示学生实体的一个实例。
22.Access数据库中,表、查询、窗体和报表通常统称为( )
A.数据表中的记录
B.数据库中的对象
C.数据表中的字段
D.实体之间的联系
【答案】B
【解析】表、查询、窗体和报表都是Access数据库中的基本对象。
23.学生和课程之间的“选课”在概念模型中表示( )
A.学生与课程的联系
B.学生实体的一项属性
C.课程实体的一项属性
D.一条普通选课记录
【答案】A
【解析】选课描述学生实体集与课程实体集之间的业务关联,属于联系。
24.关系表中的一列通常称为( )
A.记录
B.字段
C.实体集
D.联系实例
【答案】B
【解析】关系表的一列用于描述一个属性,通常称为字段。
25.概念模型中,编号为S01的某名学生属于( )
A.一个具体实体
B.一个实体集
C.一个属性名称
D.一种联系类型
【答案】A
【解析】带有具体编号的学生是一个具体实体,不是同类对象的集合。
二、简答题(共5题,每题6分,共30分)
1.阅读下面的学生选课数据库结构,回答实体、属性、记录和联系问题。
CREATE TABLE Students (
StudentID TEXT(10) PRIMARY KEY,
StudentName TEXT(20),
ClassID TEXT(5)
);
CREATE TABLE Courses (
CourseID TEXT(10) PRIMARY KEY,
CourseName TEXT(30)
);
CREATE TABLE Enrollment (
StudentID TEXT(10),
CourseID TEXT(10),
Score DOUBLE,
PRIMARY KEY (StudentID, CourseID)
);
INSERT INTO Students VALUES ('S01', '林晓', 'C01');
INSERT INTO Courses VALUES ('C01', '数据库应用');
指出三个表分别表示什么;写出两个属性、一个具体实体实例和Enrollment表中Score的含义。
【答案】
Students和Courses分别表示学生、课程实体集,Enrollment表示选课联系;StudentName和ClassID是属性;S01对应一名具体学生实体;Score表示该学生选修该课程时的成绩。
表对应实体集或联系集,列对应属性,行对应具体记录;学生和课程之间是多对多联系,因此用Enrollment保存两端编号及联系属性。
2.阅读下面的关系表和样例记录,按数据库术语完成说明。
CREATE TABLE Reader (
ReaderID TEXT(10) PRIMARY KEY,
ReaderName TEXT(20)
);
CREATE TABLE Book (
BookID TEXT(10) PRIMARY KEY,
BookName TEXT(40)
);
CREATE TABLE Borrow (
ReaderID TEXT(10),
BookID TEXT(10),
BorrowDate DATETIME,
ReturnDate DATETIME
);
INSERT INTO Reader VALUES ('R01', '周宁');
INSERT INTO Book VALUES ('B01', '数据库基础');
说明Reader、Book和Borrow的对象含义,并指出BorrowDate、ReturnDate属于实体属性还是联系属性。
【答案】
Reader保存读者实体,Book保存图书实体,Borrow保存读者与图书之间的借阅联系;两个日期描述一次借阅发生和归还的情况,属于联系属性。
借阅关系的两端对象可以重复参与多次联系,联系自身产生的日期不能放入任一端的实体表。
3.根据下面的选课表结构,区分字段、字段值、记录、实体集和联系。
CREATE TABLE Students (
StudentID TEXT(10) PRIMARY KEY,
StudentName TEXT(20),
ClassID TEXT(5)
);
INSERT INTO Students VALUES ('S01', '林晓', 'C01');
INSERT INTO Students VALUES ('S02', '陈宇', 'C02');
SELECT StudentID, StudentName, ClassID
FROM Students
ORDER BY StudentID;
分别举例说明一个字段、一个字段值、一条记录和一个实体集;再说明上面的查询是否改变Students表中的记录。
【答案】
StudentName是字段,林晓是字段值,S01、林晓、C01组成一条记录,全体学生组成学生实体集;SELECT只读取并显示数据,不改变表中记录。
字段是列,字段值是单个数据项,记录是同一行字段值的组合,实体集是同类实体的集合;查询属于对数据的读取操作。
4.某图书馆需要表示读者、图书及借阅关系,请结合代码说明实体之间的关系。
CREATE TABLE Readers (
ReaderID TEXT(10) PRIMARY KEY,
ReaderName TEXT(20) NOT NULL
);
CREATE TABLE Books (
BookID TEXT(10) PRIMARY KEY,
BookName TEXT(40) NOT NULL
);
CREATE TABLE Borrow (
ReaderID TEXT(10),
BookID TEXT(10),
BorrowDate DATETIME,
ReturnDate DATETIME,
PRIMARY KEY (ReaderID, BookID, BorrowDate)
);
INSERT INTO Readers VALUES ('R01', '周宁');
INSERT INTO Books VALUES ('B01', '数据库基础');
判断Readers与Books的联系类型,并说明为什么Borrow表需要保存ReaderID、BookID以及日期信息。
【答案】
一个读者可以借阅多本图书,一本图书也可被多个读者借阅,二者是多对多联系;Borrow保存两端主键和每次借阅的时间,复合主键可区分同一读者在不同时间发生的借阅记录。
独立对象放入实体表,多对多联系转换为联系表;借阅日期描述一次借阅事件,不属于读者或图书的固定属性。
5.某校将学生选课业务拆成三张关系表,请分析这种设计的合理性。
CREATE TABLE Students (
StudentID TEXT(10) PRIMARY KEY,
StudentName TEXT(20),
ClassID TEXT(5)
);
CREATE TABLE Courses (
CourseID TEXT(10) PRIMARY KEY,
CourseName TEXT(30),
Credit INTEGER
);
CREATE TABLE Enrollments (
StudentID TEXT(10),
CourseID TEXT(10),
EnrollDate DATETIME,
Score DOUBLE,
PRIMARY KEY (StudentID, CourseID)
);
INSERT INTO Students VALUES ('S01', '林晓', 'C01');
INSERT INTO Courses VALUES ('C01', '数据库应用', 3);
INSERT INTO Enrollments VALUES ('S01', 'C01', #2026-03-01#, 86);
说明三张表分别保存什么内容,并指出EnrollDate和Score为什么放在Enrollments表中。
【答案】
Students和Courses保存两个实体集,Enrollments保存学生与课程之间的选课联系;选课日期和成绩随某一次选课而变化,是联系属性,放在联系表中可以减少重复并保持结构清晰。
拆表依据是业务对象和对象之间的联系;联系属性不能因为字段属于某个对象就随意放入实体表。
三、案例分析题(共1题,共10分)
1.某校建立学生选课数据库,现有设计把多个课程编号放在Students表中。请分析实体、属性和联系,并改正结构。
【答案】
CREATE TABLE Students (
StudentID TEXT(10) PRIMARY KEY,
StudentName TEXT(20),
CourseIDs TEXT(100)
);
CREATE TABLE Courses (
CourseID TEXT(10) PRIMARY KEY,
CourseName TEXT(30),
TeacherName TEXT(20)
);
INSERT INTO Students VALUES ('S01', '林晓', 'C01,C02');
INSERT INTO Courses VALUES ('C01', '数据库应用', '王老师');
INSERT INTO Courses VALUES ('C02', '程序设计', '李老师');
SELECT StudentID, StudentName, CourseIDs
FROM Students;
请完成:①指出CourseIDs设计的问题;②写出Enrollment联系表;③说明两类实体、联系和联系属性。
CREATE TABLE Enrollment (
StudentID TEXT(10),
CourseID TEXT(10),
EnrollDate DATETIME,
Score DOUBLE,
PRIMARY KEY (StudentID, CourseID)
);
INSERT INTO Enrollment VALUES ('S01', 'C01', #2026-03-01#, 86);
INSERT INTO Enrollment VALUES ('S01', 'C02', #2026-03-02#, 91);
CourseIDs把多个值放在一个字段中,不能规范表示多对多联系;Students和Courses是实体集,Enrollment保存选课联系,EnrollDate和Score是联系属性。
四、综合应用题(共1题,共10分)
1.完成一个学生选课数据库的概念模型和关系表设计,并用查询验证实体、联系和样例数据。
【答案】
CREATE TABLE Students (
StudentID TEXT(10),
StudentName TEXT(20),
ClassID TEXT(5)
);
CREATE TABLE Courses (
CourseID TEXT(10),
CourseName TEXT(30),
Credit INTEGER
);
CREATE TABLE Enrollment (
StudentID TEXT(10),
CourseID TEXT(10),
EnrollDate DATETIME,
Score DOUBLE
);
学生:S01 林晓 C01;S02 陈宇 C02
课程:C01 数据库应用 3;C02 程序设计 4
选课:S01-C01 2026-03-01 86;S01-C02 2026-03-02 91
任务:
①建立Students、Courses、Enrollment三张表;
②设置主键、字段类型和联系表复合主键;
③录入两名学生、两门课程和两条选课记录;
④查询学生姓名、课程名称和成绩,验证多对多联系;
⑤说明表、字段、记录、实体集和联系的对应关系。
要求各语句按建表、录入、查询顺序书写,并保证查询结果能够区分两条选课记录。
CREATE TABLE Students (
StudentID TEXT(10) PRIMARY KEY,
StudentName TEXT(20) NOT NULL,
ClassID TEXT(5) NOT NULL
);
CREATE TABLE Courses (
CourseID TEXT(10) PRIMARY KEY,
CourseName TEXT(30) NOT NULL,
Credit INTEGER
);
CREATE TABLE Enrollment (
StudentID TEXT(10),
CourseID TEXT(10),
EnrollDate DATETIME,
Score DOUBLE,
PRIMARY KEY (StudentID, CourseID)
);
INSERT INTO Students VALUES ('S01', '林晓', 'C01');
INSERT INTO Students VALUES ('S02', '陈宇', 'C02');
INSERT INTO Courses VALUES ('C01', '数据库应用', 3);
INSERT INTO Courses VALUES ('C02', '程序设计', 4);
INSERT INTO Enrollment VALUES ('S01', 'C01', #2026-03-01#, 86);
INSERT INTO Enrollment VALUES ('S01', 'C02', #2026-03-02#, 91);
SELECT s.StudentName, c.CourseName, e.EnrollDate, e.Score
FROM (Students AS s INNER JOIN Enrollment AS e
ON s.StudentID = e.StudentID)
INNER JOIN Courses AS c
ON e.CourseID = c.CourseID
ORDER BY s.StudentID, e.Score DESC;
Students和Courses是实体集,Enrollment是学生与课程的多对多联系表;StudentID、CourseID等是属性,表中每行是记录;查询结果应显示林晓对应的两门课程及成绩。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。
本试卷是第57卷,为专题训练卷,按“数据库基础知识”专题范围和要求编写。具体内容为:(1)理解数据库的有关概念。(2)了解实体、属性和实体集的概念及实体之间的关系;(3)理解数据模型的基本知识。(4)了解Access数据库的基本对象。
山东省春季高考统一考试
软件与应用技术类《考纲百套卷》
第57卷 专题训练——数据库基础知识
(考试时间:45分钟 满分:100分)
一、选择题(共25题,每题2分,共50分)
1.某校要保存学生的学号、姓名和班级信息,最适合采用的组织方式是( )
A.把每名学生保存为一张独立数据库
B.把全部信息写入同一个长文本段
C.只保存学生姓名而不保存标识
D.按字段和记录组织的关系表
2.在“学生选课”场景中,学生和课程分别属于( )
A.两个属性
B.两条记录
C.两个查询条件
D.两个实体集
3.“学号为S08的学生”在概念上更接近( )
A.一个具体实体
B.一个实体集
C.一个属性名称
D.一种联系类型
4.“联系电话”用于描述某名学生的特征,它属于学生实体的( )
A.属性
B.实体集
C.记录
D.联系
5.“本学期所有选修数据库课程的学生”表示的是( )
A.一个单独实体
B.一组同类对象
C.一个字段值
D.一条联系记录
6.一个学院下设多个专业,每个专业只属于一个学院,该联系属于( )
A.一对一
B.多对多
C.一对多
D.无联系
7.一名员工对应一个工位,一个工位也只安排一名员工,属于( )联系
A.一对多
B.多对多
C.一对一
D.多对一
8.在图书馆场景中,读者和图书通常形成多对多联系,是因为( )
A.每本图书只能借出一次
B.双方没有业务联系
C.双方都可对应多个对象
D.读者只能借一本图书
9.若要保证“课程编号”在课程表中不重复,通常应将其设置为( )
A.备注字段
B.普通文本说明
C.主键字段
D.显示格式字段
10.在员工表中,下面更适合用于唯一标识员工的是( )
A.姓名
B.员工编号
C.入职年份
D.部门名称
11.在关系表中,“联系电话”这一列主要用于表示( )
A.全部学生实体集
B.学生与班级的联系
C.实体的一个属性
D.整张表的记录集合
12.在“订单”表中,一行包含订单号、日期和金额,这一行表示( )
A.一个订单实体集
B.一个金额属性
C.一种表间联系
D.一条订单记录
13.“教师”作为学校管理系统中的独立对象类别,通常建模为( )
A.属性值
B.字段格式
C.实体
D.查询结果
14.“全体教师”在概念模型中表示( )
A.一个教师实体
B.教师的一个属性
C.教师表中的一条记录
D.教师实体集
15.一个社团有多名成员,而每名成员可参加多个社团,社团与成员属于( )
A.多对多
B.一对多
C.一对一
D.没有联系
16.下列哪一项是“图书”实体的属性( )
A.图书馆全部图书
B.读者借阅图书
C.图书与读者的联系
D.图书名称
17.下列对象中,属于“课程”实体集的是( )
A.本学期全部课程
B.课程号C01对应的一门课
C.课程名称
D.学生选修课程的行为
18.把读者与图书之间的多对多联系转换为关系表时,通常应( )
A.删除读者实体集
B.建立借阅表保存两端编号
C.把所有信息合并成一个字段
D.只保留图书名称而不保存标识
19.在数据库概念设计阶段,分析实体、属性和联系的主要成果是( )
A.打印版式
B.记录排序结果
C.概念模型
D.用户登录界面
20.关于实体、属性、实体集和联系的说法,正确的是( )
A.实体表示集合,属性表示对象,联系表示字段
B.四者分别表示对象、特征、集合和对象关联
C.实体集表示单个对象,属性表示对象之间的关系
D.联系表示对象特征,属性表示同类对象的集合
21.关系表中Student表的一行数据通常表示( )
A.一个学生实体实例
B.学生实体集
C.学生姓名属性
D.学生与课程的联系
22.Access数据库中,表、查询、窗体和报表通常统称为( )
A.数据表中的记录
B.数据库中的对象
C.数据表中的字段
D.实体之间的联系
23.学生和课程之间的“选课”在概念模型中表示( )
A.学生与课程的联系
B.学生实体的一项属性
C.课程实体的一项属性
D.一条普通选课记录
24.关系表中的一列通常称为( )
A.记录
B.字段
C.实体集
D.联系实例
25.概念模型中,编号为S01的某名学生属于( )
A.一个具体实体
B.一个实体集
C.一个属性名称
D.一种联系类型
二、简答题(共5题,每题6分,共30分)
1.阅读下面的学生选课数据库结构,回答实体、属性、记录和联系问题。
CREATE TABLE Students (
StudentID TEXT(10) PRIMARY KEY,
StudentName TEXT(20),
ClassID TEXT(5)
);
CREATE TABLE Courses (
CourseID TEXT(10) PRIMARY KEY,
CourseName TEXT(30)
);
CREATE TABLE Enrollment (
StudentID TEXT(10),
CourseID TEXT(10),
Score DOUBLE,
PRIMARY KEY (StudentID, CourseID)
);
INSERT INTO Students VALUES ('S01', '林晓', 'C01');
INSERT INTO Courses VALUES ('C01', '数据库应用');
指出三个表分别表示什么;写出两个属性、一个具体实体实例和Enrollment表中Score的含义。
表对应实体集或联系集,列对应属性,行对应具体记录;学生和课程之间是多对多联系,因此用Enrollment保存两端编号及联系属性。
2.阅读下面的关系表和样例记录,按数据库术语完成说明。
CREATE TABLE Reader (
ReaderID TEXT(10) PRIMARY KEY,
ReaderName TEXT(20)
);
CREATE TABLE Book (
BookID TEXT(10) PRIMARY KEY,
BookName TEXT(40)
);
CREATE TABLE Borrow (
ReaderID TEXT(10),
BookID TEXT(10),
BorrowDate DATETIME,
ReturnDate DATETIME
);
INSERT INTO Reader VALUES ('R01', '周宁');
INSERT INTO Book VALUES ('B01', '数据库基础');
说明Reader、Book和Borrow的对象含义,并指出BorrowDate、ReturnDate属于实体属性还是联系属性。
借阅关系的两端对象可以重复参与多次联系,联系自身产生的日期不能放入任一端的实体表。
3.根据下面的选课表结构,区分字段、字段值、记录、实体集和联系。
CREATE TABLE Students (
StudentID TEXT(10) PRIMARY KEY,
StudentName TEXT(20),
ClassID TEXT(5)
);
INSERT INTO Students VALUES ('S01', '林晓', 'C01');
INSERT INTO Students VALUES ('S02', '陈宇', 'C02');
SELECT StudentID, StudentName, ClassID
FROM Students
ORDER BY StudentID;
分别举例说明一个字段、一个字段值、一条记录和一个实体集;再说明上面的查询是否改变Students表中的记录。
字段是列,字段值是单个数据项,记录是同一行字段值的组合,实体集是同类实体的集合;查询属于对数据的读取操作。
4.某图书馆需要表示读者、图书及借阅关系,请结合代码说明实体之间的关系。
CREATE TABLE Readers (
ReaderID TEXT(10) PRIMARY KEY,
ReaderName TEXT(20) NOT NULL
);
CREATE TABLE Books (
BookID TEXT(10) PRIMARY KEY,
BookName TEXT(40) NOT NULL
);
CREATE TABLE Borrow (
ReaderID TEXT(10),
BookID TEXT(10),
BorrowDate DATETIME,
ReturnDate DATETIME,
PRIMARY KEY (ReaderID, BookID, BorrowDate)
);
INSERT INTO Readers VALUES ('R01', '周宁');
INSERT INTO Books VALUES ('B01', '数据库基础');
判断Readers与Books的联系类型,并说明为什么Borrow表需要保存ReaderID、BookID以及日期信息。
独立对象放入实体表,多对多联系转换为联系表;借阅日期描述一次借阅事件,不属于读者或图书的固定属性。
5.某校将学生选课业务拆成三张关系表,请分析这种设计的合理性。
CREATE TABLE Students (
StudentID TEXT(10) PRIMARY KEY,
StudentName TEXT(20),
ClassID TEXT(5)
);
CREATE TABLE Courses (
CourseID TEXT(10) PRIMARY KEY,
CourseName TEXT(30),
Credit INTEGER
);
CREATE TABLE Enrollments (
StudentID TEXT(10),
CourseID TEXT(10),
EnrollDate DATETIME,
Score DOUBLE,
PRIMARY KEY (StudentID, CourseID)
);
INSERT INTO Students VALUES ('S01', '林晓', 'C01');
INSERT INTO Courses VALUES ('C01', '数据库应用', 3);
INSERT INTO Enrollments VALUES ('S01', 'C01', #2026-03-01#, 86);
说明三张表分别保存什么内容,并指出EnrollDate和Score为什么放在Enrollments表中。
拆表依据是业务对象和对象之间的联系;联系属性不能因为字段属于某个对象就随意放入实体表。
三、案例分析题(共1题,共10分)
1.某校建立学生选课数据库,现有设计把多个课程编号放在Students表中。请分析实体、属性和联系,并改正结构。
CREATE TABLE Enrollment (
StudentID TEXT(10),
CourseID TEXT(10),
EnrollDate DATETIME,
Score DOUBLE,
PRIMARY KEY (StudentID, CourseID)
);
INSERT INTO Enrollment VALUES ('S01', 'C01', #2026-03-01#, 86);
INSERT INTO Enrollment VALUES ('S01', 'C02', #2026-03-02#, 91);
CourseIDs把多个值放在一个字段中,不能规范表示多对多联系;Students和Courses是实体集,Enrollment保存选课联系,EnrollDate和Score是联系属性。
四、综合应用题(共1题,共10分)
1.完成一个学生选课数据库的概念模型和关系表设计,并用查询验证实体、联系和样例数据。
CREATE TABLE Students (
StudentID TEXT(10) PRIMARY KEY,
StudentName TEXT(20) NOT NULL,
ClassID TEXT(5) NOT NULL
);
CREATE TABLE Courses (
CourseID TEXT(10) PRIMARY KEY,
CourseName TEXT(30) NOT NULL,
Credit INTEGER
);
CREATE TABLE Enrollment (
StudentID TEXT(10),
CourseID TEXT(10),
EnrollDate DATETIME,
Score DOUBLE,
PRIMARY KEY (StudentID, CourseID)
);
INSERT INTO Students VALUES ('S01', '林晓', 'C01');
INSERT INTO Students VALUES ('S02', '陈宇', 'C02');
INSERT INTO Courses VALUES ('C01', '数据库应用', 3);
INSERT INTO Courses VALUES ('C02', '程序设计', 4);
INSERT INTO Enrollment VALUES ('S01', 'C01', #2026-03-01#, 86);
INSERT INTO Enrollment VALUES ('S01', 'C02', #2026-03-02#, 91);
SELECT s.StudentName, c.CourseName, e.EnrollDate, e.Score
FROM (Students AS s INNER JOIN Enrollment AS e
ON s.StudentID = e.StudentID)
INNER JOIN Courses AS c
ON e.CourseID = c.CourseID
ORDER BY s.StudentID, e.Score DESC;
Students和Courses是实体集,Enrollment是学生与课程的多对多联系表;StudentID、CourseID等是属性,表中每行是记录;查询结果应显示林晓对应的两门课程及成绩。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$