zoukankan      html  css  js  c++  java
  • 路飞学城Python-Day96

    51-数据库表关系之一对多
    为什么有多表的概念?
    一个Book有单表的时候只能查询Book表中的内容,要想查询更多的出版社的信息,需要再将单表的内容不断更新
    导致单表会存储大量的重复的信息,浪费了大量的空间,字段越多,重复的内容也会越来越多
    一对多的后果
    Book表
     
     
     
    id
    title
    price
    publish
    1
    php
    100
    人民出版社
    2
    python
    200
    沙河出版社
    3
    go
    100
    人民出版社
    4
    java
    300
    人民出版社
     
    Book
     
     
     
     
     
    id
    title
    price
    publish
    email
    addr
    1
    php
    100
    人民出版社
    111
    北京
    2
    python
    200
    沙河出版社
    222
    沙河
    3
    go
    100
    人民出版社
    111
    北京
    4
    java
    300
    人民出版社
    111
    北京
    一对多的实现:
    查询python这本书的出版社的邮箱(子查询)
    select publish_id from Book where title = "python";
    select email from Publish where id = 1;
    Book
     
     
     
    id
    title
    price
    publish_id
    1
    php
    100
    1
    2
    python
    200
    1
    3
    go
    100
    2
    4
    java
    300
    1
    Publish
     
     
     
    id
    name
    email
    addr
    1
    人民出版社
    111
    北京
    2
    沙河出版社
    222
    沙河
    一旦确定表的关系是一对多的时候,就创建关联字段,关联字段需要创建在多的那张表里

     
    52-数据库表关系之多对多
    Author
     
     
     
    id
    name
    age
    addr
    1
    alex
    34
    beijing
    2
    egon
    55
    nanjing
     
    Book2Author
     
     
    id
    book_id
    author_id
    1
    2
    1
    2
    2
    2
    查询alex出版过的书籍名称
    select id from Author where name = "alex"
    select book_id from Book2Author where author_id = 1
    select title from Book where id = book_id
    总结:一旦确定表的关系是多对多,一定要创建第三章关系表,就是三个字段,主键id+表1字段+表2字段

    53-数据库表关系之一对多一
    一对一的关系必须有抽离出的表
     
    Author
     
     
     
    id
    name
    age
    Authordetail_id(unique)
    1
    alex
    34
    1
    2
    egon
    55
    2
     
    AuthorDetail
     
     
     
     
    id
    addr
    gender
    tel
    gf_name
    1
    beijing
    male
    110
    小花
    2
    nanjing
    male
    911
    小娘
    所谓的一对一本质上就是可以放在一个表里,有的时候为了逻辑关系或者表的结构的整洁,就需要解耦这种关系表

    总结:一旦确定是一对一的关系,在两张表的任意一张表中建立关联字段+Unique
    54-数据库表关系之关联字段与外键约束
    一对多表如果互相之间没有关系的话,一般建立关联字段的时候就要建立表之间的约束关系,建关联字段是为了查询,建关联关系约束是为了处理未来可能出现的脏数据
    55-数据库表关系之sql创建关联表
    1.Publish
    CREATE TABLE publish(
                id INT PRIMARY KEY auto_inctrment ,
                name VARCHAR(20),
    );
    2.Book
    CREATE TABLE book(
                id INT PRIMARY KEY auto_inctrment ,
                          title VARCHAR(20),
                          price DECIMAL(8,2),
                            pub_date DATE,
                            publisg_id INT,
                            FOREIGN KEY (publish_id)REFERENCES publis(id),
    );
    3.AuthorDetail
    CREATE TABLE authordetail(
            id INT PRIMARY KEY auto_increment,
            tel VARCHAR(20),
    );
    4.Author
    CREATE TABLE authordetail(
            id INT PRIMARY KEY auto_increment,
            name VARCHAR(20),
            age INT,
            authordetail_id INT UNIQUE,
            FOREIGN KEY (autoordetail_id) REFERENCES authordetail(id),
    );
    5.Book2Author
    CREATE TABLE book2author(
            id INT PRIMARY KEY auto_increment,
            book_id INT,
            author_id INT,
            FOREIGN KEY (book_id) REFREENCES book(id),
            FROEIGN KEY (author_id) REFERENCES author(id),
    );
    Win a contest, win a challenge
  • 相关阅读:
    Java命令行启动jar包更改默认端口以及配置文件的几种方式
    Windows下带配置文件的mysql命令行安装方法
    Windows下mysql主从搭建
    Windows下mysql集群搭建
    CAP原则(CAP定理)、BASE理论(精简)
    进程间通讯的7种方式
    Go Web 编程之 数据库
    Go 每日一库之 fsnotify
    Go 每日一库之 viper
    Go 每日一库之 go-ini
  • 原文地址:https://www.cnblogs.com/pandaboy1123/p/9744188.html
Copyright © 2011-2022 走看看