候補キーは、データベースの正規化における重要な概念です。候補キーとは何か、および属性のセットが候補キーであるかどうかを確認する方法については、以下をお読みください。
候補キー 単にキーとも呼ばれます データベース設計の重要な部分です。これは、プライマリキーや代替(一意の)キーなどの技術概念の理論的基盤です。すべてのデータベース設計者は、候補キーを特定する方法と、テーブルに適切なキーを選択する方法を知っておく必要があります。
候補キーの概念は、データベース正規化理論の一部として、すべての大学のデータベースコースで教えられています。候補キーについて学習するときに直面する一般的な問題は、特定の属性セットが候補キーであるかどうかを確認し、関係のすべての候補キーを見つけることです。
候補キーを理解することは、データベーステーブルの正規形を理解するために重要です。この知識は、最も一般的な正規形の規則を覚えておくのに役立ちます。
この記事では、候補キーの概念を簡単に説明します。さらに、一連の属性が候補キーであるかどうかを確認する方法を示します。
基本的なデータベース正規化の用語
候補キーについて読む前に、基本的な正規化の用語に精通していることを確認してください。最も重要な用語を簡単に確認しましょう。
関係 データベーステーブルの理論上の名前です。リレーション(テーブル)には名前があり、名前付きの属性(列)で構成されます。
関数従属性 関係で( A-> B )は、2つの行がセットAのすべての属性に対して同じ値を持つ場合は常に、セットBのすべての属性に対しても同じ値を持つことを示しています。
クロージャー 属性のセットのは、このセットから機能的に決定できる属性のセットです。ここで、属性のクロージャを計算するためのアルゴリズムを確認できます。
スーパーキー
非公式には、候補キーは行を一意に識別する属性のセットです。
定義上、候補キーは最小限のスーパーキーです。それで、これはどういう意味ですか? スーパーキー は属性または属性のセットであり、そのクロージャーはリレーション内のすべての属性です。
いくつかの例を見てみましょう。ここに、CourseEditionsテーブルがあります。コースのエディションに関する情報が保存されます。
毎年、特定のコースは、異なる価格とスポットの異なる制限で、異なる教師によって教えることができます。したがって、次の機能依存性があります。
- id->コース、年、教師、価格、スポット –IDによって他のすべての属性が決まります
- コース、年-> ID、教師、価格、スポット –コースと年によって、ID、教師、価格、スポットが決まります。
CourseEditions
id | コース | 年 | 先生 | 価格 | スポット |
---|---|---|---|---|---|
1 | データベース | 2019 | クリスケープ | 100 | 45 |
2 | 数学 | 2019 | ダニエルパー | 80 | 34 |
3 | データベース | 2020 | ジェニファークロック | 110 | 30 |
このテーブルのスーパーキーは何ですか?まず、すべての属性がスーパーキーを形成するため、セット {id、course、year、teacher、price、spots} スーパーキーです。すべての属性のセットは、すべてのテーブルのスーパーキーであることを忘れないでください。
このテーブルに小さなスーパーキーはありますか?はい、あります。セット{id} スーパーキーです。機能従属性id->コース、年、教師、価格、スポット 、そしてもちろん、自明な依存関係があります id-> id 。 idを取得したら、 機能従属性から他のすべての属性を判別できます。
セット{コース、年} スーパーキーでもあります。機能依存性がありますコース、年-> ID、教師、価格、スポット 、そして私たちは些細な機能従属性を持っていますコース->コース および年->年 。 コースができたら および年 、機能従属性から他のすべての属性を判別できます。
セット{id、course、year、teacher} スーパーキーでもあります。 id 、コース 、および年 。したがって、これら3つの属性を使用して、テーブル内の他のすべての属性を判別できます。
一方、セット {teacher} スーパーキーではありません。 先生を知っているなら 先生以外の属性を特定することはできません。セット{先生、価格} また、スーパーキーではありません。 先生ができたら および価格 、これ以上属性を特定することはできません。
最小限のスーパーキー
すべてのスーパーキーが候補キーであるとは限りません。候補キーになるには、スーパーキーが最小である必要があります。 つまり、属性を削除すると、スーパーキーではなくなります。いくつかの例を見てみましょう。
セット{id} はスーパーキーであり、最小限です。空のセットが作成され、空のセットはスーパーキーではないため、属性を削除することはできません。したがって、セット {id} 候補キーです。
セット{コース、年} スーパーキーおよび候補キーでもあります。いずれかの属性を削除すると、残りのセットはスーパーキーではなくなります。両方のコースが必要です および年 セット内の他の属性を決定します。
ただし、セット {id、course、year、teacher} スーパーキーですが、候補キーではありません。たとえば、属性 Teacherを削除した場合 残りのセットはまだスーパーキーです。実際、この場合、 {id、course、year、teacher}から任意の属性を削除できます。 、残りのセットは引き続きスーパーキーになります。
最小限のスーパーキーは、要素の数が最も少ないスーパーキーを意味するわけではないことに注意してください。両方{id} および{コース、年} 要素の数が異なっていても、候補キーです。
アルゴリズム:一連の属性が候補キーであることを確認する
これは一般的なデータベース設計の問題です。属性のセットが候補キーであるかどうかをどのように確認しますか?
検証するためのアルゴリズムは次のとおりです。
- ステップ1:指定されたセットがスーパーキーであるかどうかを確認します。セット内の属性のクロージャを計算します。クロージャーがすべての属性のセットである場合、そのセットはスーパーキーです。
- ステップ2:スーパーキーが最小かどうかを確認します。各属性を一度に1つずつ削除します。残りのセットがスーパーキーである場合、スーパーキーは最小ではなく、セットは候補キーではありません。どの属性も削除できず、スーパーキープロパティを保持できない場合、そのセットは候補キーです。
たとえば、セットが {course、year}かどうかを確認しましょう。 確かに候補キーです。
- ステップ1: {course、year}の終了を計算してみましょう。 クロージャアルゴリズムを使用して、クロージャは確かに {id、course、year、teacher、price、spots}であると結論付けます。 したがって、セット {course、year} 確かにスーパーキーです。
- ステップ2.コースを削除してみましょう セットから。セット{year}が残っています。 年だけでは機能依存性はありません 左側として。したがって、このセットの終了は {year} 。同様に、属性 year、を削除すると 残りのセットのクロージャは{course}です。 どちらも{年} {コース} はスーパーキーなので、セット {course、year} は最小限のスーパーキーであり、したがって候補キーです。
この記事が気に入った場合は、ブログの他の正規化記事を確認してください。
データベースクラスを受講している学生の場合は、オンラインER図描画ツールであるVertabeloで無料のアカデミックアカウントを作成してください。論理的および物理的なER図をブラウザで直接描画できます。
Vertabeloは、PostgreSQL、SQL Server、Oracle、MySQL、Google BigQuery、Amazon Redshift、およびその他のリレーショナルデータベースをサポートしています。試してみて、始めるのがいかに簡単か見てみましょう!