Разделить на другую таблицу или использовать тип enum - PullRequest
1 голос
/ 11 августа 2010

Я работаю с интернет-магазином, в настоящее время продукты либо доступны, либо нет, и включены или нет, через поле int в таблице продуктов.

Они хотят, чтобы я добавил к этому больше, например, «на складе с поставщиком», «на складе, отгружается в течение x дней» и т. д. Я имею в виду просто отключить флаги и создать поле состояния типа enum с «доступным», «нет в наличии», «прибывающим». скоро ", прекращено" и т. д.

Какой лучший способ сделать это? Добавить тип перечисления в качестве нового столбца для продуктов?

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

Ответы [ 2 ]

2 голосов
/ 11 августа 2010

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

Кроме того, подумайте, как бы вы определили приемлемые значения для этого поля.Если это перечисление, вы должны жестко кодировать параметры или проверять схему базы данных.Если он находится в отдельной таблице, вы можете ВЫБРАТЬ, чтобы заполнить список опций.

0 голосов
/ 11 августа 2010

таблица с FK займет немного меньше места на жестком диске, но я предпочитаю использовать тип Enum. Разница, как правило, небольшая, и преимущество в производительности заключается не в нормализации.

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