2016-09-05 3 views
1

Фон: Компания имеет более 5000 сотрудников и имеет здания, размещенные в разных городах. 1 Сотрудник может работать в 2 или более таких зданиях в зависимости от дня/проекта. Компания не отслеживает, в какой день кто-то находится в каком здании. У них есть только один лист со всеми данными и данными о сотрудниках. Это местоположение также включает дату начала, с которой дата начала работы сотрудника в этом месте. Это выглядит следующим образом:Устранение отношения «многие ко многим»

EmployeeID | FirstName | LastName | email | BuildingID | Buildinglocation | startdate 
1   | John  | Gates | [email protected] | 2   | New York   | 01-01-2015 
1   | John  | Gates | [email protected] | 1   | Paris   | 01-05-2015 
2   | Bill  | Jobs  | [email protected] | 2   | New York   | 01-01-2016 
3   | Carl  | Davis | [email protected] | 3   | London   | 01-11-2015 

Мне нужно превратить это в несколько таблиц, чтобы создать хранилище данных. То, о чем я думал, это таблица для employee и одна для location. Это, однако, было бы many to many relation, поэтому я хотел добавить bridge table.

Вопрос: Где я могу сэкономить startdate? Должен ли я добавить его в таблицу Bridge? Как я могу заполнить его startdate в таком случае? Или я должен просто оставить его в location table, установив связь между employee и location соотношением 1-n?

+1

Я бы поместил в таблицу моста, потому что в таблице местоположения каждое место будет существовать только один раз – GuidoG

ответ

2

Это то, что я хотел бы сделать:

Я бы поставил startdate в таблице моста как employee и location будет сделан, прежде чем они соединены друг с другом, которые затем startdate заполняются. location будет существовать только один раз, поэтому, создав для него отдельную таблицу, вы делаете меньше работы и сохраняете память. Добавление ограничения для запуска в таблице моста, чтобы при добавлении новой строки он должен иметь дату/автозаполнение, чтобы обеспечить наилучшие данные. Если это имеет смысл

2

Ваши таблицы будут выглядеть что-то вроде этого:

сотрудников

EmployeeID | FirstName | LastName | email 
1   | John  | Gates | [email protected] 
2   | Bill  | Jobs  | [email protected] 
3   | Carl  | Davis | [email protected] 

здания

BuildingID | Buildinglocation 
1   | Paris 
2   | New York 
3   | London 

мост стол

EmployeeID | BuildingID | startdate 
1   | 2   | 01-01-2015 
1   | 1   | 01-05-2015 
2   | 2   | 01-01-2016 
3   | 3   | 01-11-2015 
Смежные вопросы