Должен ли я сделать нормализацию в этом случае? - PullRequest
0 голосов
/ 13 июля 2010

Вот ситуация:

[Работа] принадлежит одной [Категория работы], а [Категория работы] принадлежит одной [Промышленность]

Итак, мой первоначальный дизайн такой: У вакансии есть fk для поиска категории работы, а у категории работы есть fk для ссылки на отрасль. Но проблема в том, что когда я хочу узнать, относится ли работа к какой отрасли, мне нужно найти категорию вакансии и на основе идентификатора категории вакансии просмотреть таблицу отрасли. Итак, я думаю, что делаю нормализацию.

Но у меня есть два подхода к этому, я думаю, что лучше. Во-первых, записывает все материалы, включая категорию вакансии, промышленность в одном месте (таблица вакансий).

Другим подходом является Задание, по-прежнему ссылающееся на категорию задания, но в категории заданий есть поле для хранения отраслевой информации.

Какой подход вы считаете лучшим? Спасибо.

Ответы [ 2 ]

2 голосов
/ 13 июля 2010

Ваш второй подход хорош. Проблема, которую вы описываете, получить отрасль для данной работы, на самом деле не является проблемой. Смотрите следующую структуру:

Table jobs
ID PK
REF_CATEGORY FK

Table jobcategories
ID PK
REF_INDUSTRY FK

Table industries
ID PK

Теперь, чтобы получить отрасль для данной работы:

SELECT j.ID, i.ID
FROM jobs j
JOIN jobcategories c ON j.REF_CATEGORY = c.ID
JOIN industries i ON c.REF_INDUSTRY = i.ID

Есть веские причины иногда денормализовать, но в этом случае вам не следует . Если вы поместите JOB, JOBCATEGORY и INDUSTRY в одну таблицу, вы рискуете иметь категорию рабочих мест, относящуюся к нескольким отраслям, что нарушит ваше отношение 1-n.

1 голос
/ 13 июля 2010

Но такого рода ссылочные отношения всегда есть.Если вы используете таблицу «Промышленность» и таблицу категорий заданий только для сведений о задании, вы можете подумать о ненормализации.Но если эти таблицы также связаны с некоторыми другими данными / таблицами, схему нормализации следует пересмотреть.Денормализация не должна проводиться изолированно.И я не чувствую, что у вас очень большие накладные расходы на подключение трех таблиц в СУБД.

...