2010-01-21 2 views
2

У меня есть таблица, которая содержит информацию о конкретном объекте, Say Пункт и имеет столбцыБазовый дизайн базы данных. Используйте другую таблицу или Колум

ItemID, ItemName, цена, ItemListingType ..... LastOrderDate

Один из бит информации, ItemListingType может быть один из 10 различных типов , такие как:

частный, г, не г, бизнес ... и т.д. (строки) и может быть расширен до более типов в будущем ,

Должен ли я использовать столбец внутри таблицы ITEM или я должен использовать отдельную таблицу с двумя столбцами и поместить внешний ключ в таблицу элементов, чтобы ссылаться на это (отношение один-ко многим)? Как:

  • ListingTypeID INT

  • ListingTypeName VARCHAR (MAX)

EDIT: сколько значений для столбца, вы будете рассматривать использовать другую таблицу для этого

2, 4 или что?

Благодаря

ответ

8

Используйте отдельную таблицу для хранения эталонных данных. Это нормализация нормализации, а также упрощает кэширование, поскольку вы разделяете данные только для чтения и чтения и записи. мои два цента ...

2

Я бы определенно пойти на «поиск» стиль столбец; таким образом, вы не застопорились, когда в будущем будут внесены дополнения в список допустимых типов листинга. Вы также уменьшаете избыточность и упрощаете изменение обозначения конкретного типа листинга (если «gov» изменяется на «государственные учреждения», тогда вам нужно только изменить его в одном месте).

0

В общем, вы должны использовать дополнительную таблицу, потому что у вас не будет никакого дублирования таким образом. Это также позволит вам изменить значение для этого листинга в одном месте. Однако, если вы очень уверены, что никакие типы не будут добавлены, сохраните столбец.

2

Вы должны сделать это со второй таблицей, которая держит ListingTypes и ссылку на идентификатор этой таблицы из одной с объектами ...

Посмотрите на Relational Database и Relational model.

3

Отдельный стол.

  • Что делать, если у вас есть тип объявления еще не использованный?
  • Или удалить последний элемент с типом x?
  • Или нужно изменить значение?

Это insert, update and delete anomalies, что является одной из причин нормализации

1

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

Знаете ли вы, что никогда не будет более трех типов? Зависит. Иногда я по-прежнему буду ходить с отдельной таблицей, иногда нет. Через некоторое время вы почувствуете это.

Будет ли у ВСЕГДА единый тип листинга? Если да, то та же таблица, один столбец.


Теперь, чтобы сделать еще один шаг. Если элемент имеет ноль или более типов листинга, и эти типы листинга фактически разделены (другими словами, два элемента могут иметь один и тот же тип листинга, то у нас есть 3 таблицы: Items, ListingTypes и перекрестная ссылочная таблица для поддержки многих много отношение.