entity-relationship data model用来表述一个数据库的逻辑结构
构成一个ER模型的概念有三个:entity sets, relationship sets, attributes.
entity,原意是主题,在数据库里指代的就是数据库的表明的一个在真实世界里可以从其他实体中区分出来的一个对象。这个对象可以是抽象的,也可以是具体的,比如说大学里的某个人,也可以是一节课。一个entity必然有着一系列的属性,而在此之中的一些属性能够独一无二的把它指代的对象给区分出来,比如说每个人都有的身份证号之类的
而entity sets就是具有相同属性的entity的集合,注意这里的相同指的是他们都能被一个属性的集合给描述,这里就要讲到属性,属性(attribute)是指被每个entity所拥有的可描述的形状,而每一个entity的属性都有它们自己的值
而relationship就有点像离散里学到过的函数。不过这里的结合不再是映射,而是一个集合的形式,一个假设E为一个entity set,e为一个entity,那么relationship就是由(e1,e2,e3,e4…en|e1属于E1,e2属于E2….en属于En)这样一对对的有序集合构成的
一个ER模型必然需要对于其内容做出约束,mapping cardinality 和 participation constraints 和 keys
mapping cardinality类型:
第一类:one to one,假设ES(entity set) L,R,那么对于L里的一个entity a来说,R中有且只有一个b是和它有联系的,对于b来说vice versa.
第二类:one to many,接上文来说,L中的a可以于R中多个元素有联系,但是R中的一个元素只能和L中的一个产生联系。
同理,还有many to many & many to one
participation constraints
对于一个ES和一个RS来说,如果ES中每一个entity都在这个R中出现过一次,那么ES对于RS的关系就是total participation 如果有些entity没有出现在RS中,那么就是partial participation.
keys:
因为这个是数据库的基本概念就不怎么多讲了,值得一提的是关系也可以通过主键的并集来描述,设RS,R为(e1,e2,e3…en|e1<-E1,e2<-E2,e3<-E3…en<-En(<-此处为属于的意思)),那么描述这个关系的主键就是(primary key(E1)+primary key(E2)…+primary key(En)).如果关系有describe attributes,那么就是(primary key(E1)+primary key(E2)…+primary key(En)+set of describe attributes).
矩形:代表ES,上面记名字下面记属性,主键被画上下划线。
棱形:代表RS,一般用线链接两个及以上矩形
ES到RS的双划线:代表ES对于这个集合的participation状态是total participation.
用虚线链接到棱形的未划分矩形:代表关系的describe attribute。
关于棱形到两边ES的箭头:
如果两边都有箭头,那代表这两个是one2one的映射关系
如果只有一边有箭头,那代表有箭头的一边到没有箭头的一边是one2many的关系
如果两边都没有箭头,那代表双方都是many2many的关系。
除此以外还有一个标注rule的方法,就是在ES到RS的线上表区间,区间代表用这条线与rs相连的ES中的一个元素能和另外一边的多少个元素产生联系,0-*就是0到无穷多个,依此类推。
自身与自身产生映射的时候在线上标注映射出来的属性名称。