1、三范式
规范化关系模式称为范式。
第一范式:在一个关系模型R中,如果R的每一个属性的值域中的值都是不可再分的最小数据单位,
则称R为第一范式(1NF)。
第二范式:如果一个关系模型R属于1NF,并且R的每一个非主属性都完全依赖于它的每一个候选键,
则称R为第二范式(2NF)。
第三范式:如果一个关系模型R属于2NF,并且R的任何一个非主属性都不传递依赖于
它的任何一个候选键,则称R为第三范式(3NF)。

举例:
关系模型:{职员、部门}
1NF:{职员编号、职员名、职位、工资、入职日期、部门名、办公地点}
2NF:{职员编号、职员名、职位、工资、入职日期、部门名}、{部门编号、部门名、部门办公地点}
3NF:{职员编号、职员名、职位、工资、入职日期、部门编号}、{部门编号、部门名、部门办公地点}
关系模型:学生、课程、成绩
1NF:{学号、学生名、课程号、课程名、成绩}
2NF:{学号、学生名}、{课程号、课程名}、{学生名、课程名、成绩}
3NF:{学号、学生名}、{课程号、课程名}、{学号、课程号、成绩}

白话3NF:
1NF:每个列要分到不能再分(最细一层)。
2NF:非主键列必须完全依赖于主键列(把不能完全依赖的列剔除,组成新的表)。
3NF:每个表除外键列以外,不能再有其它表的任何列。

2.实体关系模型
实体(Entity):现实中存在的抽象的事物。
属性(Attribute):实体的特征。
关系(Relationship):实体间(包括:实体和属性间)的相互作用,
分为:1对1,1对多,多对多三种。

举例:
1对1:一个职员/学生只能有一个名字。
1对多:一个职员只能属于一个部门,一个部门可以有多个职员。
多对多:一个学生可以学多门课程,一门课程可以有多个学员来学;
可以将一个多对多转化成2个1对多。

对应到数据库:
实体--》表
属性--》列
1对1关系--》主键
1对多关系--》外键
多对多关系--》关系表+2外键

3.Powerdesigner实操

4.练习
关系模型:{专业、班级、学生、课程、教师}
专业(专业代码、专业名)
班级(专业代码、班级号、班级)
学生(学号、姓名、性别、出生日期)
成绩(学号、课程号、成绩)
课程(课程号、课程名、学时)
讲授(课程号、教师编号)
教师(教师编号、姓名、职称、电话)
设置(专业代码、课程号)
MAJOR

5.作业
浦发银行数据库需求分析

Oracle_高级功能(1) 数据库设计的更多相关文章

  1. Oracle_高级功能(4) 数据库存储结构

    数据库存储结构分为:物理存储结构和逻辑存储结构.物理结构和逻辑结构分开,对物理数据的存储不会影响对逻辑结构的访问.1.物理存储结构 数据库文件 os block2.逻辑存储结构 tablespace ...

  2. Gemini.Workflow 双子工作流高级教程:数据库设计及各表作用说明

    整体数据库设计,可见这一篇:Gemini.Workflow 双子工作流高级教程:数据库-设计文档 这里对各数据表进行介绍: 工作流里的设计表并不多,核心只有以下8个: 下面按照流程的顺序来介绍一下表的 ...

  3. Gemini.Workflow 双子工作流高级教程:数据库-设计文档

    数据库设计文档 数据库名:Workflow_New 序号 表名 说明 1 WF_Activity wf_Activity 2 WF_ActivityInstance wf_ActivityInstan ...

  4. Oracle_高级功能(9) 性能优化

    1.oracle优化器 优化目标分为4种: choose (选择性) rule (基于规则) first rows(第一行) all rows(所有行) Description:描述sql的执行计划 ...

  5. Oracle_高级功能(7) 数据字典视图和动态性能视图

    oracle数据字典 1.概念数据字典是oracle数据库用来存储数据库结构信息的地方.数据字典是用来描述数据库数据的组织方式的,由表和视图组成.数据字典基表是在任何 Oracle 数据库中创建的第一 ...

  6. Oracle_高级功能(6) 分区

    oracle分区表1.分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区. 表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上 ...

  7. Oracle_高级功能(5) 用户、角色、权限

    一.用户(模式)1.定义用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作模式(schema):是某个用户所拥有的对象的集合.具有创建对象权限并创建了对象的用户称为拥有某 ...

  8. Oracle_高级功能(10) 备份恢复

    备份与恢复Oracle数据库有三种标准的备份方法,分别是导出/导入(EXP/IMP).热备份和冷备份.导出/导入是一种逻辑备份,冷备份和热备份是物理备份.一.导出/导入(Export/Import)利 ...

  9. Oracle_高级功能(8) 事务和锁

    Oracle数据库事务1. 事务定义在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元 ...

随机推荐

  1. flume 详细介绍

    http://blog.csdn.net/a2011480169/article/details/51544664 配有详细的例子. http://www.cnblogs.com/gongxijun/ ...

  2. 全局异常 同时ajax或是web跳转

    F8功能强大  在java代码debug的时候,F8键可直接跳到下一个类中.免去下一步 只用把之前两种方式合并即可,就是在exception包中不要ajax的异常,将其放入到web异常中,用if    ...

  3. 电子表格Excel

    电子表格Excel 本次课内容一.认识下Excel1.扩展名 office2007以前,扩展名是xls office2007,扩展名是xlsx 2.文件扩展名是xls或xlsx的文件,excel电子表 ...

  4. 吴裕雄 32-MySQL 导入数据

    1.mysql 命令导入使用 mysql 命令导入语法格式为:mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql)实例:# mysql -uroot -p123456 ...

  5. Chatbot中的填槽(Slot Filling)(转)

    以下内容是学习了@我偏笑发布在公众号hanniman文章后,加上自己观点重新输出配图的文章 原文链接:http://t.cn/RE0FkgD 跳槽,吐槽,匹诺曹都听过,这个填槽,emmmm,黑人问号脸 ...

  6. python基础学习Day9 函数的初识,实参、形参、

    1.函数 def my_len(): l = [,,,,,,] count = for i in l: count += print(count) my_len() 定义的my_len()方法时,其结 ...

  7. js高级-面向对象继承

    一.工厂模式创建对象及优缺点 继承就是把公共的部分抽象出来作为父类,基类.吃饭,跑步等 var a = {}; //批量创建不方便,不能重复设置公共属性的代码 //工厂模式出现了,创建10个Cat对象 ...

  8. 虚拟机 安装 CentOS7

    初次接触CentOS,最好是在虚拟机中安装: 因为CentOS的安装选项有很多,不理解的情况下千万不要在物理机上尝试: 不然可能出现这种情况:安装好以后,只有黑色的屏幕,只能在里面敲命令:这对于新手来 ...

  9. 使用WebStorm自动提示nodejs的有关代码

  10. spket插件安装并设置JQuery自动提示(转)

    spket是一个开发JavaScript.jQuery.Ext_js等的开发工具,它可以 是独立的IDE,也可以作为Eclipse的插件使用,下面介绍如何在Eclipse中安装spket插件: 1.首 ...