- - PR -
連関エンティティについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-07-03 00:12
お世話になっております。
サロゲートやIDをDB設計に取組むプロジェクトを最近になり、 よく目にします。中にも全てのテーブル等に対して、 サロゲートやIDを付与し、データアクセスコストを抑えたいと 考えているかたもいます。 サロゲートやIDの考え方は、全てのテーブルに利用するのではなく、 部分部分で、利用したほうがよいのではないかと思いました。 その理由としましては、連関エンティティに対して、 サロゲートやIDは場合によっては、必要がないかと思いました。 例えば、ユーザーテーブルと果物マスターテーブルがあり、それぞれに、 業務で利用するコードとシステムごとのIDまたはサロゲートが 設計されていたとします。 ユーザーテーブルと果物マスターに対して、関連エンティティである ユーザー好物果物テーブルがあったとします。 ユーザー好物果物テーブルには、ユーザーIDと果物マスターIDしか 格納されておりません。 また、ユーザー好物果物テーブルがそれ単独で利用されることはありません。 皆さんは、関連エンティティに対してサロゲート or IDの付与は どうされていますでしょうか? 1.状況によってサロゲートの導入。 2.なんでもかんでもサロゲートまたはID。 3.サロゲートの必要なし。 | ||||
|
投稿日時: 2007-07-04 18:08
「連関エンティティ」・「関連エンティティ」とは、いわゆる多対多テーブルのことですよね。 多対多テーブルの列定義を、 ユーザーID, 果物ID の2つとするのか、 サロゲートキー, ユーザーID, 果物ID の3つとするのか、という違いを問題とされているのでしょうか? (あまり良く具体例が思い浮かびませんでした。) サロゲートキーはなくてもあっても良い、という状況ならば、RDB としてはなくても良いのでしょう。 付けるのはあくまでも RDB にアクセスするためのツール(や RDBMS 自身)の都合によるものだろうと思います。 たとえば、O/R マッピングなどを使うときは、多対多であってもサロゲートキーを付けておかないと不便、というふうになりがちだと思います。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||
|
投稿日時: 2007-07-04 18:22
実際何でも付けると、コードを書く人から不評だったりします。
それでも私は何でも付ける派ですね。 初めてまともに読んだDB設計に関する資料が 羽生章洋さんのものであったという影響ですね。 私の場合は明確な理由があるわけでなく、単なる好みです。 | ||||
|
投稿日時: 2007-07-04 18:49
まさにツール次第と思います。 僕はJavaでEJB3.0でJPAなので、サロゲートは使いません。 素直にJPAを使うと、多対多のための「ジョインテーブル」は、あくまでもリレーションを表現するためのものであり、エンティティに対応するものにはなりません。(当たり前か) Oracle Developerなんかも複合キーを難なくこなせますね。 |
1