- - PR -
テーブルの構成(リレーション)について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-16 16:26
ご返答頂いた方、ありがとうございました。
業務を知るものに聞いたところ、 兼務することは無く、複雑になるものでもないという事なので、 上記Aにしようと思います。 いつも、何を持ってどの形が最適なのかを悩んでしまいますが 今回、いろいろと答えてくださった方々、ありがとうございました。 | ||||||||
|
投稿日時: 2007-01-17 00:08
仕様変更なしに無事に終わるといいですね。 自分なら後々に柔軟に対応可能なBを選びます。 #要件を策定する側から念書が取れれば別ですけど。 #少なくともそのような柔軟性がない仕様は嫌がります。 #まぁ、システムのほんの枝葉な部分ならどうでもいいです。 常識的に考えて社員は一般的に組織に所属するのであって、 セクションに直接に所属しているわけではないですので。 #契約社員などでは異なることもあるかもしれませんが。 普通は「部課にアサインされている」と考えるのでは? その構造では取締役などの表現に無理があると思います。
パフォーマンスを理由にした非正規化と称した手抜きなのでは? 本当にそれが理由な非正規化は滅多に見ないので疑わしいです。 | ||||||||
|
投稿日時: 2007-01-17 00:41
私も所属テーブルだのの関連テーブルでリレーションを表現しますね。
テーブル間の依存関係が疎結合になって、 仕様変更に柔軟に対応しやすくなります。 この辺は、設計技法がたくさんあって、 必ずどれかが正解というわけではありませんが、 自分の経験則では開発しやすいという認識です。 パフォーマンスの問題の話も出ていますが、 例えばパフォーマンスを改善するには 極端な話CPUやらメモリを足せばどうにかなります。 仕様変更に強いデータ構造の場合、 動作中のアプリケーションに対する影響が最小限に抑えられます。 仕様変更のコストが抑えられるわけです。 この辺も正解があるわけではないのですが、 私は「業務システムの仕様なんてコロコロ変わって当然」と割り切っています。 | ||||||||
|
投稿日時: 2007-01-17 10:05
私も A: を手放しで推奨しているつもりはありません。 「滅多に見ない」かどうかという頻度の問題は、 その人の担当している業務領域・経験に依存しますよね。 それを一般化するのはおかしいと思いますし、 それを根拠に「やる・やらない」を議論するのもおかしな話だと思います。 「あるか・ないか」で言えば、「あり得る」と書いたまでの話で、 その判断は必要性に基づいて行えばよい話でしょう。 実証せずに非正規化するなら「手抜き」ですが、 実証した上での選択なら「手抜き」だとは思いません。 | ||||||||
|
投稿日時: 2007-01-19 16:05
社員テーブルと部課テーブルを結合した場合、結合条件は部課IDになるでしょうから結果は、(他社にも同じ部課IDがあるかもしれませんので)その他社の部課も結合されるでしょう。これに会社テーブルを結合すると(今の設計では)同じ部課IDを持った他社も結合されるので、 社員テーブルに、会社IDは必須と思います。
前記の理由で、Aを取らざるを得ないと思います。 [ メッセージ編集済み 編集者: とんくま 編集日時 2007-01-19 16:07 ] | ||||||||
|
投稿日時: 2007-01-19 21:21
最初の書き込みによると、そうでもないようです。
部課IDが単独で主キーですから、会社が異なっても部課IDが重複することはありません。 よくある代理キーということなんでしょう。 |