skillup

技術ブログ

Database

サロゲートキーに関して

投稿日:2018年11月24日 更新日:

テーブル設計に関してのメモ。

テーブルを作る時にid int not null auto_increment primary keyを自動的に作ることが多いと思いますが、サロゲートキーといい、グレーノウハウに属します。

本来であれば複合主キーを使ってレコードを特定すべきですが、複合主キー自体にもデメリットがあるので代替案としてこれが使われることが多いです。

メリットとしては

  • リレーションが非常に簡単になる
  • レコードの特定が簡単になる
  • リレーションが(数字を使うので)高速になることが多い。

というメリットがあります。(以前はほぼ自動的に作ってましたね・・・)

  • 元々論理的に存在しないカラムであり、モデルをわかりにくくする

というデメリットがあります。

あとはあるデータベースのデータを別のデータベースのテーブルにコピーなんかするときにこれを使っているとリレーションの際、idが完全一致しないことが多いので、サロゲートキーの書き換えをしないとかなり面倒です・・・

参考リンク

論理設計のグレーノウハウ サロゲートキー

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

SQL基礎 手続き型言語と集合思考の言語

どんな仕事でもそうだと思いますが、長年惰性で使っていると日常の作業はなんとかできてるけど、実は深く理解していない&効率のいいやり方を知らない、ということが結構あります。 私の場合、ちょっと前にCSSを …

no image

CASE+HAVING句

今回はCASEとHAVINGを組み合わせて、そこそこの難問を解いていきます。 まず下記のようなテーブル(testresults)があるとします。 student | class | sex | sco …

no image

DBの基礎 テーブルとは

CSSを学習したあとはデータベースの学習などを。 参考図書:「達人に学ぶDB設計指南書」基本的にはこれを読んでいきます。が、現状よくわからないところは飛ばしていきます・・・ Contents1 テーブ …

no image

SQL基礎 case式について

case式に関して。 集約系の関数では複雑な処理を一気に行うことができる。 case式は1列のみ有効。複数の列に対して行うことはできない。 case ~ when ・・・thenではwhenが評価され …

no image

アンチパターン 連鎖倒産+エラー監視+データのバックアップ

本日は主にインフラの設計的なことに関して。 Contents1 連鎖倒産1.1 デメリット1.2 対策2 エラー監視2.1 デメリット2.2 対策3 データのバックアップ体制3.1 デメリット3.2 …