数据库三大范式、E-R图

第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;

例如:userInfo:山东省烟台市  131777368781           userAds:山东0省烟台市  userTel:131777368781 

 

第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;

例如:订单表只描述订单相关的信息,所以所有字段都必须与订单id相关       

产品表只描述产品相关的信息,所以所有字段都必须与产品id相 关;

因此不能在一张表中同时出现订单信息与产品信息;如下图所示(1张表拆成2张表):

 

 第三范式(3NF):必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);

例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户id即可(外键),而不能有其他的客户信息。因为其他的客户信息直接关联于用户id,而不是直接与订单id直接相关。

第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。此解释转自这里

【如何更好的区分三大范式】

         第 一范式和第二范式在于有没有分出两张表,第二范式是说一张表中包含了多种不同的实体属性,那么要必须分成多张表, 第三范式是要求已经分成了多张表,那么一张表中只能有另一张表中的id(主键),而不能有其他的任何信息(其他的信息一律用主键在另一表查询)。

总结:

第1范式:每个表中都有1列,并且该列是不可拆分的最小单元(强调的是列的原子性,即列不能够再分成其他几列)

第2范式:1张表只描述一件事情(非主键列是否完全依赖于主键,还是依赖于主键的一部分)

第3范式:用外键做表的关联(非主键列是直接依赖于主键,还是直接依赖于非主键列)

【数据库五大约束】

1.primary KEY:设置主键约束;
2.UNIQUE:设置唯一性约束,不能有重复值;
3.DEFAULT 默认值约束,height DOUBLE(3,2)DEFAULT 1.2 height不输入是默认为1,2
4.NOT NULL:设置非空约束,该字段不能为空;
5.FOREIGN key :设置外键约束。

【主键】
1.主键的注意事项?
主键默认非空,默认唯一性约束,只有主键才能设置自动增长,自动增长一定是主键,主键不一定需要自动增长;
2.设置主键的方式?
在定义列时设置:ID INT PRIMARY KEY
在列定义完之后设置:primary KEY(id)

【外键】

1.设置外键的注意事项:   

只有INNODB的数据库引擎支持外键,修改my.ini文件设置default-storage-engine=INNODB    外键必须与参照列的数据类型必须相同(数值型要求长度和无符号都相同,字符串要求类型相同,长度可以不同)。

2设置外键的语法:

   CONSTRAINT 外键名 FOREIGN KEY (外键字段)REFERENCES 参照表 (参照字段)    ON DELETE SET NULL ON UPDATE CASCADE 设置参照完整性

3.外键约束的参照操作?  

  参照表的完整性操作:当对参照表的参照字段进行删除或更新时,外键表中的外键如何应对;   

参照操作可选值:

      RESTRICT拒绝参照表删除或更新参照字段;               

      RESTRICT和NO ACTION相同,但这个指令只在mysql生效;                

      CASCADE删除或更新参照表的参照字段时,外键表的记录同步删除更新;               

      SET NULL 删除或更新参照表的参照字段时,外键表的外键设为NULL; 

E-R图

一、那么什么是E-R模型?

 E-R模型即实体-联系模型,E-R模型的提出基于这样一种认识,数据库总是存储现实世界中有意义的数据,而现实世界是由一组实体和实体的联系组,E-R模型可以成功描述数据库所存储的数据。

二、为什么要设计E-R模型?

 设计E-R模型能够更有效和更好的模拟现实世界。

三、E-R模型的基本要素

1) 实体 :实体是E-R模型的基本对象,是现实世界中各种事物的抽象,凡是可以相互区别,并可以被识别的事、物概念等均可认为是实体。在一个单位中,具有共性的一类实体可以划分为一个实体集,例如,学生李明,黄颖等都是实体,为了便于描述,可以定义学生这样的一个实体集,所有学生都是这个集合的成员。

2)属性:每个实体都具有各种特征,称其为实体的属性,如学生有学号,姓名,年龄等属性。实体的属性值是数据库存储的主要数据。能唯一标识实体的属性或属性组称为实体键,如一个实体有多个键存在。则可从中选取一个作为主键。

3)联系:实体间会存在各种关系,如人与人之间可能存在领导与雇员关系等,实体间的关系被抽象为联系。

四、E-R图的四个组成的部分

矩形框:表示实体,在矩形框中写上实体的名字

椭圆形框:表示实体或联系的属性

菱形框:表示联系,在框中记入联系名

连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)。

五、将E-R模型转化为关系模型

1、实体转化为关系  

实体集转化为关系非常简单,只需将实体的属性作为关系的列即可(实体的所有属性);

2、联系转化为关系

1)一对一联系需要将其中一个实体的主键作为另一个实体的属性。反映到映射中,将一个关系的主键作为另一个关系的普通列联系本身的属性也应当以列的形式植入。对于一对一关系可将主从关系颠倒,也不会导致信息丢失

        可将角色编号作为用户关系中的一个普通列,反过来也可以!

2)一对多联系,需要将一的一方作为主表,多的一方作为从表。联系的所有属性为从表的列,这样才不会导致信息丢失。

  如学生与班级:学生信息为从表,班级信息为主表

3)一对多。无论联系加入到哪一方都将造成信息丢失。

  如学生与选课。可以将学号,课程Id,以及关系的属性---学分作为新关系的列

六、例子

E-R图表示某个工厂物资管理的概念模型

实体包括:

仓库: 仓库号、面积、电话号码;

零件 :零件号、名称、规格、单价、描述;

供应商:供应商号、姓名、地址、电话号码、帐号;

项目:项目号、预算、开工日期;

职工:职工号、姓名、年龄、职称;

实体之间的联系

仓库------零件

1、一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件是多对多的关系。

2、用库存量来表示某种零件在某个仓库中的数量

仓库------职工

1、一个仓库拥有多个职工,一个职工只能在一个仓库中工作,仓库和职工是一对多的关系

2、职工之间有领导和被领导的关系,因为管仓库肯定有个头,所以有领导和被领导的关系。

E-R图如下所示

  • 47
    点赞
  • 255
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课 程 设 计 报 告 书 专 业: 信息管理与信息系统 课程设计名称: 《数据库原理及应用》 题 目: 人事管理系统 班 级: XXXXXXX 设 计 者: XXX 完 成 时 间: 2010-06-18 一:需求分析 通过实际调查,要求本系统具有以下功能: 1)良好的人机界面 2)要求实现一定的权限管理 3)方便的数据查询功能 4)方便的添加,删除和修改数据功能 二:开发工具选择 本系统采用SQL Server 2005创建后台数据库,前台开发工具利用Visual Studio 2005进行开发,同时运用一定C#语言的辅助 三:系统功能设计 要设计一个完备的企业人事管理系统,需涉及大量的信息,因目前还未涉及C#语言的学 习,只能简化系统设计,只选取与企业基本信息紧密相关的部门信息,员工信息以及考 勤信息等进行管理。具体规划的模块如下: 1. 部门信息管理:包括部门信息的查询,修改,添加,删除等功能 2. 员工信息管理:包括员工基本信息的查询,修改,添加,删除等功能 3. 考勤信息管理:包括考勤信息的录入,查看等功能 四:系统功能设计 根据功能的关联关系,将功能细化为下所示的功能结构1),其业务流程如( 2)所示。 (1) (2) 五:系统数据库设计 1:实体E-R 根据人事管理系统的系统分析与功能设计,人事管理系统中主要包括部门信息实体 ,员工信息实体,职位信息实体,考勤信息实体等,下面为它们的E-R: 实体E- R 2:由实体E-R得到的关系模式如下: 员工表(员工编号 姓名 性别 职位 学历 所属部门 联系电话 出生年月 政治面貌 婚姻状况) 部门表(部门编号 部门名称 负责人 办公室) 考勤表(员工编号 考勤编号 考勤月份 出差天数 病假天数 事假天数) 职位表(职位编号 职位名称 所属部门) 婚姻表(员工编号 婚姻状况) 政治面貌表(员工编号 政治面貌) (说明:以上关系模式达到第三范式) 3 数据库关系: 六:前台界面设计 1 创建项目 启动程序"Microsoft Visual Studio 2005",创建项目,创建文件夹。 2 模板页设计 添加新项——选择母版页,命名为MasterPage.master,添加一行两列的ta ble,将模板编辑区拖入右边单元格中,在左侧单元格中 添加treeciew控件,建立如所示的目录树 再创建一模板页保存为MasterPage2.master,雷同上述操作建立如下所示的母版页: 3.查看部门信息窗体 添加一应用模板一的web窗体,命名为ckbm.aspx,在编辑区中输入相应文本,配置数据 源,并添加gridview和detailsview控件,建立如下所示窗体,实现部门信息的查看: 4.修改部门信息窗体 添加一应用模板一的wen窗体,命名为xgbm.aspx,在编辑区内输入相应文本,配置数据源 ,并设置其select查询属性,添加gridview控件,再配置数据源,设置其delect查询属 性和updata查询属性,建立如下所示的窗体,实现管理员对部门信息的编辑,更改,删 除操作: 5.添加部门信息窗体 添加一应用模板一得web窗体,命名为tjbm.aspx,在编辑区内输入相应文本,配置数据 源,添加一十行两列的table,分别添加相应的label控件和textbox,最后添加两个butt on控件,分别将其text文本改为"确定""取消",配置数据源,并设置其insert查询属性 ,建立如下所示的窗体,实现部门信息的录入: 以上为部门信息管理模块部分的窗体设计过程和示例,员工信息管理模块和考勤信息管 理模块均与其类似,应用模板一实现的均是系统管理员的权限,可以对系统内部信息添 加,删除,修改,查看,下面为应用模板二的普通用户的权限实现页面,实现过程与以 上页面均为相似,以查看考勤信息页面为例: 6 母版页导航的实现 各个具体功能页面建好之后,回到模板页,将建好的目录树与相应的具体 共能页面之间建立联系,实现 导航的功能,使得用户使用时方便在各个页面之间进行转换。分别应用模 板页建立管理员和普通用户登录时的欢迎界面 7 登录窗体设计 添加新项——选择web窗体,命名为dl1.aspx,单击确定。在页面中输入相 关文本,然后添加两个hiperlink控件,并将其text 文本改为"管理员""普通用户",将其NavigateUrl设置为"gly.aspx""pty h.aspx" 将中的"管理员"和"普通用户"分别与建好的管理员登录欢迎界面和普通 用户欢迎界面链接在一起,方便用户实现自己权限范围内 的访问和操作。 七:代码部分 在设计过程中运用到的代码,下面以几个页面源代码作为示例 1. 添加部门信息 using System; using

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值