■[DB]ナチャラルキー(自然キー)とサロゲートキー(代替キー) 22:12
http://d.hatena.ne.jp/samehada3/20070320/1174396324
テーブルの主キーを決める場合、ナチャラルキー(自然キー)とサロゲートキー(代替キー)というアプローチがある。
ナチャラルキーとは、システムの外部から入力される社員番号のような業務上意味のあるキーであり、サロゲートキーとは、単にレコードをユニークに扱う為の業務上意味を持たない連番などのキーである。
一概にどちらが優れていると言えないが次のようなメリット、デメリットがあると考える。
ナチュラルキー サロゲートキー
メリット ・テーブルの関連が理解しやすい ・変更に強い
・ORMする場合、オブジェクトとテーブルの対応がしやすい
デメリット ・変更に弱い
・・ORMする場合、オブジェクトとテーブルの対応がしづらい テーブルの関連がわかりづらい
個人的に・・・
単にレコードのデータを見た場合、サロゲートキーだと何のレコードかわかりづらい気がするし、テーブルの関連をみる場合もナチュラルキーの方が関連の意味が読み取りやすい気がする。
でもORMするなら、複合キーを利用するよりはサロゲートキーを利用した方が扱いやすいし、ナチュラルキーより断然向いている気がする。いちいち複合キークラスを作るのも面倒くさいし。。
あと、社員番号の体系が数値から英数を含むコードに変更されたなんていう場合もサロゲートキーの方が修正のインパクトが小さいだろうなぁ。
というわけで今後、JPAを使う場合は、サロゲートキーを導入して、ナチュラルキーとなりそうな項目は候補キーとしてユニーク制約を貼るといったアプローチをとってみようと思う。
ブログ アーカイブ
-
▼
2009
(28)
-
▼
8月
(28)
- JavaScript와 Ajax를 이용한 비동기식
- link
- タグファイル
- [DB]ナチャラルキー(自然キー)とサロゲートキー(代替キー)
- Version Number パターンによる排他制御
- [S2JDBC]排他制御について
- jquery - iframe
- jdk api window help file format
- Javaの理論と実践: 並行コレクション・クラス
- Tigerでのアノテーション 第1回: Javaコードにメタデータを追加する
- 実用的なXML: Java NIOへの取り組み バッファーおよびチャネルに寄り道する方法
- java.io VS java.nio
- XLSBeansExcelとJavaBeansをJava 5のアノテーションでマッピングするためのラ...
- Windows XP で使用可能なショートカット キー一覧
- Windows ショートカットキー
- 「設計書(Excelブック形式)からソースコードを自動生成」してしまう「blanco Framewo...
- Trac
- struts menuを利用したサンプルリンク集
- 개발 환경 구축 pukiwiki
- pukiwiki intall 1 - php + apache + mysql setup
- pukiwiki
- maven setup
- maven setup
- 第3回Seasar勉強会
- OGNL
- JSON-libでXMLのJSON化
- アノテーションのアノテーション
- s2strutsとsastrutsの違い
-
▼
8月
(28)
マイブログ リスト
![](http://photos1.blogger.com/x/blogger2/3476/938359516391572/240/z/411320/gse_multipart45067.jpg)
Jang ki hote
0 件のコメント:
コメントを投稿