主键与外键
主鍵:唯一標識表中的所有行的一個列或一組列。主鍵不允許空值。不能存在具有相同的主鍵值的兩個行,因此主鍵值總是唯一標識單個行。表中可以有不止一個鍵唯一標識行,每個鍵都稱作候選鍵。只有一個候選鍵可以選作表的主鍵,所有其它候選鍵稱作備用鍵。盡管表不要求具有主鍵,但定義主鍵是很好的做法。 在規范化的表中,每行中的所有數據值都完全依賴于主鍵。例如,在以 EmployeeID 作為主鍵的規范化的 employee 表中,所有列都應包含與某個特定職員相關的數據。該表不具有 DepartmentName 列,因為部門的名稱依賴于部門 ID,而不是職員 ID。
外鍵:外鍵 (FK) 是用于建立和加強兩個表數據之間的鏈接的一列或多列。通過將保存表中主鍵值的一列或多列添加到另一個表中,可創建兩個表之間的鏈接。這個列就成為第二個表的外鍵。
?
=======================================================
?
外鍵的作用很重要,最好在數據庫中使用。?
? 舉一個例子比較明白?
? 比如有兩張表格,一個是學生檔案,另一個是上學期間的成績單?
? 檔案中會有:學號,姓名。(學號為主鍵)?
? 成績單有(簡化過的):學期號,學號,平均分數(學期號,學號兩個同時為主鍵,學號同時為外鍵)。為了保證成績單上的數據有效,所以要求錄入學號時,必需保證檔案中有這個學號,否則就不能錄入。從而保證了成績單上的成績數據的引用完整,否則將會是垃圾數據。
? 用程序控制,有很多缺點;錄入成績單時為了保證學號有效,首先要搜索檔案,當檔案很大時會影響效率。程序控制并不能保證百分之百引用完整性,尤其是并發操作。?
? 說一個特例(主要是說明程序控制不好):
? A錄入成績單,B在編輯檔案。?
? 當A錄入張三的成績,保存時,搜索張三存在,于是程序下一步就要存盤,但這時B恰好把張三刪除了。但A那邊的程序并不知道,于是就把一條垃圾數據存進數據庫中了。?
? 此例的操作流程正確與否不重要,但說明了程序控制并不是好方法。
總結
- 上一篇: UTL_FILE包用法小记
- 下一篇: FTP命令行使用精粹