SQL:创建新表以在其他表中保留状态的定义,或使用if else查看。
我正在做关于预订数据库编程的事情。
我有一个包含[status](char => 0,1,2,3)
的表格保留0表示保留,1表示检入,2表示退出,3表示已取消
在创建用于保持状态定义的新表之间更好 如果在案例中使用以显示诸如
之类的定义if(status=="0") print reserved
if(status=="1") pring ......
.....
...
thx,征求意见
答案 0 :(得分:1)
如果将来不太可能扩展这些状态,并且仅由这一个表使用,您可能希望将定义保留在单个表中。
如果您这样做,您可能希望使用以下内容创建表:
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,您希望将来的状态范围发生变化,或者需要在多个表中使用状态,或者只是觉得上面的内容是“凌乱”(意见可能会有所不同),那么创建一个单独的表并使用外键。
答案 1 :(得分:0)
使用带有外键的表作为状态