zoukankan      html  css  js  c++  java
  • 【个人笔记】《知了堂》MySQL三种关系:一对一,一对多,多对多。

    一对一:比如一个学生对应一个身份证号、学生档案;

    一对多:一个班可以有很多学生,但是一个学生只能在一个班;

    多对多:一个班可以有很多学生,学生也可以有很多课程;

    一对多关系处理:

    我们以学生和班级之间的关系来说明一对多的关系处理方法。
    假设现有基本表班级表(班级号,备注信息,……)。学生表(学号,姓名),

                           

    方法一:
    在学生表中新增字段(班级号),该字段作为学生表的外键与班级表中的班级号关联。每一个学生实体在班级号字段的值,表示该学生属于的班级。

    方法二:
    新增一个关系表,用来表示学生与班级的属于关系,该关系表包含字段(学生号,班级号)。通过学生号与班级号的对应关系表示学生属于的班级。

    代码示例:

    -- 创建班级表
    CREATE TABLE t_class(
    c_id INT PRIMARY KEY AUTO_INCREMENT, --班级id
    c_name VARCHAR(20) NOT NULL UNIQUE --班级名称
    )


    -- 删除学生表
    DROP TABLE t_student;


    -- 创建学生表
    CREATE TABLE t_student(
    s_id INT PRIMARY KEY AUTO_INCREMENT,  --主键id
    s_name VARCHAR(15) UNIQUE,   --姓名
    s_sex VARCHAR(5) DEFAULT '男',  --性别
    s_age INT, --年龄
    s_class_id INT, --班级id

    使用外键关联班级表的主键,附:表的外键必须是另一张表的主键
    CONSTRAINT FOREIGN KEY(s_class_id) REFERENCES t_class(c_id)
    )


    -- 添加数据
    INSERT INTO t_student(s_name,s_sex,s_age)
    VALUES ('刘基','男','20')
    INSERT INTO t_student(s_name,s_sex,s_age)
    VALUES ('老刘','男','22')
    INSERT INTO t_student(s_name,s_sex,s_age)
    VALUES ('唐伯虎','男','20')

    小结:一般情况下,一对多关系采用方法一来处理。

     

    多对多关系处理:

     

    在多对多关系中,我们要新增加一个关系表。在学生表和课程表的基础上增加选课表来表示学生与课程之间的多对多关系。在选课表中,必须含有的属性有学生号和课程号。(学生号,课程号)这个属性集刚好也就是选课表的关键字。

    代码示例:

    -- 创建学生表
    CREATE TABLE student(
    t_id INT PRIMARY KEY AUTO_INCREMENT, -- 学号
    t_name VARCHAR(20), -- 学生名字
    t_age INT, -- 年龄
    t_sex CHAR(4), --性别
    t_date DATE,
    t_enrolDate DATETIME, 
    t_class VARCHAR(20)
    )
    -- 创建班级表
    CREATE TABLE class(
    b_id INT PRIMARY KEY AUTO_INCREMENT,
    b_name VARCHAR(20), --编辑编号
    b_bname VARCHAR(50), --班级名称
    b_start DATE --开班时间 类型 date   
    )
    -- 成绩表
    CREATE TABLE grade(
    c_id INT,
    c_nameId INT,  --学生id 类型 int
    c_courseId VARCHAR(40), --课程编号 类型 varchar
    c_coursegrade INT, --课程成绩  类型 int 
    c_exam DATE --考试时间 类型 date
    )
    -- 课程表
    CREATE TABLE course(
    k_id VARCHAR(40),  --课程编号 类型 varchar
    k_name VARCHAR(40)  --课程名称 类型 varchar
    )

  • 相关阅读:
    # 抗战电视剧《河山》观后感 #
    SAP MM 自定义条件类型出现在采购信息记录的'条件'界面里 ?
    SAP 对HU做转库操作,系统报错
    SAP MM 采购订单与相关合同的价格差异问题分析
    2019年终总结之SAP项目实践篇
    大学教师,要做教授,请不要做叫兽!
    SAP MM 一个含有多个账号分配对象的行项目的PO及其收货
    华哥演技好!--- 电视剧《魔都风云》观后感
    SAP 如何看某个TR是否传入了Q或者P系统?
    Linux IO 模型
  • 原文地址:https://www.cnblogs.com/1542986913Yu/p/7544640.html
Copyright © 2011-2022 走看看