主外來鍵一對多,多對多的理解

2021-12-29 21:42:36 字數 1108 閱讀 5679

主外來鍵的存在是依託兩個實體之間的關係而存在的; 

比如班級與學生的關係: 

乙個班級可以有多個學生,並且乙個學生只能屬於乙個班級,這就是一對多的關係; 

那麼設計資料庫的時候就應該在學生表內存放班級的id作為外來鍵,為什麼不在班級表內放學生呢? 

因為,你想一想班級表內如果放學生那麼記錄可能就是這樣: 

1班id 1班 xx同學id 

1班id  1班 xx同學id 

.. 這是不允許的,班級表內班級為主鍵,是唯一的不允許相同記錄的; 

下面簡單給你講下大概建成的表結構 

--建班級表 

create table class( 

classid int primary key,--定義班級id為主鍵 

classname varchar(15) 

) --建學生表 

create table students( 

studentid int primary key,--定義學生id為主鍵 

classid int ,--外鍵值,跟班級表classid 屬性型別相同 

stuname varchar(20),--學生姓名 

---定義外來鍵  www.2cto.com

foreign key(classid) references class(classid) --本表classid是基於class表classid的外來鍵 

) --------- 

如上定義了主外來鍵後,兩個表間的關係就是一對多的關係了,並且學生表內的classid必須依託班級表的classid存在,也就是說外來鍵必須要主鍵存在的時候才能建立,例如: 

--在班級表為空的情況往學生表插入一條記錄是不允許的: 

insert into students(studentid,classid,stuname)values(1,1,'小明') 

系統會丟擲異常提示主鍵表班級表內班級id不存在這樣是不允許插入的; 

必須要先往班級表內插入一條記錄: 

insert into class(classid,classname)values(1,'一班') 

後才能執行插入前面一條往學生表插入資訊的語句..   

作者 409304740

django 一對多,多對多查詢

假設有表的關係如下 1 class classes models.model 2 name models.charfield max length 32 3 institute models.charfield max length 32 4 headteacher models.foreignke...

表關係 一對一,一對多,多對多

可以在資料庫圖表中的表之間建立關係,以顯示乙個表中的列與另乙個表中的列是如何相鏈結的。更好的方法是將有關出版社的資訊在單獨的表,publishers,中只儲存一次。然後可以在titles表中放置乙個引用出版社表中某項的指標。為了確保您的資料同步,可以實施titles和publishers之間的參照完...

表關係 一對一,一對多,多對多

可以在資料庫圖表中的表之間建立關係,以顯示乙個表中的列與另乙個表中的列是如何相鏈結的。更好的方法是將有關出版社的資訊在單獨的表,publishers,中只儲存一次。然後可以在titles表中放置乙個引用出版社表中某項的指標。為了確保您的資料同步,可以實施titles和publishers之間的參照完...