1樓:匿名使用者
主鍵:在表中的作用是1確保表資料的唯一性(一個表中只有一個主鍵)2可以通過主鍵查詢到某一條資訊
外來鍵:是基於主鍵上的關聯,如果沒有主鍵外來鍵也就沒有意義,關聯好了的時候,可以更方便你對資料庫的增、刪、修、改,而不是對一個個表一個個來做動作!!
區別:一個表可以有多個外來鍵,但主鍵只有一個!
2樓:匿名使用者
主鍵主要是為了卻別資料表中可以保證唯一的 通常是找一個不能重複的欄位 來充當主鍵 而外來鍵的是為了關聯表資料的 比如說 我有個學生資訊表 有個成績表 可是我現在需要一次查詢出學生的成績和學生的個人資訊 那麼我們就可以在成績表中加個學生表的主鍵來作為外來鍵 這樣我們就可以通過外來鍵關聯到成績表 達到每個學生的資訊與成績表中的資料一一對應
3樓:愛可生雲資料庫
外來鍵的設計初衷是為了在資料庫端保證對邏輯上相關聯的表資料在操作上的一致性與完整性。
優點:精簡關聯資料,減少資料冗餘
避免後期對大量冗餘處理的額外運維操作。
降低應用**複雜性,減少了額外的異常處理
相關資料管理全由資料庫端處理。
增加文件的可讀性
特別是在表設計開始,繪製 er 圖的時候,邏輯簡單明瞭,可讀性非常強。
缺點:效能壓力
外來鍵一般會存在級聯功能,級聯更新,級聯刪除等等。在海量資料場景,造成很大的效能壓力。比如插入一條新記錄,如果插入記錄的表有 10 個外來鍵,那勢必要對關聯的 10 張表逐一檢查插入的記錄是否合理,延誤了正常插入的記錄時間。
並且父表的更新會連帶子表加上相關的鎖。
其他功能的靈活性不佳
比如,表結構的更新等。
資料庫的五種約束關係是什麼?主外來鍵有什麼用。求教
4樓:
資料庫的約束是為了體現資料庫
完整性的。
實體完整性有primary key (主鍵)參照完整性有foreign key (外來鍵)使用者自定義完整性有:列表非空(not null),列表唯一(unique),
檢查列值是否滿足一個布林表示式(check)通常就上面這5個了
後面更深還會有其他的,但是估計你現在還不用現在我給你解釋,主外來鍵
主鍵就是在一個表中,能夠唯一代表各元組值得就像我們的身份證號,全世界只有一個,是獨一無二的屬性外來鍵就是在一個表中,參照其他表中的主鍵的本表屬性就像在sc表中有sno不是主鍵,但它參照了s表中的主鍵sno,所以sno在sc表中就是外來鍵啦
希望我的回答能讓你理解這中知識。
不懂可以再問
5樓:匿名使用者
約束:為了保證表中資料的正確性和有效性的一種限制。
約束:主鍵約束:保證記錄的不重複,並且不能為空非空約束、檢查約束:限制莫一列的取值、預設值約束、唯一性約束:記錄唯一,可以有一行資料為空
外來鍵約束:這個是實現表與表之間的約束,從表的欄位值必須在主表中存在,比如
學生表和課程表都有一個公共欄位,學號,學號欄位在學生表中充當主鍵,在課程表中是外來鍵,那就保證了,所有參加考試學生必須都在學生表中。
資料庫中資料庫中 碼、候選碼、外部碼之間的關係是什麼
6樓:仁昌居士
主碼是從候選碼中挑出來的一個作為主碼,主碼和外部碼提供了一種表示不同關係之間內
相互關容聯的手段。
資料庫中碼又稱資料庫主碼,是資料庫中唯一能標識一個記錄值的內部記錄標誌符。
若關係中的一個屬性或屬性組的值能夠唯一地標識一個元組,且他的真子集不能唯一的標識一個元組,則稱這個屬性或屬性組做候選碼。
關係模式r中屬性或屬性組x並非r的候選碼,但x是另一個關係模式的候選碼,且x與r的主碼對應,則稱x是r的外部碼,也稱外碼。
7樓:匿名使用者
候選bai碼,有時簡稱為碼,主要是用du來表示zhi一個實體的屬性或屬性組;如
dao果有多個候選專碼的話,則從中選擇一
屬個作為主碼。而外部碼指的是如果一個關係r的屬性或者屬性組k,並不是這個關係的碼,而是另一個關係s的碼,則稱k是關係r的外部碼,簡稱外碼。
8樓:shine左瞳
碼是可以唯一標識實體的屬性或屬性集,候選碼,外碼,主碼都是碼
資料庫表中的主鍵和外來鍵如何關聯?
9樓:扈琇保瀚
主鍵:[編輯本段]概念
主關鍵字(主鍵,primarykey)是被挑選出來,作表的行的惟一標識的候選關鍵字。一個表只有一個主關鍵字。主關鍵字又可以稱為主鍵。
主鍵可以由一個欄位,也可以由多個欄位組成,分別成為單欄位主鍵或多欄位主鍵。
[編輯本段]作用
:1)保證實體的完整性;
2)加快資料庫的操作速度
3)在表中新增新記錄時,access會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重複。
4)access自動按主鍵值的順序顯示錶中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示錶中的記錄。
[編輯本段]特點
1)一個表中只能有一個主鍵。如果在其他欄位上建立主鍵,則原來的主鍵就會取消。在access中,雖然主鍵不是必需的,但最好為每個表都設定一個主鍵。
2)主鍵的值不可重複,也不可為空(null)。
外來鍵:如果公共關鍵字在一個關係中是主關鍵字,那麼這個公共關鍵字被稱為另一個關係的外來鍵。由此可見,外來鍵表示了兩個關係之間的聯絡。
以另一個關係的外來鍵作主關鍵字的表被稱為主表,具有此外來鍵的表被稱為主表的從表。外來鍵又稱作外關鍵字。
以上是摘抄的,簡單來說,主鍵就是一個關係中作為標識用的,而外來鍵是其他關係中的屬性,使用外來鍵可避免冗餘。
10樓:北桓崴
它們都是關聯式資料庫表設計的約束方式而已,為了保證資料庫中不會出現髒資料的限制方法。
主鍵是資料庫表的唯一索引序列,可以由多個欄位組成,但每條資料的這幾個欄位的組合必須唯一;主鍵約束僅涉及本表資料;
外來鍵是本表中該外來鍵欄位的取值要求是已經在目標表中存在的資料;假如說,表b有欄位b_1是表a中欄位a_1的外來鍵,那麼插入表b資料的時候,欄位b_1的取值要求在表a的欄位a_1的當前所有資料的值的範圍內。外來鍵是以外表資料約束本表資料的約束條件。
此外,外來鍵還有個要求,就是a_1必須是表a的主鍵。並且必須說得是,外來鍵是一個很煩人的資料庫約束。
11樓:匿名使用者
主外來鍵的存在是依託兩個實體之間的關係而存在的;
比如班級與學生的關係:
一個班級可以有多個學生,並且一個學生只能屬於一個班級,這就是一對多的關係;
那麼設計資料庫的時候就應該在學生表記憶體放班級的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),--學生姓名
---定義外來鍵
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,'一班')
後才能執行插入前面一條往學生表插入資訊的語句..
--------------可瞭解一些了?真累啊.
關於oracle資料庫使用者和資料庫之間的關係
表空間,其實是 預設表空間。也就是這個使用者 create table 語句,不指定表空間的話。就預設把表,建立在那個 預設表空間 上面。沒有給他指定其它表空間的管理許可權 但使用者a能操作其它表空間,在其它表空間中建立表,是怎麼回事哪。這個要看你到底給了多少許可權給這個使用者a 你要是sql gr...
資料庫問題,資料庫問題
一張表查資料不用建立檢視的吧,直接插入資料庫就可以 參考 檢視應用的舉例 例子5 3 使用with check option子句問題提出 若建立檢視ygb view,其程式清單如下 create view ygb view as select from 員工表 where 員工表.性別 女 執行下列...
SQL server是不是物件關聯式資料庫
sql server是物件關聯式資料庫這句話描述不準確,應該是sql server是由microsoft開發和推廣的關聯式資料庫管理系統 dbms 歷史 sql server最初是由microsoft sybase和ashton tate三家公司共同開發的,並於1988年推出了第一個os 2版本。m...