1. はじめに

 SQL でテーブルを定義するときに PRIMARY KEY や UNIQUE を指定すると思いますが,皆さんはリレーション(スキーマ)のキー(key)を一体どのようにして見つけていますか?
 そもそも,「キーとはタップルの一意識別能力を有する属性の組」であることは,リレーショナルデータモデルを学んだ人ならばデータベースのイロハといった事項でしょうが,具体的にリレーション(スキーマ)と所与の関数従属性の集合が指定されたときに,キーを求めなさいと言われると,結構難儀する場合もあるのではないか,と思います.
 本稿では,次に示す 3 つの問題について改めて論じてみます.

  • 候補キーを 1 つ見つける.
  • 候補キーをすべて見つける.
  • 候補キーの数の上限は?

続きを読む