Базовый дизайн базы данных. Использовать другую таблицу или столбец

У меня есть таблица, содержащая информацию о конкретном объекте, например Item, и столбцы

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

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

private, gov, non-gov, business... и т. д. (строки) и могут быть расширены до большего количества типов в будущем.

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

  • ListingTypeID целое число

  • ListingTypeName varchar (MAX)

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

2, 4 или что?

Спасибо


person Asad    schedule 21.01.2010    source источник


Ответы (6)


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

person JP.    schedule 21.01.2010

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

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

Это вставка, обновление и удаление аномалий, что является одной из причин нормализации.

person gbn    schedule 21.01.2010

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

person davek    schedule 21.01.2010

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

Взгляните на реляционную базу данных и Реляционная модель.

person Gabriele Petrioli    schedule 21.01.2010

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

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

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


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

person NotMe    schedule 21.01.2010

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

person noio    schedule 21.01.2010