主外來鍵的存在是依託兩個實體之間的關係而存在的;
比如班級與學生的關係:
乙個班級可以有多個學生,並且乙個學生只能屬於乙個班級,這就是一對多的關係;
那麼設計資料庫的時候就應該在學生表內存放班級的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之間的參照完...