2011-01-13 155 views
0

我一直在考慮這個歸一組數據的任務:數據庫規範化

COURSE=(CourseID, CourseName, CourseDuration, CourseFee{ 
    DelegateID, DelegateName, DelegateAddress, EventID, EventName, VenueID, VenueName, VenuePrice, BookingID, BookingType, BookingDate 
}) 

的情況是運行在全國各地的各種酒店短期培訓課程的IT公司,每個事件由一個主辦或更多的演示者(因此,預訂類型 - 代表或演示者,如果演示者則不收取預訂費用)。事件只是在特定場地運行的課程的一個實例。 VenuePrice是指用於可選的牀和早餐的費用在酒店會場中間的夜晚

以下是我已經想出了3NF:

COURSE=(CourseID, CourseName, CourseDuration, CourseFee) 
DELEGATE=(DelegateID, DelegateName, DelegateAddress) 
EVENT=(EventID, VenueID*, CourseID*, EventName, EventDate) 
BOOKING=(BookingID, DelegateID*, EventID*, BookingDate, BookingType) 
VENUE=(VenueID, VenueName, VenuePrice) 

我想知道這是否是在所有準確的,如果不是,或許是正確方向的指導手?

謝謝

+0

作業?我想你已經明白了......所以實際上沒有什麼可說的。 – markus

回答

3

您認爲這是3NF的基礎?

我們來看一個非常簡單的例子Course。究竟他在哪裏功能依賴,關鍵是什麼? CourseName如何依賴於CourseId,當CourseDurationCourseFee依賴於CourseName

與其餘表格相同; Event稍微複雜一些,有更多的錯誤。

當你的出發點是堅持ID移動的一切時,你不能規範化,或達到3NF。

第一個規範化數據。實現3NF。我可以將CourseCodeShortName理解爲用戶可用於識別課程的內容,但不能使用Id

之後,當且僅當你需要,添加一個Id列和額外指數。作業