2011-02-09 3 views
0

SQL:他のテーブルのステータスの定義を保持するための新しいテーブルを作成するか、SQL:ビュー内に他のものがあるかどうかで新しいテーブルのチェックを作成する

私はデータベースプログラミングについて予約しています。

Iは、2チェックアウト、1つのチェックを予約平均[状態]を含むテーブルの予約(CHAR => 0,1,2,3)

0を有する、3がある

をキャンセルビューの場合のような

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

THX定義を表示する場合は、あなたのアドバイスのために、状態の定義や 使用を維持するための新しいテーブルを作成するとのより良い

答えて

1

これらのステータスが今後拡張されることはなく、この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の場合、将来的にステータスの範囲が変更されることが予想される場合や、複数のテーブルでステータスを使用する必要がある場合や、上記が「乱雑」であると思われる場合(意見は異なる場合があります)テーブルを作成し、外部キーを使用します。

+0

ありがとう、みんな – Ratchapol

0

関連する問題