数据库数据库什么是关系模式问题

1)模式 模式也称逻辑模式或概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图 模式实际上是数据库数据在逻辑级上的视图。一个数據库只有一个模式定义模式时不仅要定义数据的逻辑结构,而且要定义数据之间的联系定义与数据有关的安全性、完整性要求。
(2)外模式 外模式也称用户模式它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图是与某一應用有关的数据的逻辑表示。 外模式通常是模式的子集一个数据库可以有多个外模式。应用程序都是和外模式打交道的
外模式是保证數据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据数据库中的其余数据对他们是不可见的。 (3)内模式 內模式也称存储模式一个数据库只有一个内模式。它是数据物理结构和存储方式的描述是数据在数据库内部的表示方式。
例如记录嘚存储方式是顺序结构存储还是B树结构存储;索引按什么方式组织;数据是否压缩,是否加密;数据的存储记录结构有何规定等 2。两级映象(纠正一下你的说法,不是两级映射) 1)外模式/模式映像 对应于同一个模式可以有任意多个外模式对于每一个外模式,数据库系统都有┅个外模式/模式映像它定义了该外模式与模式之间的对应关系。
当模式改变时由数据库管理员对各个外模式/模式映像作相应的改變,可以使外模式保持不变应用程序是依据数据的外模式编写的,从而应用程序可以不必修改保证了数据与程序的逻辑独立性。 (2)模式/内模式映像 数据库中只有一个模式也只有一个内模式,所以模式/内模式映像是惟一的它定义了数据库的全局逻辑结构与存储結构之间的对应关系。
当数据库的存储结构改变时由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变从而应用程序吔不必修改。保证了数据与程序的物理独立性

我们眼下所接触的数据库基本上昰关系数据库关系数据库中的数据库什么是关系模式是型,而关系是值数据库什么是关系模式是对关系的描写叙述。

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

数据库什么是关系模式能够用五元组形式表示:R(UD,DomF),当中R:表礻关系名U:表示属性集合,Dom,表示属性域(来自那个域),F:表示函数依赖

可是普通情况下,我们通常把数据库什么是关系模式表示为:R(U)戓者R(AB)(当中A、B代表U中的属性)

那么E-R图转化成数据库什么是关系模式的步骤。

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

苐一:把每一个实体都转化成数据库什么是关系模式R(A、B)形式(A、B代表属性)

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

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

 结果例如以下:

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

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

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

转换后的结果例如以下:

 R1(学号、姓名、性别)

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

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

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

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

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

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

3. 甴“多对多”关系转化得到的SQL表当中的随意外键列都不同意为NULL。

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

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

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

图1表示的语义为:每一张报表都有一个缩写,每一缩写仅仅代表一张报表转化得箌的SQL表定义例如以下:

2. “一对一”,一实体可选存在还有一实体强制存在

当两个实体中有一个为“可选的”,则“可选的”实体相应的SQL表一般作为从表包括指向还有一实体的外键(如图2所看到的)。

(图2  “一对一”一实体可选存在,还有一实体强制存在)

图2表示的语義为:每个部门必须有一位经理大部分员工不是经理,一名员工最多仅仅能是一个部门的经理转化得到的SQL表定义例如以下:

还有一种轉化方式是把“可选的”实体作为主表,让“强制存在的”实体作为从表包括外键指向“可选的”实体,这样的方式外键列同意为NULL以圖2为例,可把实体Employee转化为从表包括外键列dept_no指向实体Department,该外键列将同意为NULL由于Employee的数量远大于Department的数量,故会占用很多其它的存储空间

3. “┅对一”,两实体都为可选存在

当两个实体都是可选的(如图3所看到的)可选随意一个实体包括外键指向还有一实体,外键列同意为NULL值

(图3  “一对一”,两实体都为可选存在)

图3表示的语义为:部分台式电脑被分配给部分project师一台电脑仅仅能分配给一名project师,一名project师最多僅仅能分配到一台电脑转化得到的SQL表定义例如以下:

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

在“一对多”关系中不管“多”端是强制存在嘚还是可选存在的都不会影响其转化形式,外键必须出如今“多”端即“多”端转化为从表。当“一”端实体是可选存在时“多”端實体表中的外键列同意为NULL。

(图4  “一对多”两实体都为强制存在)

图4表示的语义为:每名员工都属于一个部门,每一个部门至少有一名員工转化得到的SQL表定义例如以下:

5. “一对多”,一实体可选存在还有一实体强制存在

(图5  “一对多”,一实体可选存在还有一实体強制存在)

图5表示的语义为:每一个部门至少公布一张报表,一张报表不一定由某个部门来公布转化得到的SQL表定义例如以下:

cascade”的用处。当没有这一行时更新department表中dept_no字段会失败,删除department中记录也会失败报出与外键约束冲突的提示。假设有了最后一行更新department表中dept_no字段,report表中楿应记录的dept_no也会同步更改删除department中记录,会使report表中相应记录的dept_no值变为NULL

6. “多对多”,两实体都为可选存在

在“多对多”关系中须要一张噺关系表包括两个实体的主键。不管两边实体是否为可选存在的其转化形式一致,关系表中的外键列不能为NULL实体可选存在,在关系表Φ表现为是否存在相应记录而与外键是否同意NULL值无关。

(图6  “多对多”两实体都为可选存在)

图6表示的语义为:一名project师可能是专业协會的会员且可參加多个专业协会。每个专业协会可能有多位project师參加转化得到的SQL表定义例如以下:

对于“一对一”或“一对多”回归关系嘚转化都是在SQL表中添加一列与主键列类型、长度同样的外键列指向实体本身。外键列的命名需与主键列不同表明其用意。外键列的约束依据语义进行确定

7. “一对一”,两实体都为可选存在

(图7  “一对一”两实体都为可选存在)

图7表示的语义为:公司员工之间可能存在夫妻关系。转化得到的SQL表定义例如以下:

8. “一对多”“一”端为强制存在,“多”端为可选存在

(图8  “一对多”“一”端为强制存在,“多”端为可选存在)

图8表示的语义为:project师被分为多个组每一个组有一名组长。转化得到的SQL表定义例如以下:

“多对多”回归关系不管是可选存在的还是强制存在的都需新增一张关系表表中的外键列须为NOT NULL。

9. “多对多”两端都为可选存在

(图9  “多对多”,两端都为可選存在)

图9表示的语义为:社交站点中人之间的朋友关系每一个人都可能有非常多朋友。转化得到的SQL表定义例如以下:

不管哪种形式的彡元关系在转化时都会创建一张关系表包括全部实体的主键三元关系中,“一”端实体的个数决定了函数依赖的数量因此,“一对一對一”关系有三个函数依赖式“一对一对多”关系有两个函数依赖式,“一对多对多”关系有一个函数依赖式“多对多对多”关系的主键为全部外键的联合。

10. “一对一对一”三元关系

(图10  “一对一对一”三元关系)

1名技术员在1个项目中使用特定的1本记事簿

1本记事簿在1个項目中仅仅属于1名技术员

1名技术员的1本记事簿仅仅用于记录1个项目

注:1名技术员仍能够做多个项目对于不同的项目维护不同的记事簿。

轉化得到的SQL表定义例如以下:

11. “一对一对多”三元关系

(图11  “一对一对多”三元关系)

參与1个项目的1名员工仅仅会在1个地点做该项目

1名员笁在1个地点仅仅能做1个项目

1个地点的1个项目可能有多名员工參与

注:1名员工能够在不同的地点做不同的项目

转化得到的SQL表定义例如以下:

12. “一对多对多”三元关系

(图12  “一对多对多”三元关系)

1个项目中的1名project师仅仅会有1名经理

1个项目中的1名经理会带领多名project师做该项目

1名经理囷他手下的1名project师可能參与多个项目

转化得到的SQL表定义例如以下:

13. “多对多对多”三元关系

(图13 “多对多对多”三元关系)

1名员工在1个项目Φ能够运用多种技能

1名员工的1项技能能够在多个项目中运用

1个项目中的1项技能能够被參与该项目的多名员工运用

转化得到的SQL表定义例如以丅:

关系的描述称为数据库什么是关系模式(Relation Schema)一个数据库什么是关系模式应当是一个五元组。它可以形式化地表示为:R(U, D, DOM, F)其中R为关系名,U为组成该关系的属性名集合D为屬性组U中属性所来自的域,DOM为属性向域的映象集合F为属性间数据的依赖关系集合。

数据库什么是关系模式通常可以简记为:R(A1, A2, …, An)其中R为关系名,A1, A2, …, An为属性名而域名及属性向域的映象常常直接说明为属性的类型、长度。

关系实际上就是数据库什么是关系模式在某一时刻的状態或内容也就是说,数据库什么是关系模式是型关系是它的值。数据库什么是关系模式是静态的、稳定的而关系是动态的、随时间鈈断变化的,因为关系操作在不断地更新着数据库中的数据但在实际当中,常常把数据库什么是关系模式和关系统称为关系读者可以從上下文中加以区别。

你对这个回答的评价是

我要回帖

更多关于 数据库什么是关系模式 的文章

 

随机推荐