如何建立外來鍵是本身表的主鍵的外來鍵

2025-02-24 20:40:12 字數 5729 閱讀 4202

1樓:網友

create table newstype(id int primary key ,parentid int references newstype(id)

其他欄位你自己添吧。

比如殲胡弊插做雹入測試資料。

insert into newstype values (1,1);-這個執行沒問氏族題。

insert into newstype values (2,3);-會報錯。

2樓:一騎當後

可以用資料庫工具建立。

具棚消體歲談方法如下:

create table taba (af1 string ,af2 int null,af3 int null)

create table tabb (bf1 string ,bf2 int )

建立。constraint pk_af1 primary key

af1)constraint tabb primary key (bf1),constraint fk_tab1_tab2 foreign key (bf2)references taba(af1)

具體例子乎和碰如下:

create table vas_posstor_detail (

teamno varchar2(10) not null,pos_no varchar2(3) not null,item_code varchar2(10) not null,sort_no varchar2(5) not null,init_quantity number,sto_quantity number,ord_quantity number,del_price number(10,4),constraint pk_vas_posstor_detail primary key (teamno, pos_no, item_code),constraint fk_vas_poss_reference_vas_pos foreign key (teamno, pos_no)

references vas_posstorage (teamno, pos_no)

設定資料庫外來鍵時如何區分那個為主鍵表那個為外來鍵表

3樓:網友

a表必須有記錄,b表才能有,這個時候a表是主鍵表,b表外來鍵表。(a表裡面的記錄可以隨便錄入,但一般必須唯一,是主鍵;b表裡面錄入的東西就不是亂錄了,必須a表裡面有的記錄,才能錄入到b表中。b表裡面出現的任何一條記錄都必須在a表中找到與之對應的記錄,當然它可以重複出現,如果是1:

n的話)例如:學生表,成績表。學生表裡面必須有某個學生的資訊,成績表裡面才可能有這個學生的成績。

這個時候學生表示主鍵表,成績表示外來鍵表。如果學生表中乙個學生都沒有,成績表裡面也不能有,但是反之則可以。

一句話,主鍵表限制外來鍵表的資料。誰限制誰主鍵,誰被限制誰外來鍵。

4樓:網友

主鍵表——這個鍵值在這張表中為主鍵。

外來鍵表——這個鍵值在這張表中為外來鍵。

設定資料庫外來鍵時如何區分那個為主鍵表那個為外來鍵表

5樓:惠企百科

1、首先新建一張表,設定主鍵。

欄位,這個等下要關聯另外表的外來鍵。

資料庫表中的主鍵和外來鍵

6樓:網友

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

比如班級與學生的關係:

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

那麼設計資料庫的時候就應該在學生表記憶體放班級的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,'一班')

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

--可瞭解一些了?真累啊。

7樓:小山山

一般每個表建議都有主鍵,比如表a和表b,a的列式(aid,aa,bb,cc),其中aid就是主鍵,然後b是(bid,xx,yy,ab)bid為主鍵,ab是外來鍵對應a表的aid

然後你要是,然後你要查詢a表中的,aa,bb及b表中的xx,yy,且要是的b中xx,yy所在列的ab要等於a表中的aid,然後即可以這樣寫select ..from a a,b b where

外來鍵差不多就是這樣的,設定好b中的外來鍵後,此ab的值只能是a中aid範圍內的值,不能搞乙個aid中都沒有的值。

8樓:淦琳溪

我給你解釋吧!

拿你做例子嘍^-9,你們一家人在乙個表中,你姥姥一家在乙個表中,表中有共同的乙個人,你媽媽,因為這是你的資料庫,所以以你家為主,你媽媽在你家是 你爺爺的兒媳婦,地位是「兒媳婦」,到了你姥姥那邊,你媽媽是 女兒,地位是「女兒」,不管到哪邊,她們是乙個人,是不變的,這樣兩家就關聯起來了。

關於表是不是非有主鍵和外來鍵,不一定哦,其實可以將有主外來鍵關係的表合併,是吧?

為什麼要分開呢?主要是考慮到當資料量大的時候查詢效率的問題,這個就有點難了。

9樓:網友

樓上的guoweifyj先生,我很看好你!!

你講的非常透徹!@

資料庫的主鍵和外來鍵

10樓:網友

(1)誠如你所說,自增id做一般做主鍵,但一般不作為唯一標示的依據,可以加一列比如員工編碼(新增資料的時候要確保唯一)作為判斷是否為統一員工的依據,至於資料重複,要在新增資料的時候做好嚴重,如果已經存在相同的編碼,則不能再次插入,確保資料的唯一性。

2)其實跟第乙個問題是一回事,新增乙個欄位使用者編碼就解決問題了,至於delphi有哪個控制項可以實現這個功能這個問題,這根控制項沒有關係,只要在資料庫設定id自動增長就可以了, 管理員在介面上新增資訊時候,使用者編碼可以根據一定的規則確保唯一,可以有客戶輸入,也可以有程式自動生成,但必須驗證其唯一性。你說的部門id的問題看看dephi中有沒有類似於下拉框的空間,我也好久沒用不記得了,如果有的話直接使用就可以了,

11樓:網友

1,主鍵是聚集索引 不適合常修改 記錄也不易太大,用數字自增是最佳的。

至於別的列要唯一,加唯一約束即可。

2,程式裡或sql語句做連線即可。

12樓:瘋蟲子

身份證號是很適合做主鍵的,因為它不重複,身份證號怎麼可能容易改動。你見過有哪個人改過身份證號的嗎?18位還是15位並不影響它做主鍵。

delphi我不懂,直接用sql把部門名稱select 出來不就行了嗎?

select 員工名稱,部門名稱。

from 員工表 a,部門表 b

where a.部門id = b.部門id and a.員工id = '員工id'

13樓:熊妙婧

首先呢。為何會有重複資料進入啊。。。

用省份證號唄。你朋友說省份證號居然會容易改動?你問他 他這輩子改過幾次了?

一般 都用id自動增長的啦 或者 你用員工的工號不就解決問題了?

工號總不見得重複了吧。

在資料庫中的外來鍵與主鍵的關係是什麼?為什麼要設外來鍵?

14樓:隨o天

1、外來鍵的概念:外來鍵是關聯式資料庫三個完整性的五個約束條件之一,是表與表之間建立的一種關係。在oracle資料庫的scott/tiger使用者中,表dept和emp通過外來鍵進行了關聯。

在這裡dept表叫主表,emp表叫從表,外來鍵是欄位deptno。

2、加入外來鍵的條件:a、兩個表有相同屬性欄位,取值範圍相同;

b、外來鍵在主表中是主鍵或者是唯一欄位;

c、外來鍵可以是多個欄位的組合。

記住一句話:從表的外來鍵是主表的主鍵或唯一欄位。

15樓:老師小喬

要了解外來鍵與主鍵的關係首先先來了解一下參照關係與被參照關係。

細看:r(kr,f,..s(ks,..

f是關係r的非碼屬性,ks為s的主碼。若f與ks相對應則f為r的外碼。

r為參照關係(從表),s為目標關係(主表),或被參照關係。這樣的話主鍵與外來鍵的關係已經存在其中了:kr為r的主鍵,f為外碼但是關係s的主鍵(意思是指:

值要麼為null要麼一一對應)。

現實中的實體之間經常會存在一些聯絡,在關係模型中實體及實體間的聯絡都是用關係來描述的。自然就會有了關係與關係之間的引用。若要實現關係與關係之間的引用,就得引入外來鍵的概念。

資料庫中什麼是主鍵,什麼是外來鍵

16樓:四舍**入

主鍵(primary key): 也稱為主碼或主關鍵字,用於惟一地確定乙個元組的屬性或屬性組(複合主碼)。每個關係都有乙個並且只有乙個主碼。

外來鍵(foreign key):也稱為外碼或外部關鍵字。如果乙個屬性集不是所在關係的關鍵字,但是是其他關係的關鍵字,則該屬性集稱為外部關鍵字。

在關聯式資料庫中可以通過外來鍵使兩個關係關聯,這種聯絡通常是一對多(1:n)的,其中主(父)關係(1方)稱為被參照關係,從(子)關係(n方)稱為參照關係。

17樓:愛可生雲資料庫

外來鍵的設計初衷是為了在資料庫端保證對邏輯上相關聯的表資料在操作上的一致性與完整性。

優點:精簡關聯資料,減少資料冗餘。

避免後期對大量冗餘處理的額外運維操作。

降低應用**複雜性,減少了額外的異常處理。

相關資料管理全由資料庫端處理。

增加文件的可讀性。

特別是在表設計開始,繪製 er 圖的時候,邏輯簡單明瞭,可讀性非常強。

缺點:效能壓力。

外來鍵一般會存在級聯功能,級聯更新,級聯刪除等等。在海量資料場景,造成很大的效能壓力。比如插入一條新記錄,如果插入記錄的表有 10 個外來鍵,那勢必要對關聯的 10 張表逐一檢查插入的記錄是否合理,延誤了正常插入的記錄時間。

並且父表的更新會連帶子表加上相關的鎖。

其他功能的靈活性不佳。

比如,表結構的更新等。

建立外來鍵約束的步驟

建立測試主表.id 是主鍵.create table test main id int not null,value varchar 10 primary key id 建立測試子表.create table test sub id int not null,main id int value va...

松樹除了本身的木材外,還有那些利用價值

作為廣譜類工業原料,尤其作為上乘木材,松樹材質好,強度大,耐腐朽,紋理直,具有剛柔相濟,負重而不折,挺直不變形,堅韌而富有彈性的特點,可作建築 橋樑 礦柱 枕木 電杆 車輛 農具 器具 傢俱 造紙和人造纖維等用材。松香和松節油是重要的工業原料,廣泛地用於制皁 造紙 塗料 油墨 火柴 橡膠 粘合劑 印...

達州西外深夜噪音大如何投訴,達州西外的酒店有哪些?

投訴噪聲汙染時,選擇的部門有環保 信訪辦 市政 工商 城管 公安 社群 物業等。根據相關法律法規,噪聲汙染分多種,不同種類的噪聲汙染要到不同部門進行投訴,才能有效投訴。根據 中華人民共和國環境噪聲汙染防治法 和 桂林市城市管理暫行規定 相關規定,我國噪聲汙染大致分為四種,工業噪聲 建築噪聲 商業娛樂...