1. 从现实抽象过来的信息世界具有以下7大主要基本概念:
(1)实体(Entity):客观存在的实体事物,也可以是抽象的概念或关系,如老师、老师和学院的工作关系;
(2)属性(Attribute):即实体所具有的某一特性,比如实体学生的一个属性为年龄;
(3)实体型(Entity Type):即用实体类型名和所有属性来共同表示同一类实体,比如学生(学号、年龄);
(4)实体集(Entity Set):即同一类型实体的集合,如全体学生;
!!!注意区分实体、实体型、实体集三个概念:实体时某个具体的个体,比如学生中的小明,而实体集是一个个实体的某个集合,比如小明所在的三年二班的所有学生,而实体型则是实体的某种类型(该种类型的所有实体具有相同的属性而已),比如学生这个概念,小明是学生、小明所在班级的所有学生都是学生,显然学生是一个更大且更抽象的概念,小明和小明全班同学都比学生要更加具体;
总的来讲,可以这样比喻,实体是1,实体集是正整数集,而实体型是int(即可以直接当作类型看待);
(5)码(Key):可以唯一标识一个实体的属性集,比如学号和每个学生实体一一对应,则学号可以作为码;
(6)域(Domain):简单地说就是指实体中属性的取值范围(属于某个域),比如学生的年龄的域为整数,因此精确讲域应该是某种数据类型的值的集合,就那这个例子讲,学生的年龄是整数,但是有娶不到所有整数,一般取值范围为6到40岁,而这个范围就来自(属于)整数这个集合;
(7)联系(Relationship):主要指实体内部的联系(各属性之间的联系)和实体间的联系(数学抽象概念中强调实体型之间的联系,而现实生活中更加关注某几个具体的实体集之间的联系);
2. 两个实体型之间的联系:
a. 由于实体型表示同一种类型,因此可以认为实体型中的实体任意多(这是现在进行理论研究时的观点,而到了现实世界中就需要把它具体到实体集了);
b. 两个实体型之间的联系分为三种(一下都是在两个实体集1和2中讨论):
i. 一对一联系(1:1):
1中每一个实体在2中最多只有一个实体与之对应,反之亦然;
ii. 一对多联系(1:n):
1中每一个实体在2中可以有多个实体与之对应,反之最多只有一个1中的实体和2中的每一个实体对应;
iii. 多对多(m:n):
1中每一个实体在2中可以有多个实体预知对应,反之亦然;
3. 多个实体型之间的联系:
a. 同样存在一对一、一对多、多对多的联系;
b. 前提:多个实体型针对于一个关系结点;
c. 一对多联系:其中一个实体型对于同一种联系和其它各实体型之间都是一对多的;
d. 一对一联系:其中一个实体型对于同一个联系和其它各实体型之间都是一对一的;
e. 多对多联系:其中一个实体型对于同一个联系和其它各实体型之间都是多对多的;
!!!注意:必须是“其中一个实体型”向外发出的联系,至于其它实体型之间是否存在上述的联系无关紧要;
f. 如两两之间的联系就以为着有多个联系而不是上述的单个联系了,即实体型两两之间具有不同的联系,即多关系结点;
4. 概念模型的表示方法——E-R图:
a. 即实体-联系方法(Entity-Relationship Approach),该方法用E-R图(E-R Diagram)表示;
b. 实体型:用矩形表示,中间填写实体名;
c. 联系:用菱形表示,中间填写联系名;
d. 属性:用椭圆表示,中间填写属性名,由于联系(在前面讲过)也是实体的一种,因此联系也可以具有属性;
e. 无向边:用于连接实体和属性以及联系和属性,用于表示实体和联系所拥有的各自的属性;
f. 数量标记:写在实体型和联系之间的无向边上,用于表示实体型之间的联系是何种类型的(一对多还是多对多等);
注:E-R图表示概念模型独立于DBMS所支持的数据模型(这里就是指逻辑结构,即数据结构和算法的具体实现),是所有数据模型(还是指逻辑模型)的共同基础,更一般、抽象,更接近现实世界;