1、数据库设计数据库设计 在需求分析的基础上顺序进行的三个步骤 概念设计 逻辑设计 物理设计需求分析的主要任务需求分析的主要任务 通过对客户的调查,得到数据库应用的下面内容 要保存的数据 要完成的功能数据库设计的任务数据库设计的任务 概念设计 由需求分析结果抽象出应用的实体及联系实体及联系,得到ER图。逻辑设计 把ER图转化为表的结构。物理设计 在具体的DBMS上把表实现,并包括创建合适的索引。实体实体-联系联系的概念的概念 实体是现实世界中可区别于其他对象的一个“事件”或一个“物体”现实世界是由一系列的实体以及这些实体间的联系构成的。ER图的概念图的概念 ER表示Entity Relations
2、hip,即实体联系。一种可应用于关系型数据库(但不限于关系型)概念设计的建模方法。最早由陈品山(Peter Pin-Shan Chen)在1976年提出,是数据库概念设计的主要方法。陈品山陈品山 1947,生于台中市 1968,毕业于台湾大学,BS,EE 1973,Harvard,PhD 1976,发表The EntityRelationship Model Toward A Unified View of Data 曾在IBM,Honeywell,DEC短暂工作 19741978,Assistant Professor,MIT 19781983,Associate Professor,UCL
3、A 19832011,Professor,Louisiana State UniversityER模型的目的模型的目的 甲乙方以一种非技术的模型,交流对数据的理解,保证数据库设计反映了企业对数据的使用方式。以直观的形式开始数据库设计过程。ER图准备图准备 抽象出实体 抽象出实体间的联系 得到实体属性 得到联系属性ER图的画法图的画法 陈方法 UMLUML画法画法 用矩形表示实体 把矩形分为上下两部分,上半部分是实体名称,下半部分实体属性 存在联系的两个实体用直线连接起来,把联系名称放在直线上面 联系一般有方向,在其名称左侧或右侧放置一个箭头符号表示方向ER图示例图示例 Navicat,Work
4、bench,ERWin,PowerDesigner联系的映射约束联系的映射约束 指一个实体集中的实体通过联系可以同另一个实体集中相联系的实体数量映射约束的种类映射约束的种类 一对一 一对多 多对多ER图转化为表图转化为表 实体名称即表名 实体属性即列名 根据联系的映射约束情况把联系转化为表一对一联系转化为表一对一联系转化为表 把两个实体及联系的属性合并为一个表,两个实体的主键都可以选作新表的主键一对多联系转化为表一对多联系转化为表 把“一”的一方的实体的主键及联系的属性合并到“多”的一方,并作为多的一方的实体的外键指向“一”的一方的主键。也可以把联系转化为一个独立的表,这个新表由两个实体的主键
5、及联系的属性构成,多的一端的主键作为这个新表的主键。多对多联系多对多联系 把联系转化为一个独立的表 这个表由联系的属性及两个实体的主键构成 这两个实体的主键作为新表的外键各自指向由两个实体转化而成的两个表的主键实例实例 简单的论坛网站范式范式 即Normal Form,数据规范形式 目的是减少数据冗余和避免数据异常emp和和dept表合并产生的问题表合并产生的问题 空间浪费 产生异常Insert异常异常 新添加员工的dept部分的细节要跟其他已有的记录完全一致,否则会造成表中的数据彼此不一致。若一个新部门还没有员工,则此部门的信息不能添加到表中去,此表中就查不到这些部门的信息。Deletion
6、异常异常 如果一个部门的员工都辞职或调到其他部门,其对应员工的记录都会被删除,这个部门的信息在表中也就不存在了。Update异常异常(适用于普通表格适用于普通表格)若一个部门有多个员工,而其部门名称发生改变,则必须更新这个部门的所有记录的部门名称字段,如果遗漏一个,会造成表中数据的彼此不一致。第一范式第一范式 如果一个表没有多值字段,则我们说这个表是满足第一范式的(1NF)下面book表中的author列有两个值,不满足1NFISBNtitlepub_datepricecategorypublisherauthor7-04-007494-X数据库系统概论2002-1-125.10计算机高等教育
7、出版社萨师煊,王珊如何转化为第一范式如何转化为第一范式 把多值列移出,与原表主键一起构成一个新表ISBNtitlePub_datepricecategorypublisher7-04-007494-X数据库系统概论2002-1-125.10计算机高等教育出版社ISBNauthor7-04-007494-X萨师煊7-04-007494-X王珊第二范式第二范式 如果一个表为第一范式,而且非主键字段完全依赖于主键,则此表称为满足第二范式 下面book表的主键由ISBN和author_id列构成,title等列只依赖于ISBN,author_name等列依赖于author_id,不满足第二范式ISBN
8、titlePub_datepricecategorypublisherauthor_idauthor_nameauthor_mobile7-04-007494-X数据库系统概论2002-1-125.10计算机高等教育出版社1001萨师煊135559990017-04-007494-X数据库系统概论2002-1-125.10计算机高等教育出版社2001王珊13566666333如何转化为第二范式如何转化为第二范式 把部分依赖的非主键字段移出,与原表所依赖的部分主键构成一个新表ISBNtitlepub_datepricecategorypublisher7-04-007494-X数据库系统概论2002-1-125.10计算机高等教育出版社ISBNauthor_id7-04-007494-X10017-04-007494-X2001author_idauthorauthor_mobile1001萨师煊135559990012001王珊13566666333第三范式第三范式 如果一个表满足第二方式,并且没有非主键字段传递依赖于主键字段,则我们称这个表满足第三范式 若把emp表和dept表合并,会出现什么情况?如何转化为第三范式如何转化为第三范式 把存在传递依赖的字段从原表移出,与其依赖的字段构成一个新表