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),
);

路飞学城Python-Day96的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. Bootstrap关于表单控件(按扭)

    按钮也是表单重要控件之一,制作按钮通常使用下面代码来实现:   ☑  input[type=“submit”]   ☑  input[type=“button”]   ☑  input[type=“r ...

  2. android性能測试systrace

    一:简单介绍 systrace 是 Android4.1 引入的一套用于做性能分析的工具. 基于 Linux 内核的 ftrace 机制(用于跟踪 Linux 内核的函数调用), 能够输出各个线程当前 ...

  3. leetcode || 56、 Merge Intervals

    problem: Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3], ...

  4. MySQL出现Ignoring query to other database的问题

    今天使用mysql的时候,输入随意一条命令都会出: Ignoring query to other database 这条错误信息,非常是奇怪. 后来才发现是登录数据库时.少了个-u的參数.. 正确的 ...

  5. Centos安装FastDFS+Nginx

    一.安装环境: gcc:安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc: yum install gcc-c++ PCRE:PCRE(Perl C ...

  6. svn代码回滚命令【转】

    本文转载自:http://www.cnblogs.com/jndream/archive/2012/03/20/2407955.html 取消对代码的修改分为两种情况:   第一种情况:改动没有被提交 ...

  7. Linux - 理不清的权限chmod与chown区别

    chmod是修改第一列内容的 ,chown是修改第3,4列内容的. [root@local ~]# chmod 777 -R add.sh [root@local ~]# chown jiqing:j ...

  8. Windows下Vim主题变更

    默认的好丑! 主题位置. 修改配置文件. 添加主题设置. 新的主题,很高端大气. set fileencodings=utf8,ucs-bom,cp936,big set fileencoding=u ...

  9. c.vim的安装和使用

    之前写了一些废话,今天写的稍微具体点. 在mac上给vim装个插件,,倒腾了半天 先要去找到c.vim.zip,自己百度下,官网就有的,我mac下下来,是直接解压的格式,而不是*.zip,也就是说不需 ...

  10. Codeforces Round #198 (Div. 2)E题解

    E. Iahub and Permutations Iahub is so happy about inventing bubble sort graphs that he's staying all ...