2015-12-28 89 views
0

我已經給出了數據庫的潛在解決方案。我有被稱爲 '訂單' 的實體,它包含的屬性:將數據庫歸一化爲2NF

  • Sum_Of_Req
  • Served_By
  • SERVICE_NAME
  • Customer_Feedback
  • CUSTOMER_EMAIL
  • Requirement_Date
  • Served_Time

我需要找到一個組合鍵,所以我可以把這個關係放到2NF中(所以每個屬性完全依賴於主鍵(在這種情況下我覺得它將是一個組合鍵))。但是,我不明白哪兩個可以唯一標識訂單。

請注意:我無法添加'Order#'或類似內容。不幸的是(雖然完全明顯而簡單),我的講師明確指出,我們不允許使用唯一的ID。

+1

CUSTOMER_EMAIL和Served_Time?假設這些意思是'在Y時刻由X排序',並且這以一種獨特的方式定義了一個訂單。你應該包括更多的信息,每列代表什麼,以及你到目前爲止嘗試過什麼(以及爲什麼你認爲它不起作用)。 – Sam

+0

@Sam老實說,他沒給我們任何關於屬性的解釋,所以我和你一樣無知。但是,我覺得這是一個很好的答案,並且會唯一確定一個訂單。但是,Customer_Email是另一個實體的主鍵,您是否可以擁有一個外鍵和主鍵的組合鍵? – OSmart

回答

0

爲了得到2NF需要定義主密鑰,作爲複合:

Served_time,Served_by,SERVICE_NAME,CUSTOMER_EMAIL

實施例的數據爲一個關係:

  • Served_Time:'10:30'
  • Served_By: '喬'
  • SERVICE_NAME: 'SERVICE_A'
  • CUSTOMER_EMAIL: '[email protected]'
  • Customer_Feedback: '尼斯服務!'
  • Requirement_Date: '42368'
  • Sum_Of_Req: '5'
+0

爲什麼你需要服務?時間不夠嗎?由於我沒有看到收銀員何時可以在同一時間處理2份訂單。 – OSmart

+0

您需要「服務」,因爲不同代理商可能會爲同一客戶訂購多個訂單。 您需要「serve_time」,因爲同一個代理將爲同一個客戶提供多個訂單。理論上他可以同時處理多個訂單。或者至少它們可能會同時記錄在系統中,所以你不能只依賴於serve_time。 –

+0

但現在是否會以第二範式出現?因爲我不認爲Sum_Of_Request取決於誰爲他們提供服務,也不取決於客戶。 – OSmart