skillup

技術ブログ

Database

サロゲートキーに関して

投稿日:

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

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

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

メリットとしては

  • リレーションが非常に簡単になる
  • レコードの特定が簡単になる

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

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

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

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

参考リンク

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

-Database
-

執筆者:


comment

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

関連記事

no image

NOT EXISTSの利用

引き続きNOT EXISTSの利用です。 思った以上に使えますね・・・がムズイ。 今回は下記のようなテーブル(seats)があるとします。 ケースとしては新幹線の座席番号で空は席が空いている状態、占は …

no image

JPAでの多対多のリレーション

以前、このエントリーでJPAのリレーションについて説明しました。 今回は多対多について説明します。 Contents1 テーブル構成2 ソース2.1 CDのエンティティ2.2 Artistのエンティテ …

no image

サブクエリ 応用編

本日も引き続きサブクエリです。 前回とちょっと近いですが、下記のような歯抜けのテーブル(sales2)があるとします。 year | sale ——+—&#8212 …

no image

jQuery modalダイアログについて&重複時間処理

Contents1 jqueryモーダルダイアログ1.1 あらかじめ読み込むライブラリ1.2 ソース本体1.2.1 Html側1.2.2 Javascript側1.2.3 参考リンク2 重複時間につい …

no image

アンチパターン 参照渡しと値渡し+キー情報の設定+同一値を複数テーブルに配置+正規化が不十分+集計表+不適切なステータス値

本日は自分がデータベースの設計をしていて気を付かないといけないなーと思った点などを。 注意点としては設計のミスは実装で取り返しにくいことが多いので極力気を付けましょう。あといろいろなテーブルのパターン …