day4-mysql数据关系

数据关系

数据关系也就是说一个表的某一列(多列)的值是外键,这样他们其中一个表依赖于另一个表,在有很多表中,这种依赖将错综复杂,形成了一个网。这个就是数据关系。通过这种关系来保存数据的数据库,我们叫它关系数据库。

假设我们要设计一个数据库表用来保存班级和学生要如何设计?

数据关系中的
一对一:比如一个学生对应一个学校的网站帐号,一个网站帐号也只能被一个学生使用。
一对多:比如一个班级对应多个学生,或者说多个学生属于同一个班级
多对多:比如学生和课程之间的关系,1个学生可以选择语文、数学、英语,同时语文又会被多个学生选择。

 

ER图

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时在”实心线段“旁标上联系的类型(1:1,1:n或m:n)。

 作业

  所有的学生信息,我们要知道学生是属于哪个班级的,这个班级班主任是谁,学校有哪些老师,这些老师都分别教哪些课程,
  这些老师分别担任哪些班的班主任,学生没门成绩多少分。
  5张表

数据库范式

范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。数据库范式分八种,通常用到的只有三种范式。

范式一(1NF):

强调的是列的原子性,即列不能够再分成其他几列。

例如:

考虑这样一个表:联系人(姓名,性别,电话)
如果在实际场景中,一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF。要符合 1NF 我们只需把列(电话)拆分,即:联系人(姓名,性别,家庭电话,公司电话)

 

范式二(2NF)

一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。

例如:

因为我们知道在一个订单中可以订购多种产品,所以单单一个 OrderID 是不足以成为主键的,主键应该是(OrderID,ProductID)。显而易见 Discount(折扣),Quantity(数量)完全依赖(取决)于主键(OderID,ProductID),而 UnitPrice,ProductName 只依赖于 ProductID。所以 OrderDetail 表不符合 2NF。不符合 2NF 的设计容易产生冗余数据。

 

范式三(3NF)

非主键字段不能相互依赖。

例如:

订单表(订单号,订单日期,客户号,客户姓名,客户性别,客户年龄)

上述表就不满足第三范式,如要满足第三范式,必须新建一个客户表,然后订单表中只放客户编号。

 

 作业

  第一题: 根据以下ER图建立数据库表

  

 第二题: 自己画一个购物网站的ER图,并设计表结构。

 

posted on 2019-05-20 20:26  李双龙  阅读(616)  评论(0编辑  收藏  举报

导航