zoukankan      html  css  js  c++  java
  • 数据库设计

    1. 多表之间的关系
    2. 分类:
      1.一对一
      * 如:人和身份证
      • 分析:一个人只有一个身份证,一个身份证只能对应一个人
        2.一对多
        如:部门和员工
        • 分析:一个部门有多个员工,一个员工只能对应一个部门
          3.多对多
        • 如:学生和课程
        • 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择
    3. 实现关系:
      1. 一对多(多对一):
        实现方式:在多的一方建立外键,指向一的一方的主键
        2. 多对多:
        实现方式:需要借助第三张中间表,中间表必须包含两个字段,这两个字段作为第三张表的外键,指向另外两张表的主键
        3. 一对一(了解):
        • 如:人和身份证
        • 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。

    数据库的三大范式

    • 概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求

      设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
      目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

    • 分类:

      1. 第一范式(1NF):每一列都是不可分割的原子数据项
      2. 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的部分函数依赖)
      3. 第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
      • 几个概念:
        1.函数依赖:A-->B: A是一个属性,如果A属性的值可以确定唯一的B属性,则称B依赖于A
        例如:学号-->姓名
        2.完全函数依赖:A-->B:A是一个属性组,如果B属性的值需要A属性组中所有属性才能确定,则称B属性完全依赖于A
        例如:学号,课程名称-->分数
        3. 部分函数依赖:A-->B,A是一个属性组,如果B属性的值确定只需要A属性中某一个值,则称B部分依赖于A
        例如:学号,课程名称-->姓名
        4. 传递函数依赖:A-->B, B -- >C ,A如果是一个属性或者属性组,如果通过A属性可以确定唯一的B属性,在通过B属性可以确定唯一的C属性,则称C属性传递依赖于A属性
        例如:学号-->系-->系主任
        5. 码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码
        * 候选码:关系中存在多个属性或属性组都能唯一标识该关系的元组(一行数据),这些属性或属性组就成为该关系的候选键或候选码.
        • 主码:在一个关系的若干候选码中指定一个用来标识该关系的元组,这个被指定的候选码称为主关键字,称为主键或主码. 每个关系都有且只有一个主键,通常用较小的属性组作为主键.
        • 主属性:包含在任何一个候选码中的属性称为主属性
        • 非主属性:不包含在任何一个候选码中的属性称为非主属性
  • 相关阅读:
    用js仿探探拖拽卡片的效果、飞卡片的效果,感觉挺酷,最后有美女看哦!
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    一万字详解 Redis Cluster Gossip 协议
    socket实现一个简单的echo服务
    Netty实现丢弃服务协议(Netty4.X学习一)
    大型情感剧集Selenium:8_selenium网页截图的四种方法
    python原类、类的创建过程与方法
    Flask使用bootstrap为HttpServer添加上传文件功能
    pycharm的集成vim
    几款在线脑图制作工具
  • 原文地址:https://www.cnblogs.com/linjing111/p/12706667.html
Copyright © 2011-2022 走看看