关系型数据库及其设计方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关系型数据库及其设计方法

1.1 理解关系型数据库

数据库是什么?数据库就是一些长期存储的数据信息的集合。“数据库”是由数据库管理系统管理(DBMS)的数据的集合。一个数据库管理系统需要满足以下的要求:

1、允许用户使用数据定义语言(DDL)建立新的数据库并且指定它们的模式(Schema)。

2、允许用户能够用适当的语言查询数据和更新数据。

3、支持存储大的数据,经过很长一段时间后,仍保证安全,使其对数据库查询和更新的有效访问。

4、控制多用户的同时访问,是一个用户的访问不影响其它用户,保证同时访问不会损坏数据。

1.2 关系模型的建立

关系型数据库理论出现于20世纪70年代。1970年,IBM的研究员E.F.Codd博士发表了《大型共享数据银行的关系模型》一文,提出了关系模型的概念。后来,他的几篇补充文章,奠定了关系数据模型的基础,即关系数据库的基础。

关系数据模型是以集合论中的关系概念为基础发展起来的。

几个概念:关系模型中无论是实体还是实体间的联系均由单一的结构类型--关系来表示。在实际的关系型数据库中的关系也成为表,一个关系型数据库由若干个表组成。

1.3 CODD准则

1.4 SQL语言的产生和发展

1.5 关系型数据库管理系统的基本术语

表是关系型数据库的基本组成单元,它是一种直观组织数据的方法。

表由行和列组成。即数据表中的“行”和“列”,或者称为“记录”和“字段”。

表中所示的数据是一个简单的雇员信息表。

这个简单的表格描述了关系型数据库中最重要的两个必要条件,即:

关系数据库中的所有数据在逻辑层明确地表示为表中的值。

每个数据元素可以通过使用主键名、主键值、表名和列名的组合进行逻辑访问。

2.1 表之间的关系

关联是不同表之间的数据彼此联系的方法。关联同时存在于形成不同实体的数据项之间和表实体本身之间,构成了数据库规范化的基本核心问题。数据关联有三种基本类型:

1、一对一关联

例如:一个学校只能有一个校长。一个人的身份证号码和这个人唯一关联。

2、一对多关联

例如:一个人可能没有小孩,也可能有一个或者多个小孩。

3、多对多关联

例如:学生和课程之间就是多对多的关系。也就是说:一个学生可以选多门课程,而一门课程又可以同时被多个学生选择。在进行数据库设计时需要通过一个中间表,也就是学生选课信息表来描述学生和课程之间的关系。

在实际中,遇到的大多数实体之间都是多对多的关系。而这种关系是无法直接用数据库进行描述的。那么就需要将多对多的关系拆分成两个一对多的关系进行处理。

2.2 关系型数据库的范式化

构造数据库必须遵守一定的规则,在关系型数据库中,这种规则就是范式。

范式:就是符合某一种级别的关系模式的集合。

范式化:就是按照范式法则将数据库中的数据进行组织的过程。

使用范式的目的:消除数据冗余,保持数据的一致性。

范式的种类:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和修正的第三范式(BCNF)。

2.3 第一范式

第一范式(1NF)要求:

1、数据库中的数据项(表中的每一列)是不可分割的基本数据项

2、同一列中不能有多个值

3、在数据表中每一行只能包含一个实例的信息。

4、所有的记录具有相同的字段个数。

例如:对于员工信息表,不能将员工信息都放在一个列中显示,也不能将其中的两列或者多列放在一列中显示;员工信息表的每一行只能表示一个员工的信息,一个员工的信息在表中只出现一次。即,第一范式要求无重复的列。

2.4 第二范式

第二范式(2NF)要求:

1、必须满足第一范式

2、表中不包含与主键无关的信息。换而言之,就是要求数据表中非主键的列要有主键来唯一决定。

非主键的列要与主键的全部发生依赖关系,即不能只与主键的部分依赖。

例如:

存在一个学生选课程的关系表:SCI(SNO,CNO,GRADE,CREDIT)

SCI(学号,课程号,成绩,学分)

根据以上条件,选取SNO和CNO两个字段作为组合关键字。

---------------------------------------------------

SNO CNO GRADE CREDIT

---------------------------------------------------

04020304 12345 98 4

04020304 12346 99 3

04020305 12345 96 4

04020305 12346 99 3

04020306 12347 97 3

04020306 12347 95 3

---------------------------------------------------

在应用以上关系模式中存在以下的问题:

⎽存在着数据冗余。假设同一门课程有40个学生选修,因为每门课程的学分是固定的,那么每门课程的学分就需要重复保存40次。

⎽可能存在更新异常,导致数据发生不一致的现象发生。如果调整了某课程的学分,相应的元组CREDIT 的值都需要更新,这时就有可能出现同一门课程学分不同的情况发生。

⎽存在插入异常现象。如计划开一门新课,但由于没有人选修,就没有学号关键字,只能等有人选修时才能把课程和学分存入。

⎽存在删除异常现象。若学生已经结业,将从当前数据库中删除这些学生的选修记录。而这是某些课程新生尚未选修,则此门课程及学分记录将无法保存。

分析问题的原因:

非关键字属性rCREDIT(学分)仅仅依赖于课程编号(CNO)而与学生编号(SNO)无关。

解决的方法:

对上面的表进行拆分:即形成两个数据表,一张是学生信息表SC,SC(SNO,CNO,GRADE),另一张表为:课程信息表COURSE,COURSE(CNO,CREDIT)

这两张表通过课程编号(CNO)进行关联。

学生信息表(SC)

---------------------------

SNO CNO GRADE

---------------------------

04020304 12345 98

04020304 12346 99

04020305 12345 96

04020305 12346 99

04020306 12347 97

04020307 12347 95

---------------------------

课程信息表(COURSE)

------------------

CNO CREDIT

------------------

相关文档
最新文档