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关于表格

    1.Bootstrap为表格提供了1种基础样式和4种附加样式以及1个支持响应式的表格. ☑  .table:基础表格 ☑  .table-striped:斑马线表格 ☑  .table-bordere ...

  2. 服务器监控(包括性能指标与web应用程序)

    http://blog.csdn.net/yao123long/article/details/53142029 http://blog.csdn.net/heyongluoyao8/article/ ...

  3. (转载)Html解析工具Jsoup

    jsoup 简介Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTM ...

  4. PbootCMS V1.1.4 正式发布

    PbootCMS V1.1.4 正式发布 PbootCMS V1.1.4 build 2018-06-251.修复自定义表单表名重复仍然添加成功问题:2.修复分享到微信导致页面错误的问题:3.修复静态 ...

  5. springboot集成grpc

    gRPC 简介 gRPC 是一个现代开源的高性能 RPC 框架,可以在任何环境下运行.它可以有效地将数据中心内和跨数据中心的服务与可插拔支持进行负载均衡.跟踪.健康检查和认证.它也适用于分布式计算,将 ...

  6. csu 1030: 素数槽

     素数槽 Description 处于相邻的两个素数p和p + n之间的n - 1个连续的合数所组成的序列我们将其称为长度为n的素数槽.比如,‹24, 25, 26, 27, 28›是处于素数23 ...

  7. [2-SAT] poj 3207 Ikki's Story IV - Panda's Trick

    题目链接: id=3207">http://poj.org/problem? id=3207 Ikki's Story IV - Panda's Trick Time Limit: 1 ...

  8. 【cl】maven新建项目

    http://blog.csdn.net/sushengmiyan/article/details/40142771 使用maven创建一个helloworld 在本地硬盘创建一个文件夹作为maven ...

  9. Mac下搭建hexo3.0博客

    Mac下搭建hexo3.0博客(文章同步自个人博客站点以及Github博客https://xingstarx.github.io/) window环境下搭建hexo博客 详细内容能够參考这一篇文章怎样 ...

  10. Patterns in the Composite Application Library

    Patterns in the Composite Application Library Inversion of Control https://www.codeproject.com/Artic ...