タグ

DB設計に関するkyo_agoのブックマーク (3)

  • 複合主キーを避けるべき理由 - 虎塚

    データベース設計の話をしていて、「連番の主キーは業務上意味のないデータだから、テーブルに持たせるのはムダだ。複合主キーにするべき」という意見を聞く機会がありました。 脊髄反射で「ないわー」と思ったものの、理由を上手く説明できなかったので、改めて考えてみました。 その結果、次のような結論に至りました。 単一の連番カラムによる主キーと、複合カラムによる主キーとで迷ったら 実装をシンプルにし、業務変更の影響範囲を小さくするために、複合主キーを避ける というわけで、調べたことや考えたことをメモしておきます。# 間違っている部分があれば、教えていただけると嬉しいです。 (2011/07/25 追記)複合主キーとサロゲートキーについては、要件やシステムに依存して多様な判断がありうると思います。にもかかわらず、「避けるべき」というタイトルにしたのは極端でした。申し訳ありません。ご指摘下さった皆さん、あり

    複合主キーを避けるべき理由 - 虎塚
  • 破片プログラマーの悲しみ - jfluteの日記

    はへん 破片プログラマー 大きなシステムの改修、 巨大に積み上がったプログラムの上での実装、 難度の高い仕事、 ただし破片 巨大な破片 画面を0から 二年、三年、五年と経験を積み、 開発スキルを身に付けたディベロッパー、 だがしかし、 0から画面を作ってみると... ... あれ!? できない。 画面を0から作ったことがほとんどない。 あったとしても、隣の画面の真似ごとをしてただけ。 考えて0から作ったことがない レールのないところ歩いたことがない。 クラスやメソッド クラスを作る。 どうやって?どういう単位で? 決められた中でしか作ったことがない。 その決めがないと何もアイディアが浮かばない。 「どこに何を実装するか?」って、 白いキャンパスの上で考えたことがあるかい? ... メソッドを作る。 どうやって?どういう名前で? どういう引数と戻り値で? メソッドの修正はたくさんしてきたが、

    破片プログラマーの悲しみ - jfluteの日記
  • 論理削除がデータを汚している - jfluteの日記

    ベクトルの違うデータ まあ、それは事実。 ただ、履歴をそのまま残したいということも事実。 いちいち削除履歴テーブルなんて作ってられないのも事実。 ※ここでの論理削除は、復活する論理削除じゃなく、物理削除の代わりとして履歴のための論理削除を指します。(復活する論理削除って、そもそも削除とは言えないって気も...) 来、論理削除されたデータって... そのテーブルの定義するデータとはベクトルの違うデータ である考えます。 でも、わざわざ削除されたデータを保持するテーブルを作ると、それはそれで面倒なのでそのまま同じテーブルに持ったままにする。その方が扱いが簡単なことが多いから。削除フラグを true にするだけで済むから。 個人的には、業務上重要なテーブルに関しては、しっかりと「削除履歴テーブル」を用意して、体のテーブルには常に有効なデータだけがある状態の方が、データメンテもプログラムも遥か

    論理削除がデータを汚している - jfluteの日記
  • 1