2011-07-26 15 views
0

は私がデータベースに列挙された列挙型をドキュメントの形式として保持するのがベストプラクティスですか?

CREATE TABLE [Event] (
    [Id] integer PRIMARY KEY AUTOINCREMENT, 
    [EventType] integer NOT NULL, 
    [Timestamp] text NOT NULL 
); 

私は、私は本当にする必要はありません必要がある場合は、私のデータベース内のテーブルを持っているコード

enum EventType 
{ 
    Run = 1, 
    Stop = 2, 
} 

で列挙型を持っていますか?

CREATE TABLE [EventType] (
    [EventTypeId] integer PRIMARY KEY AUTOINCREMENT, 
    [Name] text 
); 
INSERT INTO "EventType" VALUES(1, "Run"); 
INSERT INTO "EventType" VALUES(2, "Stop"); 

これはコードの複製であるため、これは悪いことです。それはデータベースにアクセスし、それらのEventType番号が意味するものを疑問に思う人のためのドキュメンテーションなので良いです。これらの数字をすべて削除して代わりに文字列を使用する必要がありますか?

+0

簡単な文書を超えた1つの利点は、別のシステムからDBにアクセスしようとすると、既知の正しいenumを生成する方法があるということです。 –

答えて

1

私は物事を文書化するために余分なテーブルを作成しません。それは全体的な複雑さを増すので、ユーザーがそれらの数字が何であるか不思議に思うよりも長期的に悪化します。

私は個人的には、それが自分自身を文書化するので、DBの中で文字列列挙を使用するのが好きです。しかし、異なる意見があるかもしれません。

+0

文字列列挙とは何ですか?それはデータベース固有の機能ですか?私はSQLiteで作業しています... –

+1

私は文字列の値をデータベースの代わりに数値として使用することを意味しました。 –

関連する問題