2013-03-09 2 views
0

Я просто пытаюсь выполнить задачу и встать на нормализацию. (Это должно быть логичной ERD)SQL еще один способ нормализации

enter image description here

Это больше возможный путь для нормализации здесь? Я просто застрял с ним. Жаль, что я просто не попадает в группу членов таблице звезду возле группы ID

enter image description here

+1

Не уверен, что переполнение стека - это лучший возможный сайт для обмена стеками; и должны ли вы нормализовать или нет, может зависеть от проблемы (проблем), с которой вы имеете дело. Некоторые вещи, которые вы могли бы попробовать: (1) члены группы, руководители групп и супервизоры могли быть сведены как «Роли», назначенные (N: N), «Лицам»; (2) некоторые личные данные могут быть перемещены в отдельные таблицы, например. 'Addresses'. Это может иметь смысл, например, когда, вероятно, некоторые люди живут вместе. – stakx

+0

Можете ли вы немного подробнее рассказать о первом. Когда я это сделаю, как я тогда подключу эту таблицу людей к трем другим? например, как мне нужно заполнить таблицу лиц данными, чтобы все остальные таблицы получали правильную информацию? –

+0

«Телефонный номер« номер телефона »« номер экстренного контакта »и« текущий номер мобильного телефона »всегда одинаковы? Или номер экстренного контакта отличается от обычного номера телефона человека? Являются ли отдельные участники участниками деятельности, или это всегда группа? Мы должны были бы сделать много предположений, если бы мы решили, была ли ваша модель правильной. – JodyT

ответ

0

GroupMember, GroupLeader, и руководитель должен быть отношения к таблице Person. Возможно, что-то вроде следующего?

Person (
    id 
    name 
    surname 
    date of birth 
    gender 
    home address 
    emergency contact number 
    comment field 
) 

Activity (
    id 
    type of activity 
    activity description 
    date 
    morning or afternoon 
    supervisor -> Person 
) 


ActivityParticipant (
    activity id -> Activity 
    person id -> Person 
) 

Group (
    id 
    name 
    start date of stay 
    end date of stay 
    (amount of people in group?) 
) 

GroupMember (
    person id -> Person 
    group id -> Group 
) 

Group Leader (
    group id -> Group 
    person id -> Person 
) 

Chalet (
    id 
    Chalet number 
    Chalet name 
    number it sleeps 
    price per individual 
) 

Accomodation (
    group id -> Group 
    chalet id -> Chalet 
) 
+0

Вы хотите, чтобы создать другую таблицу????? –

+0

Да, а затем потянуть хотя бы Имя, (Фамилия ?) и номер телефона (это те, которые повторяются, то есть могут быть нормализованы). Естественно было бы поместить все другие связанные с человеком поля в этот стол. – thebjorn

+0

Эмм, я понимаю, что я не очень хорош в этом, но как я могу поместить имя, фамилию и номер телефона и т. Д. В одну таблицу и подключить к ней 3 таблицы, если они имеют другое имя ..... Я просто не могу как я должен заполнить таблицы, чтобы они работали. –

0

реляционные базы данных не поддерживают наследование

Три возможные пути я знаю от, как решить эту проблему, являются:

1.Single Table Inheritance

2.Class Table Inheritance (Это немного как @thebjorn предлагает.)

3.Concrete Table Inheritance (Это то, что у вас есть сейчас, я не вижу никаких проблем с использованием этого решения.)

EDIT:

Я вижу, что вы изменили его на LOGICAL ERD, это было, конечно, о физическом модель.

+0

Итак, я сделал неправильный логический ERD ???? –

+0

Нет, это ваше собственное решение, если вы хотите логическую или физическую ERD. Я имел в виду, что решения в моем сообщении применяются, когда вы меняете логическую модель на физическую. Это не редкость иметь наследование в вашей логической модели. – JodyT

+0

Мне нужен логический ERD, поэтому я думаю, что это правильно для логического? –

Смежные вопросы