现在的位置: 首页 > 综合 > 正文

ER 和 数据库关系模式

2013年12月04日 ⁄ 综合 ⁄ 共 1715字 ⁄ 字号 评论关闭

http://lianghuanyue123.blog.163.com/blog/static/130423244201162011850600/

我们目前所接触的数据库基本上是关系数据库,关系数据库中的关系模式是型,而关系是值。关系模式是对关系的描述。

什么是关系?关系实质上是一张二维表,其中每一行是一个元组,每一列是一个属性,每个元组是该关系涉及到属性集合笛卡尔积的一个元素。(笛卡尔积是这样的一个集合。集合中的元素是有序对,若A=0,1B=ab}则:A*B={<0,a><0,b>,<1,a>,<1,b>},关系是元组的集合,所以关系模式要描述元组的集合,其中包括那些属性,属性来自域,属性与域之间的映射关系。

关系模式可以用五元组形式表示:RUDDomF),其中R:表示关系名,U:表示属性集合,Dom,表示属性域(来自那个域),F:表示函数依赖。

但是一般情况下,我们通常把关系模式表示为:RU)或者RAB)(其中AB代表U中的属性)

 

那么E-R图转化成关系模式的步骤。

前提:是已经把需求中的实体,以及实体中联系确定。

第一:把每个实体都转化成关系模式RAB)形式。(AB代表属性)

第二:实体中的属性即关系模式中的属性要求是满足第一范式(原子性,不可再分)

第三:也是最重要的步骤,实体之间联系的转换。

       实体之间的联系分为:11nm三种形式。

    11:1之间的转换。

          将两个实体转化成关系模式之后,然后把任意实体的主键和联系的属性放到另一个实体的关系模式中。如图:

E-R图转换成关系模式 - 焕月 - 梁焕月的博客 拼搏腾飞

    

 结果如下:

   R1教师编号、姓名、性别)

   R2班级号、专业号、学院号、教师编号、任职日期)

   或者:

   R1教师编号、姓名、性别、班级号、任职日期)

   R2班级号 专业号、学院号)

  21n的转换。

      将两个实体各自转化成关系模式后,然后,把联系数量为1的实体的主键和联系的属性放到联系数量为n的实体关系模式中。

       比如:学生和宿舍之间的关系。

    

E-R图转换成关系模式 - 焕月 - 梁焕月的博客 拼搏腾飞

 

        转换之后的结果如下:

        R1学号、姓名、性别、宿舍号

        R2宿舍号、床位数)

 3nn的转换。

         将两个实体各自转换成关系模式后,然后,把两个实体中的主键和联系的属性放到另一个关系模式中.(注意多生成一个关系模式)

       

E-R图转换成关系模式 - 焕月 - 梁焕月的博客 拼搏腾飞

   

转换后的结果如下:

 R1学号、姓名、性别)

 R2奖励编号、奖励名称、奖励金额)

 R3学号奖励编号、奖励日期)

 

   注:E-R图中联系没有联系属性,EE-R图中含有联系属性。

   含有下划线的属性代表是主属性,在表中当做主键。红字体代表的外键。



以上的比较简单

http://www.cnblogs.com/DBFocus/archive/2011/07/25/2116609.html

这个很专业


转化过程中对于NULL值的处理规则

1. 当实体之间的关系是可选的,SQL表中的外键列允许为NULL。

2. 当实体之间的关系是强制的,SQL表中的外键列不允许为NULL。

3. 由“多对多”关系转化得到的SQL表,其中的任意外键列都不允许为NULL。

 

一般二元关系的转化

1. “一对一”,两实体都为强制存在

当两个实体都是强制存在的(如图1所示),每一个实体都对应转化为一张SQL表,并选择两个实体中任意一个作为主表,把它的主键放入另一个实体对应的SQL表中作为外键,该表称为从表。

image(图1 
“一对一”,两实体都为强制存在)

图1表示的语义为:每一张报表都有一个缩写,每一缩写只代表一张报表。转化得到的SQL表定义如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
create table report
(
    report_no
integer,
    report_name
varchar(256),
    primary key(report_no)
);
create table abbreviation
(
    abbr_no
char(6),
    report_no
integer 

抱歉!评论已关闭.