Предпочтительный дизайн базы данных для рабочих мест - PullRequest
0 голосов
/ 06 марта 2012

У меня есть два типа должностей - компания должностей и проект должностей. Следующее будет полями ввода (на входе) для каждого:

*company*
- company name
- company location
- company description

*project*
- project name
- project location
- project description
- project type

Какой дизайн базы данных для этого лучше всего подойдет - одна таблица с разделением всех полей -

`job_post`
- company_name
- company_location
- company_description
- project_name
- project_description
- project_type
- project_location

Одна таблица, объединяющая поля -

`job_post`
- name
- location
- description
- project_type
- is_company (i.e., whether a company (True) or project (False)

Или две таблицы, или что-то еще? Почему этот способ предпочтительнее других?

Ответы [ 3 ]

5 голосов
/ 06 марта 2012

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

Короче говоря, я бы определенно использовал несколько таблиц.

2 голосов
/ 06 марта 2012

Вы определили 3 основных объекта в вашем ОП; работа, проект и компания. Каждый из этих объектов будет иметь свои собственные атрибуты, ни один из которых не будет связан с другими объектами, поэтому я бы порекомендовал что-то похожее (только для демонстрации):

job
  id
  name

company
  id
  name

project
  id
  name

link_job_company_project
  job_id
  company_id
  project_id

Этот тип схемы позволит вам добавлять специфичные для объекта атрибуты, не затрагивая другие объекты, и в то же время объединять их все вместе через таблицу ссылок в «пост работы».

1 голос
/ 06 марта 2012

Это, безусловно, связано с объемом данных, хранящихся в таблице. В абстрактном виде одна таблица выглядит довольно просто. Но, как говорит Райан, что если завтра изменятся требования и будет добавлено больше столбцов для одного типа, будь то компания или проект. Если вы предполагаете, что большой объем данных будет храниться в таблице в будущем, даже я предпочту 2 таблицы, которые позволят избежать ненужной фильтрации большого объема данных, что приводит к снижению производительности.

...