• Oracle软件开发分析


    软件开发的步骤可大致分为:

    1.需求分析

    2.系统设计

    3.编码实现

    4.系统测试

    5.运行维护

    student class     多对一

    sno name age gender cid id  clsname 辅导老师,。。

    1  1   1   jd1613  xxx

    2  1

    系统设计中一个重要的环节就是数据库设计

    数据库设计的时候需要先进行数据建模(实体关系图 E-R)

    数据建模的依据就是前期所做的需求分析

    数据建模

    参照179页的图形:

    1.Model of system in client's mind

    2.Entity model of client's model

    3.Table model of entity model

    4.Tables on disk

    实体-关系图

    实体-关系图(Entity Relationship Diagram),也称为E-R,提供了表示实体类型、属性和关系的方法,用来描述现实世界的概念模型。

    构成E-R图的基本要素是实体、属性和关系

    实体(Entity):实体用来表示具有相同特征和性质的事物(类似于java的类(域对象)),实体由实体名和实体属性来表示。

    属性(Attribute):实体所具有的某一特性,一个实体可以有若干个属性

    关系(Relationship):实体彼此之间相互连接的方式称为关系。一般可分为以下 3 种类型:

    一对一关系 (1 1)

    这种关系比较少见

    维护关系:随意选择一方构建外键

    例如:Wife and Husband

    w1     h1

    wife  husband

    id name h_id  id name

    1   zs   1     1   lisi

    一对多关系 (1 N)

    比较常见:

    维护关系:在多的一方维护一方的唯一值列作为外键

    比如:

    student       class

    sno sname age c_id id name 老师

    1 1 1 jd1612  xx  

    2 1       1  jd1612 xx

    多对多关系 (M N)

    维护关系:构建桥表

    student(学生)     course(课程)

    sno  sname c_id id    name

    1     zs  1  1     yw

    2     lis  1  2     music

    1     zs  2

    student_course_brige

    sno    c_id

    1      1   primry key(sno,c_id)

    1      2

    2      1

    2      2

    may-be must-be

    在实体与实体之间的关系中,都会存在着may-bemust-be这俩种情况,例如:

    系统中有订单和顾客俩个实体(N:1关系),一个顾客对应多个订单,一个订单对应一个顾客,而且一个顾客可以(may be)没有订单和他对应,一个订单一定(must be)会有顾客和它对应.

    ER图中符号的表示

    1) #:主要标识

      (#):次要标识

    2) * : 非空

       #*:表示主键。

    3) o : 可有可无

    4) 虚线: may be  顾客这边虚线,顾客可能没有订单

    5) 实线: must be 订单这边实线,订单一定是属于某个客户。

    6) 竖杠(|): UID Bar代表要强制在(|)一方建立一个联合主键,将对方ID拿过来做联合主键

    简单点说就是外键同时做了当前表的主键

    7) 伞状图标代表多的一方,不是伞状图标则代表一的一方

    数据库设计

    数据建模完成之后,可以把ER图转换成数据中的表

    1.实体的名字转换为表的名字

    2.实体的属性转换为表中的列

    3.具有唯一特点的属性设置为表中的主键

    4.根据实体之间的关系设置为表中某列为外键列(主外键关联)

    设计关系数据库时,遵从不同的规范要求,才能设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

    目前关系数据库有六种范式:

    第一范式(1NF)

    第二范式(2NF)

    第三范式(3NF)

    巴斯-科德范式(BCNF)

    第四范式(4NF)

    第五范式(5NF,又称完美范式)

    :满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了

    第一范式:

        一个表中,每个列里面的值是不能再分割的.

        例如:我们设计的表中有一个列是:爱好

        这个列的值可能会是这样:足球篮球乒乓球

        但是这值是可以再分割的:足球、篮球、乒乓球

        所以这种设计是不满足第一范式

    第二范式:

    第二范式是在满足第一范式的基础上

        表中的非主键列都必须依赖于主键列

        例如:

        订单表: 订单编号 是主键

        订单编号  订单名称   订单日期  订单中产品的生产地

        这几个非主键列中,产品生产地是不依赖于订单编号的,所以这种设计是不满足第二范式

    第三范式:

    第三范式是在满足第二范式的基础上

    表中的非主键列都必须直接依赖于主键列,而不能间接的依赖.

    (不能产生依赖传递)

        例如:

        订单表:   订单编号 是主键

        订单编号  订单名称  顾客编号  顾客姓名

        顾客编号依赖于订单编号,顾客姓名依赖于顾客编号,从而顾客姓名间接的依赖于订单编号,那么这里产生了依赖传递,所以这个设计是不满足第三范式的

    主键和外键

    主键:

    1.能做主键的列必要满足非空唯一的特点

    2.只要满足非空唯一的列都可以做主键

    3.可以让表中一个有意义的列做主键,比如说学号,它既表示学生学号又作为表中的主键,因为这个列满足非空唯一的条件

    4.也可以找一个没有意义的列做主键,就是用来唯一标识一行记录的

    5.我们可以让多个列联合在一起做表中的主键,那么它就是联合主键,要求这几个列的值联合在一起是非空唯一的

    外键:

    1.表中的某一个列声明为外键列,一般这个外键列的值都会引用于另外一张表的主键列的值(有唯一约束的列就可以,不一定非要引用主键列)

    2.另外一张表的主键列中出现过的值都可以在外键列中使用

    3.外键列值也可以为空的,提前是这个外键列在表中不做主键,因为我们也可以把表中的外键列当做主键来使用(只有满足非空唯一的要求就可以)

    4.如果把B表中的联合主键的值引用到A表中做外键,因为是俩个列在B表中做联合主键,那么A表引用过来的时候也要把俩个列的值都引用过来,那么它们在A表中就会作为一个联合外键出现

    完整性约束:

    实体完整性:

    引用完整性

    列级完整性

    用户自定义

    建表:

    1.映射实体----

    2.映射属性----

    3.添加约束

    4.描述关系信息(外键)

  • 相关阅读:
    FXBlurView用法
    NSAttributedString用法
    SDWebImage的使用
    UITextField 对输入金额的约束
    Delphi获取计算机名
    delphi下实现控制其它窗体中的控件[转]
    根据版本的不同整理所有的绿色SQL Server[转]
    点击TWebBrowser中的超级链接不在新的IE窗口打开
    Delphi 快速获取本机的IP地址[转]
    Delphi下如何使程序在Win7/Vista上用管理员权限运行[转]
  • 原文地址:https://www.cnblogs.com/yzqm666/p/5886871.html
Copyright © 2020-2023  润新知