快捷搜索: 王者荣耀 脱发

数据库系统设计范例——座位预订系统设计

一、 系统概述

    应用场景:学校讲座座位预订系统 需求分析:学生能够预订特定讲座的座位,管理者可以查询一场讲座的座位预订情况

二、 概念模型

概念模型通过E-R来展示: 系统的E-R图

三、 关系模型

  1. 实体类型转化为关系模型 学生 (学号,姓名) 座位 (座位号) 讲座 (讲座号,标题,地点,时间)
  2. 联系转化为关系模型 学生-座位属于1:1联系,将学号加入座位中 座位 (座位号,学号) 座位-讲座属于n:1联系,将讲座号放入座位实体中 座位 (座位号,学号,讲座号)
  3. 设计范式 第一范式(属性不可再分) 学生 (学号,姓名) 座位 (座位号,学号,讲座号) 讲座 (讲座号,标题,地点,时间) 第二范式(去除非主属性对码的部分函数依赖) 学生 (学号,姓名) 座位 (座位号,学号,讲座号) 讲座 (讲座号,标题,地点,时间) 第三范式(去除非主属性对码的传递依赖) 学生 (学号,姓名) 座位 (座位号,学号,讲座号) 讲座 (讲座号,标题,地点,时间) BC范式(去除主属性对码的部分函数依赖和传递依赖) 学生 (学号,姓名) 座位 (座位号,学号,讲座号) 讲座 (讲座号,标题,地点,时间) 第四范式(去除多值依赖) 学生 (学号,姓名) 座位 (座位号,学号,讲座号) 讲座 (讲座号,标题,地点,时间)

四、 关系代数运算及SQL语句

  1. 选择运算:选出学号等于0005的学生 σ学号=005(学生) SELECT * FROM 学生 WHERE 学号=005;
  2. 投影运算:查看所有讲座的标题和时间 Π标题,时间(讲座) SELECT 标题,时间 FROM 讲座;
  3. 操作序列:查看所有在明理楼举办过的讲座的标题 Π标题(σ地点=明理楼(讲座)) SELECT 标题 FROM 讲座 WHERE 地点=‘明理楼’;
  4. 笛卡尔积操作:将关系学生和座位做笛卡尔积 学生×座位 CREATE VIEW TEST1 AS SELECT * FROM 学生,座位;
  5. 重命名操作:提取出关系讲座中的讲座号和地点属性并重命名为关系R R(讲座号,地点)←Π讲座号,地点(讲座) CREATE TABLE R AS SELECT 讲座号,地点FROM 讲座;
  6. 并操作:将讲座和R两个模式相并 讲座∪R CREATE VIEW TEST2 AS SELECT DISTINCT * FROM 讲座,R;
  7. 交操作:将讲座和R相交 讲座∩R CREATE VIEW TEST3 AS SELECT * FROM 讲座 WHERE 讲座号 IN (SELECT 讲座号 FROM R);
  8. 差操作:将讲座与R相差 讲座-R CREATE VIEW TEST2 AS SELECT * FROM 讲座 WHERE 讲座号 NOT IN (SELECT 讲座号 FROM R);
  9. 连接操作:将讲座和R两个模式中讲座号相同的进行连接 讲座∞讲座号=讲座号R CREATE VIEW TEST4 AS SELECT * FROM 讲座, R WHERE 讲座.讲座号=R.讲座号;
  10. 除操作:将讲座除以R 讲座÷R CREATE VIEW TEST5 AS SELECT 地点FROM 讲座 WHERE 讲座号 IN (SELECT 讲座号 FROM R);

五、总结

数据库系统的设计步骤就如上例所示,依次为:

    需求分析 构建概念模型(画E-R图) 构建逻辑模型(关系模型) 范式验证 关系代数运算以及SQL语句的实现

在大型项目的设计中,规范的数据库系统设计是不可或缺的,记录在此处,方便以后回顾查阅。

经验分享 程序员 微信小程序 职场和发展