zoukankan      html  css  js  c++  java
  • MySQL Class4

    学习内容:

    1.any all 关键字

    如果where 后的条件需要比对多个值时,可以用any或all关键字

    例如:

    SELECT cno,sno,degree FROM score WHERE degree >ANY(SELECT degree FROM score WHERE cno='3-245') AND cno='3-105' ORDER BY degree DESC;

    2.数据库设计:

    分析需求,设计E-R模型,利用三大范式审核结构,代码编写

    (a)E-R模型:

    包含实体,实体属性,实体间的关系

    实体即关键对象,例如学校内的教师就是一个实体,实体属性就是实体本身的一些特征,例如教师有工号、姓名、性别、年龄、教授的学科等属性,

    实体间关系,例如教师教授学生,教师与学生间的关系就是教授与被教授,同时实体间的关系还分为:1对1,例如每个人的基因都是唯一的,一对一的,

    一对多,例如一个老师可以教授多名学生,多对多,例如一个学生可以学多门课,而一门课有多个学生学习。

    E-R模型:

    设计时注意:

    1.如果是1:1的关系:那么将实体转换成表,将任意1端实体的主键拿到另一端实体做外键。

    2.如果是1:N的关系:那么将实体转换成表,关系不成表,将1端实体的主键拿到N端实体做外键,即1端为主表,n端为副表。

    3.如果是M:N的关系:将实体转换成表,关系形成表,同时将两端实体的主键拿过来作为该表的外键,形成复合主键。

    复合主键: 

    CREATE TABLE usecar(
    driverid INT,
    carid INT,

    PRIMARY KEY (driverid,carid),

    //复合主键,含一个以上的字段
    CONSTRAINT fk_driverid FOREIGN KEY(driverid) REFERENCES drivers(did)
    ON UPDATE CASCADE ON DELETE CASCADE,
    CONSTRAINT fk_carid FOREIGN KEY(carid) REFERENCES cars(cid)
    ON UPDATE CASCADE ON DELETE CASCADE
    );

    (b)范式:

    第一范式:将字段最小化分解,例如地址一般包含省市县街道这几级,把每一级分开成为多个字段。

    第二范式:确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言),一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中,如果一个表只有一个单一字段的主键且该表符合第一范式,那么该表必定符合第二范式。

    下表的主键是由订单编号和商品编号而形成的复合主键,商品名称、数量、单位、价格和订单编号主键没有关系,违反第二范式,应当把商品编号以及商品名称、数量、单位、价格单独建表

    第三范式:每一列与主键列直接相关,而不是间接相关,每条字段相互独立,不存在依赖关系,例如一条家电类商品信息,可以把家电的种类单独做一张表,用编号代替家电种类名称。

     例:

    学号 宿舍 费用
    062201 A 900
    062230 B 1200
    062240 B 1200
    知道学号或宿舍就能得到费用,违反范式3,应改为:
    学号 宿舍
    062201 A
    062230 B
    062240 B
     
    宿舍 费用
    A 900
    B 1200
  • 相关阅读:
    Java 并发核心编程
    JavaScript中的类型(二)
    IEEE 754 规定的双精度浮点数表示
    javascript 上传多个附件(struts)
    给自己放放松
    C语言快速排序
    Mac付费软件免费获取
    Keil4 uVision软件生成hex文件
    Mac苹果电脑安装虚拟机
    数据结构是什么
  • 原文地址:https://www.cnblogs.com/whwjava/p/8584352.html
Copyright © 2011-2022 走看看