E-R模型:在现实与数据之间架起一座沟通的桥梁
当我们着手为一个真实的业务系统设计数据库时,常常会面临一个棘手的难题。现实世界纷繁复杂,充满了形形色色的事物和盘根错节的关系,而计算机里的数据库,最终却要落实为一张张规整的二维表。从生动鲜活的现实世界,到冷峻规整的数据表格,这中间隔着一道不小的鸿沟。我们该如何跨越这道鸿沟,把现实世界中那些复杂的人、事、物以及它们之间的关系,准确而清晰地转化为数据库能够承载的形式呢?
如果一上来就直接去设计二维表,往往会顾此失彼,越设计越乱,因为现实世界的复杂性会让我们在一堆表格中迷失方向。聪明的人们想到了一个绝妙的办法,那就是不要急于求成,而是先在现实世界和数据库之间,搭建一个过渡的桥梁,用一种既贴近现实、又便于理解、还易于转化为数据库的方式,先把现实世界描绘清楚。这座桥梁,就是大名鼎鼎的E-R模型。它是数据库概念设计的核心工具,也是每一位数据库设计者都必须熟练掌握的看家本领。今天,就让我们用最生动形象的方式,去认识这座架在现实与数据之间的沟通桥梁。
一、E-R模型的使命:搭建概念世界
要理解E-R模型,首先要明白它在整个数据库设计过程中所处的位置和肩负的使命。
数据库设计通常不是一蹴而就的,而是分阶段、由浅入深地进行的。在正式动手设计具体的数据表之前,有一个至关重要的阶段,叫做概念设计阶段。这个阶段的任务,是抛开一切具体数据库技术的细节,纯粹从用户和业务的角度出发,去深入理解和分析现实世界,把现实世界中需要管理的事物以及它们之间的联系,提炼和描绘成一个清晰的概念模型。这个概念模型,是对现实世界的一种高度抽象和概括,它不依赖于任何具体的数据库产品,只关心业务的本质。
而E-R模型,正是用来完成这个概念设计任务的最主要、最经典的工具。E-R这两个字母,分别代表两个英文单词的首字母,一个是实体,一个是联系。所以E-R模型的全称,就是实体联系模型。顾名思义,它就是用实体和联系这两个核心要素,来描绘现实世界的一种模型。
E-R模型的使命,就是充当现实世界与数据库世界之间的翻译官和桥梁。它一头连着现实世界,能够用贴近人类思维的方式,把业务需求描绘得清晰直观,让设计者、用户、开发者都能看得懂、聊得来;另一头又连着数据库世界,它所描绘的概念模型,可以比较方便地按照一定的规则,转换成数据库中的二维表。有了E-R模型这座桥梁,我们就能从容地完成从现实到数据的跨越,先用E-R模型把现实想清楚、画明白,再把它顺顺当当地落实为数据库。这就是E-R模型的核心价值所在。
二、E-R模型的三大基本要素
E-R模型之所以能够胜任描绘现实世界的重任,靠的是它三个简洁而有力的基本要素,分别是实体、属性和联系。这三个要素就像三种基本的积木,用它们就能搭建出对现实世界的完整描述。下面我们逐一来认识。
实体:现实世界中的事物
第一个要素是实体。所谓实体,指的是现实世界中可以相互区分的、客观存在的事物。这个事物可以是具体的,比如一个学生、一位老师、一本书、一件商品;也可以是抽象的,比如一门课程、一次考试、一个部门。只要是我们需要在数据库中加以记录和管理的事物,都可以被抽象为一个实体。
举个例子,在学生选课这个场景中,我们关心学生和课程这两类事物,那么学生就是一个实体,课程也是一个实体。需要注意的是,我们说实体时,往往指的是同一类事物的总称,比如学生这个实体,代表的是所有学生这一类,而其中某一个具体的学生,比如学号为某某的张三同学,则是这个实体的一个具体个体。实体是E-R模型中最基本的描述对象,它对应着现实世界中我们要管理的那些主角。
属性:描述实体的特征
第二个要素是属性。光有实体还不够,因为实体本身还需要用一些具体的特征来加以描述。这些用来刻画实体特征的项目,就是属性。每个实体都拥有若干个属性,这些属性共同描绘出这个实体的样貌。
还是以学生这个实体为例,要描述一个学生,我们需要知道他的学号、姓名、年龄、所在院系等等,那么学号、姓名、年龄、所在院系,就都是学生这个实体的属性。同样,课程这个实体也有它的属性,比如课程编号、课程名称、学分等等。属性的作用,就是给实体填充上具体的内容,让原本笼统的实体变得有血有肉、可识别、可描述。
在实体的诸多属性中,往往有一个或一组特殊的属性,能够唯一地标识出实体的每一个个体,这就是实体的标识属性,也叫码或键。比如学生的学号,每个学生的学号都是独一无二的,因此学号就可以作为学生实体的标识属性。标识属性非常重要,它保证了我们能够准确地区分和指认每一个具体的实体个体。
联系:实体之间的关系
第三个要素,也是E-R模型中最为精彩、最能体现其威力的要素,那就是联系。现实世界中的事物从来都不是孤立的,它们之间总是存在着这样那样的关系,而联系,正是用来描述实体与实体之间这种关系的。
回到学生选课的例子。学生和课程这两个实体之间,显然存在着一种关系,那就是学生要选修课程。这个选修,就是学生实体和课程实体之间的一个联系。正是通过联系,原本孤立的实体被关联了起来,现实世界中事物之间错综复杂的关系,才得以在模型中被真实地反映出来。可以说,联系是E-R模型的灵魂,它让模型从一堆孤立的实体,变成了一个有机关联的整体,从而能够忠实地映射现实世界的本来面貌。
值得一提的是,联系本身有时也可以拥有属性。比如学生选修课程这个联系,可能需要记录学生选这门课的成绩,那么这个成绩,就是依附于选修这个联系的属性,因为成绩既不单纯属于学生,也不单纯属于课程,而是属于某个学生选修某门课程这一具体的关联。
三、联系的类型:一对一、一对多与多对多
联系作为E-R模型的灵魂,还有着更为细致的讲究。实体之间的联系,并不是千篇一律的,而是根据数量上的对应关系,分成了三种不同的类型。准确地辨认联系的类型,是用好E-R模型的关键,也是后续将其转换为数据表的重要依据。这三种类型分别是一对一、一对多和多对多。
一对一联系
第一种是一对一联系。它指的是,一方的一个实体个体,至多只与另一方的一个实体个体相对应,反之亦然。打个比方,在一夫一妻制的前提下,丈夫和妻子之间就是一对一的联系,一个丈夫对应一个妻子,一个妻子也对应一个丈夫。又比如,一个班级和它的班长之间,一个班级只有一个班长,一个班长也只担任一个班级的班长,这也是一对一的联系。一对一联系在现实中相对少见,但也确实存在。
一对多联系
第二种是一对多联系。它指的是,一方的一个实体个体,可以与另一方的多个实体个体相对应,但反过来,另一方的一个实体个体,却只能与这一方的一个实体个体相对应。这种联系在现实中非常常见。比如,一个班级和它的学生之间,就是一对多的联系,一个班级有许多个学生,但每一个学生只属于一个班级。再比如,一个部门和它的员工之间,一个部门有多名员工,而每名员工只隶属于一个部门,这也是典型的一对多联系。
多对多联系
第三种是多对多联系,这也是最为复杂、最值得关注的一种联系。它指的是,一方的一个实体个体,可以与另一方的多个实体个体相对应,同时,另一方的一个实体个体,也可以与这一方的多个实体个体相对应。我们前面反复提到的学生选课,就是一个典型的多对多联系。一个学生可以选修多门课程,而一门课程也可以被多个学生选修,双方都是多。多对多联系充分体现了现实世界关系的复杂性,它在后续转换为数据表时也需要特别的处理,这一点我们后面会提到。
正确地判断一个联系到底属于哪种类型,需要我们仔细地分析业务的实际情况,搞清楚双方在数量上究竟是怎样对应的。这是运用E-R模型时一项需要格外用心的工作。
四、E-R图:把概念模型画出来
认识了实体、属性、联系这三大要素以及联系的三种类型,我们还需要一种方式,把它们直观地表达出来,让人一目了然。这种表达方式,就是E-R图。E-R图是E-R模型的图形化表示,它用一套约定俗成的图形符号,把实体、属性、联系生动地描绘在一张图上,使得整个概念模型变得清晰可见。
在E-R图中,不同的要素用不同的图形来表示。通常,实体用矩形框来表示,在框里写上实体的名称。属性用椭圆形来表示,并用线条连接到它所属的实体上。联系则用菱形框来表示,在菱形里写上联系的名称,并用线条把这个菱形和参与联系的各个实体连接起来。此外,为了表明联系的类型,人们还会在连接联系与实体的线条旁边,标注上数字或字母,用来说明这究竟是一对一、一对多还是多对多的联系。
通过这样一套简单而规范的符号系统,我们就能把对现实世界的分析结果,画成一张直观的E-R图。在这张图上,有哪些实体,每个实体有哪些属性,实体之间有哪些联系,这些联系又是什么类型,统统一目了然。E-R图就像是数据库的设计草图,它把抽象的概念模型变成了看得见、摸得着的图形,极大地方便了设计者之间的交流和沟通。无论是技术人员还是业务人员,对着一张清晰的E-R图,都能比较容易地理解和讨论系统的数据结构,这正是E-R图的巨大价值所在。
五、从E-R图到数据表:桥梁的另一端
我们说E-R模型是架在现实与数据之间的桥梁,那么它的价值就不仅在于能贴近现实地描绘概念,更在于它能比较方便地转换为数据库中的二维表,从而落实到桥梁的另一端。这种转换是有章可循的,遵循着一套相对固定的规则。
大体上说,每一个实体,通常会转换成一张二维表,实体的属性就成为表的列,实体的标识属性就成为表的主键。比如学生这个实体,就转换成一张学生表,学号、姓名、年龄、院系成为表的列,学号成为主键。对于联系的转换,则要看联系的类型而定。一对一和一对多的联系,往往可以通过在相关的表中增加一些用于关联的列来处理,而不必单独建表。而多对多的联系,则通常需要单独转换成一张表,这张表中会包含参与联系的双方实体的标识属性,用来记录双方的对应关系,如果联系本身还有属性,这些属性也会成为这张表的列。比如学生和课程之间的选修这个多对多联系,就会单独转换成一张选课表,里面包含学号、课程编号,以及选修这个联系的属性成绩。
正是借助这样一套清晰的转换规则,我们就能把精心设计好的E-R图,顺顺当当地翻译成数据库中一张张具体的二维表。至此,从现实世界到概念模型,再从概念模型到数据库表,整个跨越鸿沟的旅程就圆满完成了。E-R模型作为中间桥梁的作用,也就发挥得淋漓尽致。
六、结语
行文至此,E-R模型这座架在现实与数据之间的沟通桥梁,已经在我们面前清晰地展现出来。它以实体、属性、联系为三大基本要素,用实体来表示现实世界中的事物,用属性来描述实体的特征,用联系来刻画实体之间的关系。它又把联系细分为一对一、一对多、多对多三种类型,以准确地反映现实关系的不同形态。它还通过E-R图这种直观的图形化方式,把抽象的概念模型描绘得一目了然,方便了各方的交流与沟通。最终,它又能依照一套清晰的规则,转换成数据库中的二维表,落实为可以实际运行的数据库。
E-R模型的伟大之处,在于它找到了一种恰到好处的中间表达方式。这种表达,既足够贴近现实世界、贴近人类的自然思维,让人容易理解和把握;又足够规整有序、有章可循,便于转换为严谨的数据库结构。它巧妙地化解了从生动复杂的现实到冷峻规整的数据之间的那道鸿沟,让数据库设计这件原本可能千头万绪的工作,变得条理清晰、循序渐进。
当我们今天面对一个新的业务系统,能够从容地分析出其中的实体、理清它们的属性、辨明它们之间的联系,画出一张清晰的E-R图,进而设计出合理的数据库结构时,我们所依靠的,正是E-R模型这一概念设计的核心利器。理解了E-R模型,掌握了用实体和联系去观察和抽象现实世界的方法,我们也就握住了开启数据库设计大门的金钥匙。这座架设在现实与数据之间、连接业务与技术的智慧桥梁,正是人类在驾驭数据、认识世界的征途上,留下的一件思虑精巧、历久弥新的不朽杰作。
