2012-01-14 10 views
3

データベース(NHibernate + mysql)でenumを使用するのは良い習慣ですか?利点と欠点は何ですか?それはデータベース効率に影響を与えますか?Nhibernateとenums

答えて

2

データベース(NHibernate + mysql)でenumを使用するのは良い習慣ですか?

プログラマーの観点からは、適用可能な場合は列挙型を使用することが間違いないと思います。これにより、はるかに読みやすいコードが作成され、"無効な"の値がデータベースに含まれなくなります。

利点と欠点は何ですか? データベースの効率性に影響しますか?

利点:

  1. 可読性コード
  2. データの完全性から

短所:データベースタイプに列挙型の変換で

  1. オーバーヘッド。これはおそらくごくわずかですが。これをテストしていないが、私はこれが当てはまると仮定する。

コミュニティの残りの部分が確実に上記のリストに追加できると確信していますが、全体的にenumを使用することは理にかなっています。

0

コードの観点から、列挙型は間違いなく意味をなさないと思います。しかし、データベーススキーマを生成するためにNHibernateを使用している場合は、MySQLのEnum Data Typeを使用してそれを調べてください。これは列挙型として列挙型を格納しますが、有効な値だけが入力されるように強制します。これは、ストレージの観点から、またリファクタリングを試みるときにコストがかかる可能性があります。列挙型データベース型はデータベースレベルでの検証を処理するため、任意の更新が気にならないようになります。列挙型メンバの追加や名前の変更が容易になるため、数値を格納して検証することをお勧めします。

流行のnhibernateを使用している場合は、これが最も良い方法であるかどうかはわかりませんが、これはほぼ確実に慣例を使用して達成できますが、at this blog postを見ると、整数としてマッピング列挙型を処理するIUserType遭遇するいくつかの課題を解決します。