2010-11-09 89 views
1

我想正常化我的表到所有3NF我相信以下所有是在3NF,因爲沒有傳遞性。請澄清這一點,如果我錯了正常化在一個數據庫中

客戶(CUSTID,CUSTNAME,custAddress,custDOB,custEmail)
僱員(EMPID,empName,empPhone,empAddress,BRANCHNAME)

的假設是每一個員工工作在多個分支機構和每個分支機構都有一個或多個員工

回答

5

的假設是每一個員工工作在多個分支和每個分支都有一個或多個員工

但是,這不是你模仿什麼。在你的關係中,對分支機構和員工具有功能依賴性。

要理解這一點,讓我們思考一下如何代表在關係中的多個分支上工作的員工。要做到這一點的唯一方法是有多行具有相同的員工信息,只有BranchName字段不同。對於一個根本不在分支機構工作的員工(比如首席執行官)呢,那麼那個員工就沒有行了,他就完全消失了!

讓我們分開。

BRANCHES(branchID, BranchName) 
EMPLOYEES(empID, empName, empPhone, empAddress) 

但是現在我們需要在兩者之間有多對多的對應關係。這樣做的首選方法是使用連接表。

BRANCHES_EMPLOYEES(branchID, empID) 
2

或者您可以使用角色表中的單個人員表格來顯示哪些是客戶,哪些是員工。這種設計可以讓某人成爲客戶和員工。不重複名稱,更好的標準化。人與角色是多對多的(一個人可以有許多角色;角色可以屬於許多人)。

+0

但上面已經在3NF? – aherlambang 2010-11-09 02:14:19

+0

@EquinoX:我很懷疑它。但我們只能猜測,因爲你沒有指定任何鍵或依賴關係。 – sqlvogel 2010-11-09 20:06:56

3

「但上面已經在3NF?」

你的問題是無法回答的。

因爲這是正式交代,你必須提供:

  • 一個FULL模式的數據庫(即也模型/代表員工與部門之間的許多一對多的關係之一),和
  • 完成確定屬性依賴關係的集合。

你只給了前者的一部分,後者沒有。