我被赋予了规范化这组数据的任务:
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 :(得分:3)
您认为3NF的基础是什么?
我们来看一个非常简单的例子Course
。究竟如果他功能依赖,关键是什么?当CourseName
和CourseId
依赖CourseDuration
时,CourseFee
如何依赖CourseName
?
与其他表相同; Event
稍微复杂一点,还有一些错误。
当你的出发点是ID
在所有移动的东西上时,你无法规范化或达到3NF。
没有。首先规范化数据。达到3NF。我可以将CourseCode
或ShortName
理解为用户可用于识别课程的内容,但不能Id
。
之后,当且仅当您需要添加 Id
列和附加索引时。