2011-01-13 127 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列和额外指数。作业