Database-Design

功能依賴(希望是簡單的問題)

  • October 14, 2019

考慮跟踪學生的簡單問題:

STUDENT(
  StudentNumber,
  StudentName,
  Dorm,
  RoomType,
  DormCost,
  Club,
  ClubCost,
  Sibiling,
  Nickname
)

會在StudentName功能上確定StudentNumber嗎?沒有足夠的資訊嗎?這類問題有經驗法則嗎?

不,學生的姓名並不能確定他或她的身份,因此也不能確定學號。

可以有多個同名的人,但他們仍然會有不同的學號。

這就是為什麼數據庫通常有這樣的人工數字標識符的原因,也是你有客戶 ID、社會保險號等的原因。

選擇主鍵候選者時,請使用以下經驗法則:

  1. 該屬性是否唯一標識該行?名字不會。
  2. 屬性可以更改嗎?姓名可以更改,例如結婚時。

可變屬性不是數據庫中主鍵的好選擇,因為它們通過外鍵使引用完整性變得一團糟。

在大多數實際情況下,表的主鍵將是一個人為生成的數字。

引用自:https://dba.stackexchange.com/questions/250894