首先了解幾個知識:
什麼是一對多,多對多,一對一
什麼是關聯查詢
什麼是主表,什麼是從表
外來鍵放的位置
正向查詢,反向查詢
各種設計模式下,怎麼查詢
一對多:
班級表和學生表
乙個班級可以有多個學生,乙個學生屬於那個班級
一對一:
學生表和學生資訊表
每個學生對應各自的學生資訊
多對多:
學生表和課程表
乙個學生可以選多門課程,乙個課程可以別多個學生選
關聯查詢:
查詢資料需要牽扯多個表,需要從多個表中提取字段資料
種類:內連線
外鏈結交叉攔截(笛卡爾積)
主表:
表中主鍵可以作為另乙個表的外來鍵關聯的表叫做主表
從表: 擁有此外鍵的表
一對一關係中外鍵放的位置:
(學生和學生資訊表)
放那個表都行,只不過就是主從表的區別
放在a表,b表就是主表
class
student
(models.model):id
= models.autofield(primary_key=
true
) sname = models.charfield(max_length=32)
# 一對一
detail = models.onetoonefield(
"studentdetail"
, to_field=
"id"
)# 等同於如下的**
# detail = models.foreignkey(to="studentdetail",to_field="id",unique=true)
class
studentdetail
(models.model):id
= models.autofield(primary_key=
true
) height = models.positiveintegerfield(
) email = models.emailfield(
) memo = models.charfield(max_length=
128)
一對多關係中外鍵放的位置:
(學生和班級表)
外來鍵放在多的那一方
class
class
(models.model):id
= models.autofield(primary_key=
true
) cname = models.charfield(max_length=32)
cdata = models.datefield(
)class
student
(models.model):id
= models.autofield(primary_key=
true
) sname = models.charfield(max_length=32)
# 一對多
# cid = models.foreignkey(to="class",to_field="id",related_name="student")
cid = models.foreignkey(to=
"class"
, to_field=
"id")
多對多關係中外鍵放的位置:
(老師和班級表)
多對多有多種設計方法:1:
(放乙個中間表)
class
teacher
(models.model):id
= models.autofield(primary_key=
true
) tname = models.charfield(max_length=32)
class
class
(models.model):id
= models.autofield(primary_key=
true
) cname = models.charfield(max_length=32)
cdata = models.datefield(
)class
teacher2class
(models.model)
:m id
= models.autofield(primary_key=
true
) tid = models.foreignkey(to=
"teacher"
,to_field=
"id"
) cid = models.foreignkey(to=
"class"
,to_field=
"id")2
:(兩個表)
class
class
(models.model):id
= models.autofield(primary_key=
true
) cname = models.charfield(max_length=32)
cdata = models.datefield(
)class
teacher
(models.model):id
= models.autofield(primary_key=
true
) tname = models.charfield(max_length=32)
cid = models.manytomanyfield(to=
"class"
,name=
"teacher"
)
正向查詢:
由主表查從表
反向查詢:
由從表查主表
關聯查詢:(一對多模式)
由一到多的語法:
一對應的模型類物件.多對應的模型類名小寫__set
b = bookinfo.objects.get(id=1)
b.heroinfo_set.all()
由多到一的語法:
多對應模型列物件.多對應的模型類中的關係類屬性名
h = heroinfo.objects.get(id=1)
h.hbook
多對多模式查詢:
我是清茶!歡迎你和我一起討論,我們下期見
django 資料庫建表流程,與表結構
目錄建立表結構 多表關連的設定 自建立關聯表方法 自建表 和 manytomanyfield 聯合使用 databases import pymysql pymysql.install as mysqldb warnings mysql.w002 mysql strict mode is not s...
資料庫建表
資料庫設計三大正規化 為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一...
資料庫建表
use 選擇現有資料庫。master為系統預設資料庫 use master goif exists select from sys.databases where name student drop database student gocreate database student gouse s...