ФК на всех таблицах для столбца статуса - PullRequest
0 голосов
/ 02 января 2011

У меня есть столбец: «Статус» в каждой таблице в моей БД.Цель этого - показать, используется ли данная строка или она была деактивирована.Значения могут быть (0 = деактивирован и 1 = активен).Я вижу это двумя способами: у меня могут быть перечисления, или я думаю, лучше ли сохранить этот столбец как FK, который ссылается на основную таблицу словаря системных данных, в которой есть все коды, используемые в системе.(веб-сайт)

Преимущество - каждая таблица, каждая строка может быть централизована через этот FK.Поэтому, если я когда-нибудь захочу проверить все строки, которые неактивны в моей системе, я могу из этой таблицы, так как все дочерние таблицы будут иметь статус = ID 233, где 233 = деактивирован в таблице словаря данных.

AnyВыгода или я должен придерживаться старого способа перечислений?Кроме того, я думаю, если мне нужно еще один статус для удаленного или это то же самое, что деактивировано?

1 Ответ

0 голосов
/ 02 января 2011

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

Если у вас будет больше состояний, тогда да, это может быть хорошей идеей иметь отдельную таблицу состояний, нона самом деле это не необходимо , если вы не хотите писать дружественные и простые для чтения запросы (where status = 'inactive' гораздо проще понять, чем where status = 0), или вы намерены изменить значение(в этом случае вы просто меняете описание в таблице status).

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

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