关于ER模型到relation模型里面的转换
先有两个基础,多值属性的变换和复合属性的变换
复合属性,和之前提到过的一样,是一个属性由多个属性组成,对于这样的属性的处理方法就是将其拆开以后放入其原来的entity里面,比如说(address(city,street,house),name,dept_name)->(city,street,house,name,dept_name)。
而多值属性则要建立一个关系实例(就是一张表)在这个表里面,然后将多值属性存在的表的主键放在前面,多值属性里面的各个值放在后面以形成一张新表。
1.任何一个strong entity set(SES)转化时只需注意复合属性和多值属性的变换,以及其是否有一个WES。
2.对于WES来说,其要加上depending entity set的primary key,成为一个独立的relation schema.
3.对于relation set,使用一个包含其所有元素的属性(包括描述元素)的关系实例来表示它,在er模型中,我们使用相连双方的主键并集来表示relation set的主键,但是在关系数据库中,我们需要优化这一点:
121的关系中,任何一个相连ES的主键都可以作为其生成实例的主键
many 2 many的关系中,双方es的主键并集成为主键
many2 one 的关系中,many一方的es主键成为主键
对于非2元关系,若其中有一个是one,则除了one以外参与的es的主键并集成为其主键,不然则所有参与的es的主键并集成为其主键。
如果其链接的是一个WES,那么其关系模型需要新增其WES的DES的主键。
然后,每一个生成关系实例的主键都将被认为是原所属es的主键的外部键。