• 表与表的关联关系


    一、一对多 :外键创在多的一方 ,先创一的一方,多的一方的外键要依赖一的一方的主键 。

        多对一  : 本质也一样 反过来即可 。

    create table dept(
    id int PRIMARY KEY AUTO_INCREMENT COMMENT '部门id',
    dept_name VARCHAR(30) NOT NULL COMMENT '部门名称'
    )
    
    CREATE TABLE emp(
    eid int PRIMARY key auto_increment COMMENT '员工id',
    emp_name VARCHAR(30) NOT NULL  COMMENT '员工姓名' ,
    did int ,
    FOREIGN KEY(did) REFERENCES dept (id) 
    )

    二、一对一:

     2.1第一种方式:  就是在一对多的基础上 在多的一方的外键后加上唯一约束 unique 

    create table wife (
    wid int PRIMARY key  auto_increment ,
    wname VARCHAR(30) NOT NULL 
    )
    
    create table husband (
    hid int PRIMARY key  auto_increment ,
    hname VARCHAR(30) NOT NULL ,
    wid int UNIQUE,
    FOREIGN key(wid)  REFERENCES wife(wid)
    )

    2.2第二种方式: 让一张表的主键同时作为另一张表的主键  同时这一张表的主键 不能自增 ,

    因为是外键  可以重复 ,但是又是主键 便又不能重复 这样也就成为一对一。

    create table person (
    pid int PRIMARY key auto_increment,
    pname VARCHAR(30) NOT NULL 
    )
    
    CREATE TABLE card (
    cid int PRIMARY key ,
    num VARCHAR(18),
    FOREIGN key(cid) REFERENCES person(pid)
    )

    三 、多对多表的创建 :   作为联合主键 使这一对 不会出现重复的一对,

    create table teacher (
    tid int PRIMARY key auto_increment,
    tname VARCHAR(30) NOT NULL 
    )
    
    create table teacher_student(
    tid int ,
    sid int ,
    PRIMARY key (tid,sid) COMMENT'联合主键' , 
    FOREIGN key (tid) REFERENCES teacher(tid),
    FOREIGN key (sid) REFERENCES student(sid)
    )
    
    create table student (
    sid int PRIMARY key auto_increment,
    sname VARCHAR(30) NOT NULL 
    )
  • 相关阅读:
    thinkpad--Windows8 F11一键恢复方法
    ThinkPad---Windows8更换Windows7方法
    断网问题360解决方案
    网络故障诊断指南
    重装系统指南
    题目1123:采药
    题目1019:简单计算器
    题目1012:畅通工程
    你的隐私数据真的安全吗之memset()使用分析
    高光谱图像处理深度学习方法综述(一)
  • 原文地址:https://www.cnblogs.com/ych961107/p/12000928.html
Copyright © 2020-2023  润新知