数据库原理er图设计

上传人:艾力 文档编号:35802767 上传时间:2018-03-20 格式:PDF 页数:80 大小:1.24MB
返回 下载 相关 举报
数据库原理er图设计_第1页
第1页 / 共80页
数据库原理er图设计_第2页
第2页 / 共80页
数据库原理er图设计_第3页
第3页 / 共80页
数据库原理er图设计_第4页
第4页 / 共80页
数据库原理er图设计_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《数据库原理er图设计》由会员分享,可在线阅读,更多相关《数据库原理er图设计(80页珍藏版)》请在金锄头文库上搜索。

1、ER图设计/SQL . E-R模型设计实例 第一步 确定实体集 第二步 确定实体集之间的关联集 第三步 给实体集和关联集加上属性 第四步 把实体集和关联集用E-R图表示 July 5, 2011 3 一个实例 用E-R图表示某个工厂物资管理的概念模型 实体 仓库: 仓库号、面积、电话号码 零件 :零件号、名称、规格、单价、描述 供应商:供应商号、姓名、地址、电话号码、帐号 项目:项目号、预算、开工日期 职工:职工号、姓名、年龄、职称 July 5, 2011 4 一个实例 实体之间的关联如下: (1)一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件具有多对多的关联。用库存量来

2、表示某种零件在某个仓库中的数量。 (2)一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,仓库和职工之间是一对多的关联。职工实体型中具有一对多的关联 (3)职工之间具有领导-被领导关系。即仓库主任领导若干保管员。 (4)供应商、项目和零件三者之间具有多对多的关联 July 5, 2011 5 一个实例 逐一设计分E-R图(续) 实例销售管理子系统分实例销售管理子系统分E-R图的设计图的设计 销售管理子系统的主要功能: 处理顾客和销售员送来的订单 工厂是根据订货安排生产的 交出货物同时开出发票 收到顾客付款后,根据发票存根和信贷情况进行应 收款处理 逐一设计分E-R图(续) 下图是第一

3、层数据流图,虚线部分划出了系统边界 图7.18 销售管理子系统第一层数据流图 逐一设计分E-R图(续) 上图中把系统功能又分为4个子系统,下面四个图是第二层数据流图 图7.19 接收订单 逐一设计分E-R图(续) 图7.20 处理订单 逐一设计分E-R图(续) 图7.21 开发票 逐一设计分E-R图(续) 图7.22 支付过账 逐一设计分E-R图(续) 分E-R图的框架 逐一设计分E-R图(续) 参照第二层数据流图和数据字典,遵循两个准则,进行如下调整: (1) 订单与订单细节是1n的联系 (2) 原订单和产品的联系实际上是订单细节和产品的联系。 (3) 图7.21中“发票主清单”是一个数据存

4、储,不必作为实体加入分E-R图 (4) 工厂对大宗订货给予优惠 逐一设计分E-R图(续) 得到分E-R图如下图所示 销售管理子系统的分E-R图 逐一设计分E-R图(续) 对每个实体定义的属性如下: 顾客:顾客号,顾客名,地址,电话,信贷状况,账目余额 订单:订单号,顾客号,订货项数,订货日期,交货日期,工种 号,生产地点 订单细则:订单号,细则号,零件号,订货数,金额 应收账款:顾客号,订单号,发票号,应收金额,支付日期,支 付金额,当前余额,货款限额 产品描述:产品号,产品名,单价,重量 折扣规则:产品号,订货量,折扣 4.4 数据查询 4.4.1 单表查询单表查询 4.4.2 连接查询连接

5、查询 4.4.3 嵌套查询嵌套查询 4.4.4 集合查询集合查询 4.4.5 Select语句的一般形式语句的一般形式 4.4.1 单表查询 查询仅涉及一个表: 一、 选择表中的若干列 二、 选择表中的若干元组 三、 ORDER BY子句 四、 聚集函数 五、 GROUP BY子句 一、 选择表中的若干列 查询指定列 例1 查询全体学生的学号与姓名。 SELECT Sno,Sname FROM Student; 例2 查询全体学生的姓名、学号、所在系。 SELECT Sname,Sno,Sdept FROM Student; 2. 查询全部列 选出所有属性列: 在SELECT关键字后面列出所有

6、列名 将指定为 * 例3 查询全体学生的详细记录。 SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或 SELECT * FROM Student; 3. 查询经过计算的值 SELECT子句的可以为: 算术表达式 字符串常量 函数 列别名 例4 查全体学生的姓名及其出生年份。 SELECT Sname,2004-Sage /*假定当年的年份为2004年*/ FROM Student; 输出结果:输出结果: Sname 2004-Sage 李勇 1984 刘晨 1985 王敏 1986 张立 1985 查询经过计算的值(续) 查询经过计算的值(续)

7、例5 查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名 SELECT Sname,Year of Birth: ,2004-Sage, ISLOWER(Sdept) FROM Student; 输出结果:输出结果: Sname Year of Birth: 2004-Sage ISLOWER(Sdept) 李勇 Year of Birth: 1984 cs 刘晨 Year of Birth: 1985 is 王敏 Year of Birth: 1986 ma 张立 Year of Birth: 1985 is 查询经过计算的值(续) 使用列别名改变查询结果的列标题: SELEC

8、T Sname NAME,Year of Birth: BIRTH, 2004-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Student; 输出结果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇 Year of Birth: 1984 cs 刘晨 Year of Birth: 1985 is 王敏 Year of Birth: 1986 ma 张立 Year of Birth: 1985 is 4.4.1 单表查询 查询仅涉及一个表: 一、 选择表中的若干列 二、 选择表中的若干元组 三、 ORDER BY子句

9、 四、 聚集函数 五、 GROUP BY子句 二、选择表中的若干元组 1. 消除取值重复的行 如果没有指定DISTINCT关键词,则缺省为ALL 例6 查询选修了课程的学生学号。 SELECT Sno FROM SC; 等价于: SELECT ALL Sno FROM SC; 执行上面的SELECT语句后,结果为: Sno 200215121 200215121 200215121 200215122 200215122 消除取值重复的行(续) 指定DISTINCT关键词,去掉表中重复的行 SELECT DISTINCT Sno FROM SC; 执行结果: Sno 200215121 200

10、215122 2.查询满足条件的元组 查 询 条 件 谓 词 比 较 =,=,!,!, NOT IN 例12查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性 别。 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( IS,MA,CS ); 例13查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。 SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN ( IS,MA,CS ); (4)字符匹配 谓词:谓词: NOT LIKE ESCAPE 1)匹配串为固定字符串 例14

11、查询学号为200215121的学生的详细情况。 SELECT * FROM Student WHERE Sno LIKE 200215121; 等价于: SELECT * FROM Student WHERE Sno = 200215121 ; 字符匹配(续) 2) 匹配串为含通配符的字符串 例15 查询所有姓刘学生的姓名、学号和性别。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 刘%; 例16 查询姓“欧阳“且全名为三个汉字的学生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 欧阳_;

12、 字符匹配(续) 例17 查询名字中第2个字为“阳“字的学生的姓名和 学号。 SELECT Sname,Sno FROM Student WHERE Sname LIKE _阳%; 例18 查询所有不姓刘的学生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 刘%; 字符匹配(续) 3) 使用换码字符将通配符转义为普通字符 例19 查询DB_Design课程的课程号和学分。 SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE ; 例20 查询以“D

13、B_“开头,且倒数第3个字符为 i的课程的详细情况。 SELECT * FROM Course WHERE Cname LIKE DB_%i_ _ ESCAPE ; ESCAPE 表示表示“ ” 为换码字符为换码字符 (5) 涉及空值的查询 谓词:谓词: IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替 例21 某些学生选修课程后没有参加考试,所以有选课记录,但没 有考试成绩。查询缺少成绩的学生的学号和相应的课程号。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL 例22 查所有有成绩的学生学号和课程号。 SELECT Sno,C

14、no FROM SC WHERE Grade IS NOT NULL; (6) 多重条件查询 逻辑运算符:AND和 OR来联结多个查询条件 AND的优先级高于OR 可以用括号改变优先级 可用来实现多种其他谓词 NOT IN NOT BETWEEN AND 多重条件查询(续) 例23 查询计算机系年龄在20岁以下的学生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage) 计算总和 SUM(DISTINCT|ALL ) 计算平均值 AVG(DISTINCT|ALL ) 最大最小值 MAX(DISTINCT|ALL ) MIN(DISTINCT|ALL ) 聚集函数 (续) 例26 查询学生总人数。 SELECT COUNT(*) FROM Student; 例27 查询选修了课程的学生人数。 SELECT COUNT(DISTINCT Sno) FROM SC; 例28 计算1号课程的学生平均成绩。 SELECT AVG(Grade) FROM SC WH

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号