сомнение внешнего ключа - mysql - PullRequest
0 голосов
/ 24 апреля 2011

один простой вопрос, пожалуйста.У меня есть три таблицы.

GROUP

id    area
1   Multimedia
4   Education

Занятость

  id   foreign key(GROUP)     job
   1    1                   designer
   2    4                   professor
   3    1                   copy

и теперь предположим, что у меня есть это

SpecificProperties

id  foreign key (Employment)      properties
1   1                             type of contract
2   1                             number of jobs 
3   2                             duration contract (no type of contract)
4   2                             number of jobs

Разработчик и профессор в этом случае имеют свойство число рабочих мест.Таким образом, в основном вопрос заключается в том, мне нужно повторить количество рабочих мест для каждой профессии?есть ли способ избежать?или я могу иметь количество рабочих мест 8 внешних ключей для 8 различных работ, например?один для дизайнера, другой для профессора, другой для копирования и так далее?таким образом, первое число заданий во внешнем ключе 1 ||2 ||3

как то так:

**SpecificProperties**

    id  foreign key (Employment)      properties
    1   1                             type of contract
    2   1||2||3||4                    number of jobs 
    3   2                             duration contract (no type of contract)

спасибо

1 Ответ

0 голосов
/ 24 апреля 2011

Вы можете поместить имена свойств в дополнительную таблицу, например

Properties
id  name
1   type of contract
2   number of jobs 
3   duration contract (no type of contract)

затем используйте SpecificProperties

foreign key (Employment) foreign key (Properties)
1                        1
1                        2
2                        3
2                        2

как соединительная таблица, отражающая взаимосвязь «многие-многие» - одно или несколько заданий могут иметь одно или несколько свойств, поэтому вместо указания «количества заданий» для каждого задания вы просто указываете его идентификатор из таблицы свойств.

@ комментарии Но если «количество заданий» - это поле, а не просто текст для отображения, то в качестве значения строки его не должно быть в SpecificProperties. Вместо этого оно должно быть где-то в виде имени столбца, но не вместе с информацией о контракте. Пример: Боб - дизайнер мультимедиа, работающий с некоторой даты до другой даты, над контрактом типа x, который стоит somemoney и так далее. Табличные контракты (или Занятость) со столбцами (id, user_id, job_id, start_date, end_date, salary) могут содержать информацию об этом, но поскольку больше людей могут работать точно так же, чтобы избежать сохранения избыточных данных, мы можем использовать внешний ключ job_id для Jobs таблица со столбцами (id, group_id, job_name, number_available). Таким образом, мы знаем, что у нас может быть всего 10 дизайнеров, работающих в мультимедиа, независимо от того, какие контракты они действительно получили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...