1

所以我从这 3 个表开始,并被告知将它们修改为 BCNF 和 4NF:

PRIVATE_SESSION(培训师、电话、电子邮件、费用、ClientLastName、ClientFirstName、ClientPhone、ClientEmail、日期、时间)

CLUB_MEMBERSHIP(ClientNumber、ClientLastName、ClientFirstName、ClientPhone、ClientEmail、MembershipType、EndingDate、街道、城市、州、邮编)

CLASS(班级名称、培训师、开始日期、结束日期、费用)

*还建议使用新表来跟踪客户、订阅的课程和支付的金额,同时仍将所有内容保留在 BCNF 和 4NF

==================================================== ================

所以,我把它们变成了这 7 个表来尝试遵守 BCNF 和 4NF。问题是……这甚至是正确的吗?如果每个确定项都是候选键,则满足 BCNF 的定义,看起来就是这样。如果 4NF 不包含我相信的多值依赖项,则它是满意的……并且我尝试将表分开,这样它们就不会

培训师

ID (primary key),
TrainerLastName,
TrainerFirstName,
TrainerEmail,
TrainerPhone

TRAINER_SESSION

ID (primary key),
ID (foreign key from CLIENT_INFO.ID)
TrainingStartTime,
TrainingStartDate,
TrainingFee

CLIENT_INFO

ID (primary key),
ClientLastName,
ClientFirstName,
ClientPhone,
ClientEmail,

会员地址

ID (primary key),
ID (foreign key to CLIENT_INFO.ID),
State,
City,
Street,
Zip

会员信息

ID (primary key),
ID (foreign key to CLIENT_INFO.ID),
MembershipType,
MembershipStartDate,
MembershipEndDate

CLUB_CLASS

ID (primary key),
TrainerID (foreign key to  TRAINER.ID),
ClassName,
ClassStartDate,
ClassEndDate,
ClassCost

CLASS_ENROLLMENT

(ClassID, MemberID) composite primary keys
TotalClasses,
TotalPaid
4

1 回答 1

0

对于建议模式的更新版本(修订版 11)

由于模式将被修改,因此很难使答案与模式的当前版本保持同步。请在查看任何给定答案时牢记这一点。

Class Enrollment 有不合适的 Total Classes 和 Total Paid 字段。除非成员可以与标价(在这种情况下需要“已付费”)属性相比,就该类协商每个类的费用(折扣),否则该表应该是唯一的。必要时应计算总数,或将其存储在独立于特定类别的单独表格中。

Membership Info 和 Member Address 获得了两个名为 ID 的列,令人困惑。据推测,第二个应该在每个表中标记为 Client ID(这样会更合理)。现在出现的问题是“会员信息和客户信息之间以及会员地址和客户信息之间的关系的基数是什么?” 对于地址,可以在不知道地址的情况下存在成员吗?一个成员可以有两个或多个地址吗?如果其中任何一个的答案是“是”,那么设计是可以的。如果答案为“否”,则不清楚您是否需要客户信息和会员地址。与会员信息和客户信息类似。

Trainer Session 有两个 ID 字段。第二个可能是客户 ID,但它还需要一个培训师 ID 来识别哪个培训师运行了会话。

对于建议模式的原始版本(修订版 6)

或建议模式的“接近原始”版本。

由于缺少“类名”元素,您显然没有创建非损失分解。

Class Expense 表在原始表中没有对应项。

尚不清楚 Trainer 表是否可以从原始表中得到保证,尽管我同意大多数字段。不过,费用属性在这里放错了位置。

Train Session 表缺少属性,或多或少是您对事物进行切片和切块。如果它旨在代表私人课程,那么您缺少培训师 ID 和客户 ID 和费用。如果它是通用的公共(俱乐部)会话,那么您需要一个记录私人会话的表。

会员信息、客户信息和会员信息的三元组被混淆和/或混淆。如果没有关于数据库应该如何处理信息的补充信息,很难知道什么是最好的推荐。成员信息表最好命名为地址。Membership Info 表与 Client Info 表没有关联,因此成员资格与地址相关联,但与人员无关(人员与地址无关)。

俱乐部课桌还可以,我想。

课程存在并且由培训师教授,但没有人被记录为去上课。

于 2013-06-20T00:22:56.593 回答