1. 程式人生 > >Django - 模型層 - 下

Django - 模型層 - 下

CI == 模型 關聯 add 信息 多表 AR 出版

一、單表 多表 介紹

單表

多表
多對一 多對多 一對一

===============================================

一對多:
Book
id title price publish_id
1 php 100 1
2 python 200 1
3 go 300 2
Publish
id name email addr
1 人名出版社 @ 北京
2 沙河出版社 @ 沙河

一旦確定是 一對多

怎麽建立一對多的關系?---》 關聯字段 ,建在‘多’的表中

查詢python這本書的出版社的郵箱
(子查詢)
select email from Publish where id = (
select publish_id from Book where title = ‘python‘
)

===============================================

多對多:(彼此一對多)
Book
id title price publish_id
1 php 100 1

2 python 200 1
3 go 300 2
Author
id name age addr
1 alex 34 beijing
2 egon 29 nanjing
Book2Author
id book_id author_id
1 2 1
2 2 2
3 3 2

alex 出版過的書籍名稱 (子查詢:以一個查詢的結果作為下一個查詢的條件)
select title from Book where id in (

select book_id from Book2Author where author_id = (
select id from Author where name = ‘alex‘
)
)

===============================================

一對一:
Author
id name age authordetail_id(unique) (一定要加)
1 alex 34 1
2 egon 29 2
AuthorDetail (這個信息不經常查,為了效率,擴展)
id addr gender tel gf_name
1 beijing male 110 小花
2 nanjing male 911 紅花

===============================================

總結:
一旦確定是 一對多
怎麽建立一對多的關系?---》 關聯字段 ,建在‘多’的表中
一旦確定是 多對多
怎麽建立多對多的關系?---》 創建第三張表(關聯表): id 和 兩個關聯字段
一旦確定是 一對一
怎麽建立一對一的關系?---》 在兩張表中的任意一張表中建立關聯字段 + unique

Publish
Book
AuthorDetail
Author
Book2Author
=====================================================
create table publish(
id int primary key auto_increment,
name varchar(20)
);
create table book(
id int primary key auto_increment,
title varchar(20),
price decimal(8,2),
pub_date date,
publish_id int,
foreign key (publish_id) references publish(id)
);
create table authordetail(
id int primary key auto_increment,
tel varchar(20)
);
create table author(
id int primary key auto_increment,
name varchar(20),
age int,
authordetail_id int unique,
foreign key (authordetail_id) references authordetail(id)
);
create table book2author(
id int primary key auto_increment,
book_id int,
author_id int
);

=====================================================

二、創建模型

三、添加表記錄

四、基於對象得跨表查詢

五、基於雙下劃線得跨表查詢

六、聚合查詢與分組查詢

七、F查詢與Q查詢

。。。

。。。 後續補全

八、關聯管理器

。。。

。。。後續補全

Django - 模型層 - 下