SQL: создайте новую проверку таблицы, если еще в поле зрения - PullRequest
0 голосов
/ 09 февраля 2011

SQL: создайте новую таблицу, чтобы сохранить определение статуса в другой таблице, ИЛИ проверить, если еще в поле зрения.

Я занимаюсь резервированием. Программирование баз данных.

У меня есть резервирование таблицы, которое содержит [status] (char => 0,1,2,3)

0 означает, что зарезервировано, 1 регистрация, 2 проверки, 3 отменены

что лучше между созданием новой таблицы для сохранения определения статуса или используйте if case, чтобы показать определение, такое как

if(status=="0") print reserved
if(status=="1") pring ......
.....
...

спасибо за совет

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

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

Если вы это сделали, вы можете захотетьсоздать свою таблицу с чем-то вроде следующего:

CREATE TABLE T (
    /* Various columns */
    Status tinyint not null,
    constraint T_Status_Valid CHECK (Status between 0 and 3),
    StatusText as CASE Status
       when 0 THEN 'Reserved'
       when 1 THEN 'Check In'
       when 2 THEN 'Check Out'
       when 3 THEN 'Cancelled'
    END
)

Это избавляет от необходимости создавать любые другие объекты в базе данных, в то же время автоматически предоставляя текст (если требуется) и избегая недопустимых значений состояния.

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

0 голосов
/ 09 февраля 2011

Использовать таблицу с внешним ключом для статуса

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