Re: [請益] 資料庫的參考完整性限制
※ 引述《chucheng (時間太少事情太多)》之銘言:
: ※ 引述《idforyou (ted)》之銘言:
: : 定義一:
: : 外來鍵必須為空值(NULL)
: : 或是一個相匹配(Match)於其它關聯之主鍵的值。
: : 外來鍵有參考到某關聯的候選鍵(主鍵) 時,此候選鍵(主鍵) 必須存在。
: : 定義二:
: : 外來鍵必須為全部空值或全部非空.
: : 若全部非空,則必須在其他關聯中之主鍵存在相對應值
: : 定義一是某學校投影片
: : 定義二是某補習班講師講義所寫
: : 矛盾的是根據一的定義 好像外來鍵欄位
: : 有些值可以是NULL 有些值不用
: : 這樣好像跟二的定義衝突(必須全部空或全部非空)
: : 不知道有沒有資料庫的高手大大
: : 可以提示小弟一下
: : 那個定義才是對的 感恩
: PK = Primary Key (主鍵)
: FK = Foreign Key (外來鍵)
: 情境一: PK 是"simple key" (單一欄位的key)
: PK不可為Null,FK 可以是Null,或指向任一PK
: 情境二:PK 是"compound Key" (由多欄位組成的key)
: PK一樣不可Null,FK指向PK,要就有值,要就全設為Null
: 不可以有部份Null 部份非Null 的情況(這不是廢話嗎…)
: 簡單的講,Compound key是一個整體,Part of compound key 不是PK
: 二個定義都是對的,一個講simple key,一個講compound key
一個資料表中,PK是讓你找到其中一筆資料的方法之一
PK的定義與設限,就是確保你用同樣的PK欄位值,
只要資料表的定義沒有改變,不論找多少次,都可以有效的找到其中一筆資料
所以PK不能有Null,也必須唯一,
這樣才能幫助找到資料表中其中一筆資料,而不是另一筆資料
若PK欄位有多個,也就是說,需要這麼多的欄位,
我才可以找到資料表中特定的一筆資料
FK主要的作用是讓你可以找到在另一個資料表中對應的某筆資料
所以FK要不就是Null,現在沒要對應另一個資料表的某筆資料
或是,必須可以完整有效的幫你找到另一個資料表的某筆資料
同理,
一個資料表A的PK有多個欄位時,
當資料表B有需要對應資料表A的某筆資料時,
就必需要儲存資料表A的PK欄位資料值,以便有效找到資料表A的某筆資料
若資料表B只儲存資料表A的眾多PK欄位之一或不全時,
可能在資料表A中找到多筆資料,當然就無法有效找到資料表A的某筆資料
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.105.83.207
推
02/09 11:55, , 1F
02/09 11:55, 1F
→
02/09 12:24, , 2F
02/09 12:24, 2F
→
02/09 12:25, , 3F
02/09 12:25, 3F
→
02/09 12:26, , 4F
02/09 12:26, 4F
→
02/09 12:27, , 5F
02/09 12:27, 5F
→
02/09 12:28, , 6F
02/09 12:28, 6F
→
02/09 12:30, , 7F
02/09 12:30, 7F
→
02/09 12:33, , 8F
02/09 12:33, 8F
→
02/09 12:34, , 9F
02/09 12:34, 9F
→
02/09 12:34, , 10F
02/09 12:34, 10F
→
02/09 12:39, , 11F
02/09 12:39, 11F
→
02/09 12:39, , 12F
02/09 12:39, 12F
→
02/09 12:41, , 13F
02/09 12:41, 13F
→
02/09 12:44, , 14F
02/09 12:44, 14F
→
02/09 12:48, , 15F
02/09 12:48, 15F
→
02/09 12:50, , 16F
02/09 12:50, 16F
→
02/09 12:50, , 17F
02/09 12:50, 17F
→
02/09 13:10, , 18F
02/09 13:10, 18F
→
02/09 13:12, , 19F
02/09 13:12, 19F
推
02/09 13:14, , 20F
02/09 13:14, 20F
→
02/09 13:23, , 21F
02/09 13:23, 21F
推
02/09 14:45, , 22F
02/09 14:45, 22F
→
02/09 14:47, , 23F
02/09 14:47, 23F
→
02/09 14:48, , 24F
02/09 14:48, 24F
→
02/09 14:48, , 25F
02/09 14:48, 25F
→
02/09 14:48, , 26F
02/09 14:48, 26F
→
02/09 14:48, , 27F
02/09 14:48, 27F
→
02/09 14:49, , 28F
02/09 14:49, 28F
→
02/09 15:16, , 29F
02/09 15:16, 29F
→
02/09 15:17, , 30F
02/09 15:17, 30F
→
02/09 15:19, , 31F
02/09 15:19, 31F
→
02/09 15:23, , 32F
02/09 15:23, 32F
→
02/09 15:24, , 33F
02/09 15:24, 33F
→
02/09 15:26, , 34F
02/09 15:26, 34F
→
02/09 15:29, , 35F
02/09 15:29, 35F
→
02/09 15:30, , 36F
02/09 15:30, 36F
→
02/09 17:47, , 37F
02/09 17:47, 37F
→
02/09 17:48, , 38F
02/09 17:48, 38F
→
02/09 17:48, , 39F
02/09 17:48, 39F
→
02/09 17:48, , 40F
02/09 17:48, 40F
→
02/09 17:49, , 41F
02/09 17:49, 41F
→
02/09 17:49, , 42F
02/09 17:49, 42F
→
02/09 17:49, , 43F
02/09 17:49, 43F
→
02/09 17:49, , 44F
02/09 17:49, 44F
→
02/09 19:22, , 45F
02/09 19:22, 45F
→
02/09 19:24, , 46F
02/09 19:24, 46F
→
02/09 19:24, , 47F
02/09 19:24, 47F
→
02/09 19:25, , 48F
02/09 19:25, 48F
→
02/09 19:26, , 49F
02/09 19:26, 49F
→
02/09 19:29, , 50F
02/09 19:29, 50F
→
02/09 19:30, , 51F
02/09 19:30, 51F
→
02/09 19:30, , 52F
02/09 19:30, 52F
→
02/09 20:33, , 53F
02/09 20:33, 53F
→
02/09 20:34, , 54F
02/09 20:34, 54F
→
02/09 20:34, , 55F
02/09 20:34, 55F
→
02/09 20:34, , 56F
02/09 20:34, 56F
→
02/09 20:34, , 57F
02/09 20:34, 57F
→
02/09 20:35, , 58F
02/09 20:35, 58F
→
02/09 20:35, , 59F
02/09 20:35, 59F
→
02/09 20:35, , 60F
02/09 20:35, 60F
→
02/09 20:36, , 61F
02/09 20:36, 61F
※ 編輯: astt88 來自: 59.105.83.207 (02/09 22:19)
討論串 (同標題文章)