数据库原理习题课
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库原理习题课
郑州大学
大纲
设计E-R图 SQL语句及关系代数
设计E-R图
设计E-R图 根据题目给定条件,分析实体和联系,设计E-R图。 解题思路 第一步、根据题意,找出(强弱)实体集及各自属性与关键字(码)。 第二步、根据题意,找出实体集间的两两联系,确定联系类型。 第三步、根据题意,判断是否需要表明参与度。
(1)确定实体集
工商银行有许多支行,每个具有唯一的名称,拥有一定的资产,坐落在某个城市的某条街道上。 银行要记录每位客户的客户标识(如身份证号)、客户名、客户地址、联系电话等信息。 存款账户需要存放账号和存款余额等信息; 每笔贷款需要登记贷款号、贷款日期和贷款金额。
名称
资产
地址
支行
账号
存款 余额
登记日期
存款金额
N
存取
1
N
存款账户
业务
N
N
支行
属于
1
客户
N
1
业务
N
贷款
1
借贷
(3)确定参与度
存款账户-支行:账户与支行之间的多对一联系,其中账户全部参与。 贷款-支行:贷款与支行之间的多对一联系,其中贷款全部参与。 借贷-客户:客户与贷款之间的多对一联系,其中贷款全部参与。 在的多对一关系中,所有1端变为箭头,全部参与的变为N端变为双线
关系代数: (π学号(学生)-π学号( 课程号=‘C135’ (学习))) (π学号,姓名,专业(学生)
例一
分别用关系代数表达式和SQL语句实现下列1—5 5.检索至少学过课程号为“C135”和“C219”的课程的学生的信息,
包括学号、姓名和专业。
SQL语句:
SELECT 学号,姓名,专业 FROM 学生 WHERE 学号 IN (SELECT X1.学号 FROM 学习 X1,学习 X2 WHERE X1.学 号=X2.学号 AND X1.课程号=‘C135’AND X2.课程号=‘C219’)
例一
某工厂生产多种产品,每种产品由不同的零件组装而成,有的零件可 用在不同的产品上。产品有产品号和产品名两个属性,零件有零件号 和零件名两个属性。根据语义设计E-R模型,并将E-R模型转换成关 系模式,要求关系模式主码加下划线表示。
产品号
产品名
零件号
零件名
产品 m
组装
n
零件
产品(产品号,产品名) 零件(零件号,零件名) 组装(产品号,零件号)
SQL语句及关系代数
关系代数
关系代数是过程化查询语言,研究关系数据库语言的数学建模工具。
关系代数的运算对象是关系(表),运算结果亦为关系(表)。
主要包括选择、投影、并、差和笛卡尔积。还会用到交、除、(等值)连接和自然连接。
所有关系运算都可以用选择运算和投影运算表示。
关系运算形式化
(运算符号)(属性)((条件范围)关系): π学号,分数( 课程号=’C112’(学习)) π学号,姓名,课程名,分数(π学号,姓名( 专业=’英语’(学生))
登记日期
存款金额
支行
业务 业务
存款账户 贷款
存取 属于
借贷
客户
SQL语句及关系代数
SQL语句 sql 语句就是对数据库进行操作的一种语言。 主要操作是选择、插入、删除和更新:
选择:select * from table1 where 条件范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 条件范围 更新:update table1 set field1=value1 where 条件范围
专业=’英语’
关系代数:
π学号,姓名,课程名,分数(π学号,姓名( 专业=’英语’(学生)) (课程))
学习 π课程号,课程名
π学号,姓名,课程名,分数(专业=’英语’(学生 学习 课程))
例一
分别用关系代数表达式和SQL语句实现下列1—5
3.检索“数据库原理”课程成绩高于90分的所有学生的学号、姓名、 专业和分数;
关系代数:
(π学号,课程号(学习)÷π课程号( 课程号=‘C135’∨课程号=‘C219’ (课程))) 姓名,专业(学生)
π学号,
关系代数: π学号,分数( 课程号=’C112’(学习))
例一
分别用关系代数表达式和SQL语句实现下列1—5
2.检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名 和分数;
SQL语句:
SELECT 学生.学号,姓名,课程名,分数
FROM 学生,学习,课程
WHERE 学习.学号=学生.学号 AND 学习.课程号=课程.课程号 AND
存款账户
客户名
客户 标识
客户 地址
联系 电话
客户
贷款号
贷款 日期
贷Biblioteka Baidu 金额
贷款
(2)确定联系及其类型
银行的主要业务是办理客户的存款和贷款。 每位客户可以有多个存款账户,并可以多次存取;每次存取款需要登记日期和存取款金额。 一位客户可以多次贷款,但每笔贷款只能贷给一个客户。 每笔贷款海域特定的支行相关联。
其中,选择操作是最常用且复杂的操作。
连接查询
Select * from table1 table2 where table1.X = table2.X and 条件范围 X是联系两个表的属性,一般是表的主码或外码。
嵌套查询
Select * from table1 where XX in (select XX from table1 where 条件范围) 括号内搜索的XX属性的结果作为外面搜索的条件
SQL语句:
SELECT 学生.学号,姓名,专业,分数
FROM 学生,学习,课程
WHERE 学生.学号=学习.学号 AND 学习.课程号=课程.课程号
AND分数>90 AND 课程名=‘数据库原理’
关系代数:
π学号,姓名,专业,分数(π学号,姓名,专业(学生) 号,课程名( 课程名=’数据库原理’(课程)))
例二
工商银行有许多支行,每个具有唯一的名称,拥有一定的资产,坐落 在某个城市的某条街道上。银行要记录每位客户的客户标识(如身份 证号)、客户名、客户地址、联系电话等信息。银行的主要业务是办 理客户的存款和贷款。每位客户可以有多个存款账户,并可以多次存 取;存款账户需要存放账号和存款余额等信息;每次存取款需要登记 日期和存取款金额。一位客户可以多次贷款,但每笔贷款只能贷给一 个客户。每笔贷款海域特定的支行相关联。每笔贷款需要登记贷款号 、贷款日期和贷款金额。
学习 π课程号,课程名(课程))
解题思路
先看查询属性 从属性找表 依据限制条件范围
相同表内限制的同层(where and) 不同表内限制的分层(where in)
例一
分别用关系代数表达式和SQL语句实现下列1—5 1.检索所有选修了课程号为“C112”的课程的学生的学号和分数;
SQL语句: SELECT 学号,分数 FROM 学习 WHERE 课程号=’C112’
( 分数>90(学习)) π课程
例一
分别用关系代数表达式和SQL语句实现下列1—5 4.检索没学课程号为“C135”课程的学生信息,包括学号,姓名和专
业;
SQL语句: SELECT 学号,姓名,专业 FROM 学生 WHERE 学号 NOT IN (SELECT 学号 FROM 学习 WHERE 课程号=‘C135’)
郑州大学
大纲
设计E-R图 SQL语句及关系代数
设计E-R图
设计E-R图 根据题目给定条件,分析实体和联系,设计E-R图。 解题思路 第一步、根据题意,找出(强弱)实体集及各自属性与关键字(码)。 第二步、根据题意,找出实体集间的两两联系,确定联系类型。 第三步、根据题意,判断是否需要表明参与度。
(1)确定实体集
工商银行有许多支行,每个具有唯一的名称,拥有一定的资产,坐落在某个城市的某条街道上。 银行要记录每位客户的客户标识(如身份证号)、客户名、客户地址、联系电话等信息。 存款账户需要存放账号和存款余额等信息; 每笔贷款需要登记贷款号、贷款日期和贷款金额。
名称
资产
地址
支行
账号
存款 余额
登记日期
存款金额
N
存取
1
N
存款账户
业务
N
N
支行
属于
1
客户
N
1
业务
N
贷款
1
借贷
(3)确定参与度
存款账户-支行:账户与支行之间的多对一联系,其中账户全部参与。 贷款-支行:贷款与支行之间的多对一联系,其中贷款全部参与。 借贷-客户:客户与贷款之间的多对一联系,其中贷款全部参与。 在的多对一关系中,所有1端变为箭头,全部参与的变为N端变为双线
关系代数: (π学号(学生)-π学号( 课程号=‘C135’ (学习))) (π学号,姓名,专业(学生)
例一
分别用关系代数表达式和SQL语句实现下列1—5 5.检索至少学过课程号为“C135”和“C219”的课程的学生的信息,
包括学号、姓名和专业。
SQL语句:
SELECT 学号,姓名,专业 FROM 学生 WHERE 学号 IN (SELECT X1.学号 FROM 学习 X1,学习 X2 WHERE X1.学 号=X2.学号 AND X1.课程号=‘C135’AND X2.课程号=‘C219’)
例一
某工厂生产多种产品,每种产品由不同的零件组装而成,有的零件可 用在不同的产品上。产品有产品号和产品名两个属性,零件有零件号 和零件名两个属性。根据语义设计E-R模型,并将E-R模型转换成关 系模式,要求关系模式主码加下划线表示。
产品号
产品名
零件号
零件名
产品 m
组装
n
零件
产品(产品号,产品名) 零件(零件号,零件名) 组装(产品号,零件号)
SQL语句及关系代数
关系代数
关系代数是过程化查询语言,研究关系数据库语言的数学建模工具。
关系代数的运算对象是关系(表),运算结果亦为关系(表)。
主要包括选择、投影、并、差和笛卡尔积。还会用到交、除、(等值)连接和自然连接。
所有关系运算都可以用选择运算和投影运算表示。
关系运算形式化
(运算符号)(属性)((条件范围)关系): π学号,分数( 课程号=’C112’(学习)) π学号,姓名,课程名,分数(π学号,姓名( 专业=’英语’(学生))
登记日期
存款金额
支行
业务 业务
存款账户 贷款
存取 属于
借贷
客户
SQL语句及关系代数
SQL语句 sql 语句就是对数据库进行操作的一种语言。 主要操作是选择、插入、删除和更新:
选择:select * from table1 where 条件范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 条件范围 更新:update table1 set field1=value1 where 条件范围
专业=’英语’
关系代数:
π学号,姓名,课程名,分数(π学号,姓名( 专业=’英语’(学生)) (课程))
学习 π课程号,课程名
π学号,姓名,课程名,分数(专业=’英语’(学生 学习 课程))
例一
分别用关系代数表达式和SQL语句实现下列1—5
3.检索“数据库原理”课程成绩高于90分的所有学生的学号、姓名、 专业和分数;
关系代数:
(π学号,课程号(学习)÷π课程号( 课程号=‘C135’∨课程号=‘C219’ (课程))) 姓名,专业(学生)
π学号,
关系代数: π学号,分数( 课程号=’C112’(学习))
例一
分别用关系代数表达式和SQL语句实现下列1—5
2.检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名 和分数;
SQL语句:
SELECT 学生.学号,姓名,课程名,分数
FROM 学生,学习,课程
WHERE 学习.学号=学生.学号 AND 学习.课程号=课程.课程号 AND
存款账户
客户名
客户 标识
客户 地址
联系 电话
客户
贷款号
贷款 日期
贷Biblioteka Baidu 金额
贷款
(2)确定联系及其类型
银行的主要业务是办理客户的存款和贷款。 每位客户可以有多个存款账户,并可以多次存取;每次存取款需要登记日期和存取款金额。 一位客户可以多次贷款,但每笔贷款只能贷给一个客户。 每笔贷款海域特定的支行相关联。
其中,选择操作是最常用且复杂的操作。
连接查询
Select * from table1 table2 where table1.X = table2.X and 条件范围 X是联系两个表的属性,一般是表的主码或外码。
嵌套查询
Select * from table1 where XX in (select XX from table1 where 条件范围) 括号内搜索的XX属性的结果作为外面搜索的条件
SQL语句:
SELECT 学生.学号,姓名,专业,分数
FROM 学生,学习,课程
WHERE 学生.学号=学习.学号 AND 学习.课程号=课程.课程号
AND分数>90 AND 课程名=‘数据库原理’
关系代数:
π学号,姓名,专业,分数(π学号,姓名,专业(学生) 号,课程名( 课程名=’数据库原理’(课程)))
例二
工商银行有许多支行,每个具有唯一的名称,拥有一定的资产,坐落 在某个城市的某条街道上。银行要记录每位客户的客户标识(如身份 证号)、客户名、客户地址、联系电话等信息。银行的主要业务是办 理客户的存款和贷款。每位客户可以有多个存款账户,并可以多次存 取;存款账户需要存放账号和存款余额等信息;每次存取款需要登记 日期和存取款金额。一位客户可以多次贷款,但每笔贷款只能贷给一 个客户。每笔贷款海域特定的支行相关联。每笔贷款需要登记贷款号 、贷款日期和贷款金额。
学习 π课程号,课程名(课程))
解题思路
先看查询属性 从属性找表 依据限制条件范围
相同表内限制的同层(where and) 不同表内限制的分层(where in)
例一
分别用关系代数表达式和SQL语句实现下列1—5 1.检索所有选修了课程号为“C112”的课程的学生的学号和分数;
SQL语句: SELECT 学号,分数 FROM 学习 WHERE 课程号=’C112’
( 分数>90(学习)) π课程
例一
分别用关系代数表达式和SQL语句实现下列1—5 4.检索没学课程号为“C135”课程的学生信息,包括学号,姓名和专
业;
SQL语句: SELECT 学号,姓名,专业 FROM 学生 WHERE 学号 NOT IN (SELECT 学号 FROM 学习 WHERE 课程号=‘C135’)