③联系(Relationships)。用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1∶1,1∶n或m∶n),如住宿和代课。另外值得注意的是,联系本身也可以有属性,如选课就可以带有成绩属性。
设有两张表A和B,其联系方式可以分成3类。
图413学生选课系统的ER图
①一对一联系。在一对一联系中,A表中的一行最多只能匹配于B表中的一行,反之亦然。这种关系并不常见,因为一般来说,按照这种方式相关的信息都可以合并在一个表中。
②一对多联系。一对多关系是最普通的一种关系。在这种关系中,A表中的一行可以匹配B表中的多行,但是B表中的一行只能匹配A表中的一行。例如,学生和宿舍表之间具有一对多关系:每个宿舍可以住宿多个学生,但是每个学生只能住在一个宿舍里面。
③多对多联系。在多对多关系中,A表中的一行可以匹配B表中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由A表和B表的主键组成。例如,学生和课程表具有多对多关系,这是由于这些表都与选课表具有一对多关系。选课表的主键是学号列(学生表的主键)和课程编号列(课程表的主键)的组合。
3.逻辑结构设计
设计完ER图后,就要对ER图进行转换,转换为对应的关系数据模型(二维表),这个过程称为数据库的逻辑设计。将ER图转化为表,一般应遵循以下两个原则。
(1)对实体,直接按属性转化成二维表
(2)对联系,要分3种情况
①对于1∶1的联系,可以采用m∶n的联系转换方式,也可以将两个表进行合并。
②对于1∶n的联系,做法比较灵活,如果联系中没有属性或属性比较少的时候,可以将“1方”实体的主关键字纳入“n方”实体集对应的关系中作为“外部关键字”,同时把联系的属性也一并纳入“n方”对应的关系中,但是如果联系的属性值比较多的时候,建议采用m∶n的联系转换方式。
③对于m∶n的联系,必须对联系单独建立一个关系,用来联系双方实体,该联系的属性中至少要包括被它所联系的双方实体集的“主关键字”,并且如果联系有属性,也要归入这个关系中。
在这里,用图413举例说明ER图的转换。
首先,找到ER图的实体,包括学生、宿舍、课程和教师。根据第一个原则,可以直接得到4个表。
a.学生(学号,姓名,性别,年龄,班级,省份)
b.宿舍(宿舍编号,区域)
c.课程(课程编号,课程名字)
d.教师(教师编号,姓名,性别,年龄,院系)
接着,找到ER图的联系,包括住宿、选课和带课。根据第二个原则,由于住宿关系是属于1∶n的关系,而且住宿关系没有属性,因此可以将此表和学生表合在一起,则可以得到两个新表并对原来的学生表进行改进。
a.学生(学号,姓名,性别,年龄,班级,省份,宿舍编号)
b.选课(学号,课程编号,成绩)
c.代课(教师编号,课程编号)
在数据库的逻辑结构设计中,除了ER图向关系数据模型转换,还应该进行规范化处理。逻辑设计阶段的结果是全局逻辑数据库结构,对于关系数据库系统来说,就是一组符合一定的规范的关系模式组成的关系数据库模型。
4.设计范式
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且可能存储了大量不需要的冗余信息。
因此,构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式(NormalForm,NF)。范式是符合某一种级别的关系模式的集合,它是由E.F.Codd在1971年提出来的。目前关系数据库有6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足最低要求的范式是第一范式(1NF),在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式依次类推。一般说来,数据库只需满足第三范式(3NF)就行了。下面举例介绍第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。
(1)第一范式(1NF)
数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。很显然,在当前的任何RDBMS中,傻瓜也不可能作出不符合第一范式的数据库,因为这些RDBMS不允许把数据库表的一列再分成二列或多列。因此,想在现有的RDBMS中设计出不符合第一范式的数据库都是不可能的。
(2)第二范式(2NF)
数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
假定选课关系表为:选课(学号,姓名,年龄,课程编号,课程名称,成绩,学分),关键字为组合关键字(学号,课程编号),这个数据库表不满足第二范式,因为存在如下决定关系:(课程编号)—(课程名称,学分)和(学号)—(姓名,年龄),即存在组合关键字中的字段决定非关键字的情况。由于不符合2NF,这个选课关系表会存在如下问题:①数据冗余。同一门课程有n个学生选修,学分就重复n1次;同一个学生选修了m门课程,姓名和年龄就重复了m1次。②更新异常。若调整了某门课程的学分,数据表中所有行的学分值都要更新,否则会出现同一门课程学分不同的情况。③插入异常。假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有学号关键字,使得课程编号和学分也无法记录入数据库。④删除异常。假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。因此应该把选课关系表改为如下3个表。
a.学生(学号,姓名,年龄)
b.课程(课程编号,课程名称,学分)
c.选课关系(学号,课程编号,成绩)
这样的数据库表是符合第二范式的,消除了数据冗余、更新异常、插入异常和删除异常。另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。
(3)第三范式(3NF)
在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在“A—B—C”的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:“关键字段—非关键字段x—非关键字段y”。假定学生关系表为Student(学号,姓名,年龄,所在学院,学院地点,学院电话),关键字为单一关键字“学号”,因为存在如下决定关系:
(学号)—(姓名,年龄,所在学院,学院地点,学院电话)
这个数据库是符合2NF的(即所有的非关键字都依赖于学号这个关键字),但是不符合3NF,因为存在如下决定关系:(学号)—(所在学院)—(学院地点,学院电话),即存在非关键字段“学院地点”、“学院电话”对关键字段“学号”的传递函数依赖。它也会存在数据冗余、更新异常、插入异常和删除异常的情况,读者可自行分析得知。把学生关系表分为如下两个表:
a.学生(学号,姓名,年龄,所在学院)
a.学院(学院,地点,电话)
这样的数据库表是符合第三范式的,消除了数据冗余、更新异常、插入异常和删除异常。
小结
本章主要讲述了电子商务的技术基础,其中包括EDI技术、Internet技术和网站开发技术。在Internet技术中,详细介绍了网络设备、传输介质等硬件概念和TCP/IP协议、IP地址及域名等软件概念,并且介绍了基于硬件和软件之上,Internet提供的3种主要的服务。在Web网站的开发技术中,首先介绍了B/S网络结构模式的概念,大家要了解Web网络服务分成浏览器端(客户端)和服务器端,享受服务的为客户端,提供服务的为服务器端,接着详细地介绍了浏览器客户端的HTML、CSS和JavaScript3种开发基本技术,服务器端的JSP、ASP.NET和PHP3种开发技术,最后详细介绍了存储信息的数据库技术。
通过对本章的学习,希望同学们能够掌握计算机网络的基本概念,了解Internet网络的软硬件环境及其提供的基本服务,并且知道开发电子商务网站用到的相关技术,为自己以后能够简单开发网站提供一定的基础。
一、选择题
1.EDI软件不能够执行的功能是。
A.格式转换功能B.翻译功能
C.通信功能D.安全控制功能
2.下列叙述不正确的是。
A.EDI的投资成本远远高于电子邮件的投资成本
B.EDI的安全性比电子邮件或传真更加可靠
C.EDI是一个相对开放的网络结构,用户之间的数据交换可以随时进行
D.EDI的全称是电子数据交换的意思
3.在IP地址方案中,159.226.181.1是一个。
A.A类地址B.B类地址
C.C类地址D.D类地址
4.下列不属于目前电子商务领域使用的数据库管理系统的是。
A.OracleB.Sybase
C.DB2D.FoxPro
E.SQLServer
5.以下不属于客户端技术的是。
A.HTMLB.层叠样式表
C.JavaScriptD.ASP
二、判断题
1.XHTML和HTML是同一种语言。
2.现在的电子商务网站大部分是基于C/S结构开发的。
3.IP地址和域名的对应关系是1对1的关系。
4.万维网是Internet网络中的一种增值网络。
5.电子商务网站必须要有数据库的支持。
三、复习思考
1.什么是EDI?EDI系统包括哪些部分?
2.请简述B/S结构的特点。
3.Internet服务包括哪些部分?
四、商务实战
某医院病房计算机管理中需如下信息。
(1)科室:科名、科地址、科电话;
(2)病房:病房号、床位数、所属科室名;
(3)医生:姓名、职称、所属科室名、年龄、工作证号;
(4)病人:病历号、姓名、性别、诊断医生、病房号。
其中,一个科室有多个病房、多名医生;一个病房只能属于一个科室;一名医生只属于一个科室,可负责多个病人的诊治;一个病人的诊断医生只有一个。请设计该系统的ER图。