2009-03-12 19 views
1

これは疑問な質問ですが、列を列挙型にマップする必要があります。たとえば、データベース内の「M」または「F」として表される「Gender」列は、「Gender」という列挙型にマップできます。一般的に2つの性別があるので:)、この列挙型は更新する必要はないと確信できます。しかし、ビジネスロジックのためにenumを設定するのはどうでしょうか?例えば、あなたのデータベース内のすべての領域を表すEnumがあれば、その領域にデータベースに別の領域を挿入するたびにその列挙を変更する必要があるため、別のプロモーションが必要です。これは良い練習ですか?これについてはベストプラクティスがありますか?列を列挙型のコードにコード化する必要があります

ありがとうございます!

+0

ドメインには(真剣に)3つの性別があります。 M、F&U - Uは不明、宣言されていない、(Seriosulyが少ない)Unsure、Undecided –

答えて

1

これは実際には複雑な質問です。列挙型を使用しているときは、Reedが示唆するようにDBにもルックアップテーブルを持っているのが伝統的です。しかし、これは定義を同期させる問題を引き起こす。

私たちが行うことは、ビルド/デプロイスクリプトの一部として列挙型定義からテーブルを生成して、両方が同じ正当な値を確実に反映するようにすることです。

次に、DBクエリから返されたDataSetを取得し、id列をenum値を持つ(新しく作成された)列にマップする便利な関数があります。しかし、クエリ結果が取得された直後にその処理を行います。だから私の助言はできるだけ早く、できればあなたのDALに写像することです。

+0

質問を読まずに脳死応答を与えてくれてくれてありがとう! – Herman

0

地域固有のIDを持つ別のテーブルを作成する方がよいでしょう。次に、メインテーブルで地域のIDを使用します。

これにより、領域を追加するだけで新しいレコードが追加されるため、将来の柔軟性が向上します。

詳細および完全な説明については、データベースの正規化についてのテキストを参照してください。

関連する問題