zoukankan      html  css  js  c++  java
  • MySQL数据库(四)—— 数据库设计

    一、多表之间的关系的分类

    (一)、一对一之间的关系

    如:人和身份证

    分析:一个人只有一个身份证,一个身份证只能对应一个人。

    (二)、一对多(多对一)之间的关系

    如:部门和员工

    分析:一个部门有多个员工,一个员工只能有一个部门。

    (三)、多对多之间的关系

    如:学生和课程

    分析:一个学生可以选择很多门课程,一个课程也可以被多个学生选择。

    二、一对多(多对一)关系实现

    如:部门和与员工

    实现:在多的一方建立外键,指向一的一方的主键。

     三、多对多关系实现

    如:学生和课程

    实现:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键。

    中间表每一对值可作为联合主键。

     四、一对一关系实现

    如:学生和身份证

    实现:可以在任意一方添加唯一外键指向另一方的主键。

    五、数据库三大范式概述

    概念:设计数据库时需要遵循的规范。要遵循后面的范式要求,必须先遵循前面的范式要求。

    分类:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。

    六、第一范式(1NF)

    概念:每一列都是不可分割的原子数据项

     七、第二范式(2NF)

    概念:在1NF的基础上,非码属性必须依赖于候选码属性(在1NF的基础上消除非主属性对主码的部分函数依赖)

    注:

    1.函数依赖:A-->B,如果通过A属性(属性组)的值,可以确定唯一B属性的值,则称B依赖于A。例如:学号-->姓名,(学号,课程)-->分数

    2.完全函数依赖:A-->B,如果A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性值。例如(学号,课程)-->分数

    3.部分函数依赖:A-->B,如果A是一个属性组,则B属性值的确定只需要依赖于A属性组中某一些值即可。例如(学号,课程)-->姓名

    4.传递函数依赖:A-->B,B-->C,如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值,可以确定唯一C属性的值,则称C函数传递依赖于A。

      例如:学号-->系名,系名-->系主任,称系主任传递依赖学号。

    5.码:如果在一张表中,一个属性或属性组,被其他属性所有属性完全依赖,则称这个属性(属性组)为该表的码。例如:上表中码为:(学号、课程名称)

    主属性:码属性组中的所有属性

    非主属性:除码属性组的属性

     八、三范式:在2NF的基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

    九、数据库的备份和还原

    (一)命令行方式

    1.备份语法:mysqldump -u用户名 -p密码 数据库名称 > 路径

    2.还原语法:

    (a) 登录数据库

    (b) 创建数据库

    (c) 使用数据库

    (d) 执行文件。 source 文件路径

    (二)图形化方式

    1.备份数据库

    (a) 选择备份/导出——>备份数据库,转储到SQL

    (b)选择路径,输入文件名,点击导出,成功后点击完成

     2.还原数据库

    (a) 删除数据库后,执行SQL脚本,点击执行,成功后点击完成。

      

  • 相关阅读:
    Encryption (hard) CodeForces
    cf 1163D Mysterious Code (字符串, dp)
    AC日记——大整数的因子 openjudge 1.6 13
    AC日记——计算2的N次方 openjudge 1.6 12
    Ac日记——大整数减法 openjudge 1.6 11
    AC日记——大整数加法 openjudge 1.6 10
    AC日记——组合数问题 落谷 P2822 noip2016day2T1
    AC日记——向量点积计算 openjudge 1.6 09
    AC日记——石头剪刀布 openjudge 1.6 08
    AC日记——有趣的跳跃 openjudge 1.6 07
  • 原文地址:https://www.cnblogs.com/upyang/p/12130891.html
Copyright © 2011-2022 走看看