skillup

技術ブログ

Database

サロゲートキーに関して

投稿日:

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

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

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

メリットとしては

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

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

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

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

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

参考リンク

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

-Database
-

執筆者:


comment

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

関連記事

no image

cake sql系+リレーション+ヘルパー

先月末に引き続いてcakeネタをもりっといきます。 といっても自分用の小ネタリンク集です。 Contents1 sql系の小ネタ1.1 findとread1.2 find(‘count&# …

no image

MySQL小ネタ テーブル単位のリストア・SQLの小ネタ(バックスラッシュの検索)

MySQLのちょい小ネタ。 Contents1 テーブル単位でバックアップ&リストア2 バックスラッシュの入ったSQLについて テーブル単位でバックアップ&リストア 1 通常のdump(データベース単 …

no image

外部結合 応用編

本日は「達人に学ぶSQL徹底指南書」の外部結合の応用編です。 下記のような3つのテーブルがあるとします。例によってここを使わしてもらってます。 tblsex sex_cd | sex —& …

no image

MySQLのユーザー変更+information_schema.columns

MySQLで行うユーザーの作成について

これですが、一つのデータベースに対して行うとhost内のユーザーすべてが切り替わってしまいます …

no image

PostgreSQLについて

本日はポスグレ(PostgreSQL)について。 自分はほとんどMySQLだったので、主にMySQLとの比較について書いていきます。 Contents1 アーキテクチャの違い1.1 MySQL1.2 …