django資料庫之建表

2021-10-11 17:52:56 字數 3556 閱讀 4911

首先了解幾個知識:

什麼是一對多,多對多,一對一

什麼是關聯查詢

什麼是主表,什麼是從表

外來鍵放的位置

正向查詢,反向查詢

各種設計模式下,怎麼查詢

一對多:

班級表和學生表

乙個班級可以有多個學生,乙個學生屬於那個班級

一對一:

學生表和學生資訊表

每個學生對應各自的學生資訊

多對多:

學生表和課程表

乙個學生可以選多門課程,乙個課程可以別多個學生選

關聯查詢:

查詢資料需要牽扯多個表,需要從多個表中提取字段資料

種類:內連線

外鏈結交叉攔截(笛卡爾積)

主表:

表中主鍵可以作為另乙個表的外來鍵關聯的表叫做主表

從表: 擁有此外鍵的表

一對一關係中外鍵放的位置:

(學生和學生資訊表)

放那個表都行,只不過就是主從表的區別

放在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...