當前位置:首頁 » 數據倉庫 » 資料庫選課表的主鍵
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫選課表的主鍵

發布時間: 2022-09-22 22:16:36

1. 資料庫表裡的外鍵能設置成主鍵嗎

擁有外鍵的表,其外鍵一般來自參照表的主鍵。
比如學生表和選課表關聯…
學生表主鍵是學號,
課程表主鍵是課程號,
選課表外鍵是學號,課程號也是外鍵,主鍵是學號和課程號聯合。
也就是父表(學生)(課程)的主鍵在子表(選課)中當外鍵。
一個表可有多個外鍵,只能有一個主鍵。
選課表裡的學號取值必須來自學生表的學號。

2. 資料庫裡面的主鍵和外鍵及候選鍵是什麼意思啊

1、主鍵(primary key)吧:一張表(關系)的一個列(屬性)或多個列可以作為主鍵,但是前提是讓這個列作主鍵,這個列就能保證該列下的各個行(元組)的值不能相同,比如說用姓名屬性作主鍵的話,那麼這個主鍵就不一定可以,如果有兩個人是同樣的名字的話,就不能做到該屬性下的各個元組數據的值不同,如果用阿拉伯數字作主鍵就是一個很好的選擇。
2、外鍵(foreign key):一張表(關系)的列(屬性)它同時存在表1和表2中,它不是表1的主鍵,而是表2的主鍵,就可以說他是表1的外鍵。
3、候選鍵(Candidate Key):能唯一標識表(關系)中行(元組)的列(屬性),則稱該屬性為候選鍵,也稱 候選關鍵字 或 候選碼;由此來看候選鍵可以不只一個,還看一看得出的就是主鍵同時它也是候選鍵。

3. 資料庫中的鍵、主碼、主鍵是什麼意思

碼(鍵):代表數目的符號
主碼也就是主鍵,是惟一標識表中的每一行的欄位或者多個欄位的組合,它可以實現表的實體完整性
每個表只能有惟一的主碼,且不能為空
這需要理清幾個概念:
1)候選鍵: 關系中的一個屬性組,其值能唯一標識一個元組,若從該屬性組中去掉任何一個屬性,它就不具有這一性質了,這樣的屬性組稱作候選碼。

2)主鍵:當有多個候選碼時,可以選定一個作為主碼,選定的候選碼稱主鍵

3)外鍵: 關系R中的一個屬性組,它不是R的候選碼,但它與另一個關系S的候選碼相對應,則稱這個屬性組為R的外碼或外鍵。

舉個例子:
有兩個關系:
student(s#,sname,d#),即學生這個關系有三個屬性:學號,姓名,所在系別
dep(d#,dname),即院系有兩個屬性:系號、系名

則s#、d#是主鍵,也是各自所在關系的唯一候選鍵,d#是student的外鍵

4. 學生管理系統資料庫中的主鍵與外鍵分別是什麼

這個問題 問的真心覺得不咋地。。 不止一個表吧。你最起碼 把實體關系弄清楚。然後各個屬性梳理 通。 簡單的舉個例子。 比如 裡面有一張 學生表。。一般來講 學生表裡的 學號就設為 主鍵。還有一張 表是課程表 。裡面的課程號一般就設為該表的 主鍵。 還有一張 分數表。裡面有(學號,課程號,分數)這裡面 學號 和課程號就 設為這張表的 外鍵了。 這是 簡單的 三張表之間的關系。肯定 系統 一般都不止三個表。。但你梳理好關系 就不難設表。

5. 資料庫表中的主鍵有什麼作用

資料庫主鍵

主鍵:表中經常有一個列或多列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可強製表的實體完整性。當創建或更改表時可通過定義 PRIMARY KEY 約束來創建主鍵。一個表只能有一個 PRIMARY KEY 約束,而且 PRIMARY KEY 約束中的列不能接受空值。由於 PRIMARY KEY 約束確保唯一數據,所以經常用來定義標識列。

作用:

1)保證實體的完整性;

2)加快資料庫的操作速度

3) 在表中添加新記錄時,ACCESS會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重復。

4) ACCESS自動按主鍵值的順序顯示表中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示表中的記錄。

在有些資料庫中,雖然主鍵不是必需的,但最好為每個表都設置一個主鍵,不管是單主鍵還是復合主鍵。它存在代表著表結構的完整性,表的記錄必須得有唯一區分的欄位,主鍵主要是用於其他表的外鍵關聯,以及本記錄的修改與刪除。

主鍵的無意義性

在開發過程中,讀者可能會看到將一些表使用有意義的欄位表示主鍵,例如「用戶登錄信息表」將「登錄名」(英文名)作為主鍵,「訂單表」中將「訂單編號」作為主鍵,如此設計主鍵一般都是沒什麼問題,因為將這些主鍵基本不具有「意義更改」的可能性。但是,也有一些例外的情況,例如「訂單表」需要支持需求「訂單可以作廢,並重新生成訂單,而且訂單號要保持原訂單號一致」,那將「訂單編號」作為主鍵就滿足不了要求了。因此讀者在使用具有實際意義的欄位作為主鍵時,需要考慮是否存在這種可能性。

主鍵的選擇

①編號作主鍵

此方法就是採用實際業務中的唯一欄位的「編號」作為主鍵設計,這在小型的項目中是推薦這樣做的,因為這可以使項目比較簡單化,但在使用中卻可能帶來一些麻煩,比如要進行「編號修改」時,可能要涉及到很多相關聯的其他表,就像黎叔說的「後果很嚴重」;還有就是上面提到的「業務要求允許編號重復時」,我們再那麼先知,都無法知道業務將會修改成什麼?

②自動編號主鍵

這種方法也是很多朋友在使用的,就是新建一個ID欄位,自動增長,非常方便也滿足主鍵的原則,優點是:資料庫自動編號,速度快,而且是增量增長,聚集型主鍵按順序存放,對於檢索非常有利;數字型的,佔用空間小,易排序,在程序中傳遞也方便;如果通過非系統增加記錄(比如手動錄入,或是用其他工具直接在表裡插入新記錄,或老系統數據導入)時,非常方便,不用擔心主鍵重復問題。

缺點:其實缺點也就是來自其優點,就是因為自動增長,在手動要插入指定ID的記錄時會顯得麻煩,尤其是當系統與其他系統集成時,需要數據導入時,很難保證原系統的ID不發生主鍵沖突(前提是老系統也是數字型的);如果其他系統主鍵不是數字型那就麻煩更大了,會導致修改主鍵數據類型了,這也會導致其他相關表的修改,後果同樣很嚴重;就算其他系統也是數字型的,在導入時,為了區分新老數據,可能想在老數據主鍵前統一加一個「o」(old)來表示這是老數據,那麼自動增長的數字型又面臨一個挑戰。

6. 主鍵,外鍵,的詳細定義和用法,不要百度上能找到的那種

主鍵是確定資料庫中表的記錄的唯一標識,它可以是一個或者多個欄位,當該欄位確定為主鍵時,其不能為空且不能重復,比如學生表中的學號就可以確定為主鍵。
外鍵是相對於主鍵而言的,比如學生選課表中的學號,相對於學生表中的學號,其為學生選課表的外鍵。
通過主鍵,你可以查詢到相應表中的任一記錄,比如學生表中,你可以查詢到該學號學生的其他基本信息;而外鍵則是在多個表查詢中用到,比如你想通過學生選課表中的課程編號(其主鍵)來查看有哪些學生選了該門課程,就可以通過學號(外鍵)關繫到學生表中,查詢都有哪些學生。這只是我個人的一些學習總結,不知對錯與否,希望對你有幫助。

7. 資料庫表中的主鍵和外鍵

主外鍵的存在是依託兩個實體之間的關系而存在的;
比如班級與學生的關系:
一個班級可以有多個學生,並且一個學生只能屬於一個班級,這就是一對多的關系;
那麼設計資料庫的時候就應該在學生表內存放班級的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,'一班')
後才能執行插入前面一條往學生表插入信息的語句..
--------------可了解一些了?真累啊.