4

ディクショナリを表現する「標準的な」方法はありますか - Java 永続化によって維持 - データベース?

人々のテーブルがあり、「職業」という列があるとしましょう。

職業のセットは制限されていますが、拡張することができます。一部の職業は、軍人や医師など、システムにとって特別な意味を持っています。

  1. hereに示すように、職業に列挙型を使用し、データベースに文字列 (name() メソッド) 値を格納できます。シンプルで読みやすいです。
  2. データベースでは、職業 (id、name_of_profession) を持つディクショナリ テーブル 'profession' と、テーブル 'profession' からの外部キー (id_profession) を持つテーブル 'people' を持つことができます。enum には、'profession' テーブルの id 列にマップされた Integer id 値があります。

最初の解決策は短くて簡単です。しかし、その場合、アプリケーションのないデータベースには整合性がありません。2番目の「レガシー」方法は不適切ですか?

4

2 に答える 2

2

2つのアプローチの長所と短所を特定したと思います。あなたの特定のアプリケーションにとってどちらが良いかを決めるのは本当にあなた次第です。

言い換えると、「ベストプラクティス」は、アプリケーションの実際の要件によって異なります。

于 2012-04-14T12:15:50.070 に答える
0

両方のスキームを組み合わせて使用​​できます。

  • 職業の名前である単一の主キーを持つProfessionsテーブルを用意します。

  • People列に外部キー制約を持つテーブルを用意しprofessionます。

プライマリ/外部キーに文字列を使用すると、更新のパフォーマンスに影響しますが、各行がPeople自己完結型になるため、取得操作にメリットがあります。したがって、ベンチマークで別の指示がない限り、この代替手段は可能かもしれません。

于 2012-04-14T12:32:10.453 に答える