タグ

DB設計に関するgologo13のブックマーク (4)

  • 生きているうちに自然キーvsサロゲートキー問題に決着を付けたい(1) - 極北データモデリング

    営業のアプローチ方法にA,Bがあるとして(例えば「礼状は手書きで出す」「礼状は印刷して出す」とか)、Aの成約率が10%でBのそれが5%なら、「Aしかやらない」というのは悪くない選択だろう。だが我々の仕事は営業とは違っている。 ある量産品の製造方法にA,Bがあるとして、Aの良品率が98%でBのそれが95%なら、Aで製造するのが正しいだろう。だが我々の仕事は量産品の製造とは違っている。 システム開発における失敗プロジェクトは、営業における失注や工場における不良品のようなものではない。つまり、事業を行う上での必要経費ではない。 だから、A,Bどちらの開発技法を採用すべきかを、プロジェクトの成功率で決めることはできない。 仮に自然キーを採用したプロジェクトの成功率が5割で、サロゲートキーを使った場合のそれが9割だったとして、「すべてのシステムにサロゲートキーを使う」という判断は間違っている。1割の

    生きているうちに自然キーvsサロゲートキー問題に決着を付けたい(1) - 極北データモデリング
    gologo13
    gologo13 2014/12/17
    基幹系ってなんだ。。。
  • 【DB】 サロゲートキー(代理キー)の初歩

    業務でDBを扱っていて、一意な値をとるカラムがあるのに別途連番を振ってそれを主キーとしているテーブルを見つけたのでなぜだろうと思いググってみると、それはサロゲートキー(代理キー)と呼ぶんだそうです。 これに対して、業務で使用するそのままのデータが入った主キーをナチュラルキーといいます。 で、どっち使えばいいの どちらを使えばよいかネット上でも議論されているのでまとめてみます。 RDBMSの理論的にはナチュラルキーのでの設計が質的な問題。 ナチュラルキーとサロゲートキーについての議論 IDリクワイアド SQLアンチパターン しかし現実的には設計スキル不足や追加要件などが原因で物理設計の仕様変更が起こりうる。 サロゲートキーをつけなかったせいで死にそうになった。 サロゲートキーには仕様変更の保守性を高める効果があるため、これを使おうというのが現場の知恵。 ネット上ではサロゲートキー派が圧倒し

    gologo13
    gologo13 2014/12/17
    意外と深いな。
  • ナチュラルキーとサロゲートキーについての議論

    とあるブログエントリで「ナチュラルキーを主キーにしてはいけない」という主張を見かけたのでこれに反論しておく。これはリレーショナルモデル的には明らかに間違った考えだからだ。 リレーショナルモデルにあるのはナチュラルキーだけリレーショナルモデルには「サロゲートキー(代理キー)」という概念はない。まずこの点に注意して頂きたい。サロゲートキーとは、データベースアプリケーション開発において実用上必要とされる機能であって、質的には不要のものである。リレーショナルモデルでは、いわゆるナチュラルキーというものがあれば機能的には十分だからだ。 そのためにはまず「キー」という概念が何を指し示すかということについて正しく理解しなければならない。リレーショナルモデルではキーと呼ばれるものは候補キーとスーパーキーという2つの概念だけである。「タプル(≒行)の値を一意に決定することができる属性(≒カラム)の集合」の

    ナチュラルキーとサロゲートキーについての議論
  • 第3回 テーブル設計のグレーゾーン~毒と薬は紙一重 (4)サロゲートキーVSナチュラルキー | gihyo.jp

    サロゲートキーVSナチュラルキー DBエンジニアの方なら、サロゲートキー(代理キー)という言葉をご存じでしょう。これは、テーブルへの入力データにある列を主キーとせずに、システム側で独自に割り当てるキーのことです(一般的には連番が使われます⁠)⁠。これに対して、入力データ自体の列を主キーにする場合はナチュラルキー(自然キー)と呼びます。 サロゲートキーは、基的には不要なものです。入力データに一意なキーが存在していればそれを主キーとして使うことで、普通は問題ありませんし、オートナンバリングの機能も長らく標準SQLには存在していなかったからです(そのため、今でも実装ごとにやり方はバラバラです⁠)⁠。しかし、以下のような業務要件の場合には、サロゲートキーを使うことを考えます。 ① そもそも入力データに主キーにできる項目がなく、データが重複している場合 ② 主キーの値が使いまわされる場合 ③ 主キ

    第3回 テーブル設計のグレーゾーン~毒と薬は紙一重 (4)サロゲートキーVSナチュラルキー | gihyo.jp
  • 1