我的任务是规范化这组数据:
COURSE=(CourseID, CourseName, CourseDuration, CourseFee{
DelegateID, DelegateName, DelegateAddress, EventID, EventName, VenueID, VenueName, VenuePrice, BookingID, BookingType, BookingDate
})
该场景是一家 IT 公司,在全国各地的多家酒店举办短期培训类(class),每个事件都由一名或多名主持人主持(因此 BookingType - Delegate 或 Presenter,如果是 Presenter,则无需预订费用)。事件只是在特定地点运行的类(class)的一个实例。 VenuePrice 是指酒店 field 的可选床位和早餐的费用。
这是我为 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)
我想知道这是否完全准确,如果不准确,也许是正确方向的指导?
谢谢
最佳答案
您认为 3NF 的依据是什么?
让我们举一个非常简单的例子,Course
。如果他的功能依赖性到底在哪里,在什么键上?当CourseDuration
和CourseFee
依赖于CourseName
时,CourseName
如何依赖于CourseId
> ?
与其余表格相同; Event
有点复杂,有更多的错误。
当您的出发点是在所有移动的东西上贴上 ID
时,您无法规范化或实现 3NF。
没有。首先规范化数据。实现 3NF。我可以将 CourseCode
或 ShortName
理解为用户可以用来识别类(class)的东西,但没有 Id
。
之后,当且仅当您需要时,添加 Id
列和附加 索引。
关于mysql - 数据库规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679042/