Итак, я начал с этих трех таблиц, и мне сказали изменить их в BCNF и 4NF:
PRIVATE_SESSION (Тренер, Телефон, Электронная почта, Плата, ClientLastName, ClientFirstName, ClientPhone, ClientEmail, Дата, Время)
CLUB_MEMBERSHIP (ClientNumber, ClientLastName, ClientFirstName, ClientPhone, ClientEmail, MembershipType, EndingDate, Street, City, State, Zip)
КЛАСС (имя класса, тренер, дата начала, дата окончания, стоимость)
* Также предложите новую таблицу для отслеживания клиентов, подписки на классы и уплаченной суммы, сохраняя при этом все в 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,
MEMBER_ADDRESS
ID (primary key),
ID (foreign key to CLIENT_INFO.ID),
State,
City,
Street,
Zip
ЧЛЕНСТВО_INFO
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
TRAIN_SESSION
содержитTrainerFirstName
,TrainerLastName
? (то же самое касаетсяCLUB_CLASS
) Из-за этого мне он не кажется 2nf. - person Matthew   schedule 20.06.2013CLASS_EXPENSE
. Во-первых, исходные таблицы не моделируют эти данные — предполагается ли добавлять новые концепции в исходную модель? Во-вторых, вместо того, чтобы хранить совокупные данные напрямую (AmountofClassesTaken, TotalAmountPaid), вы должны смоделировать Class_Member_Enrollment (ClassID, MemberID) и суммировать эти записи, чтобы получить итоги. - person mbeckish   schedule 20.06.2013