sql >> データベース >  >> RDS >> Database

データベース設計の候補キーとは何ですか?

    候補キーは、データベースの正規化における重要な概念です。候補キーとは何か、および属性のセットが候補キーであるかどうかを確認する方法については、以下をお読みください。

    候補キー 単にキーとも呼ばれます データベース設計の重要な部分です。これは、プライマリキーや代替(一意の)キーなどの技術概念の理論的基盤です。すべてのデータベース設計者は、候補キーを特定する方法と、テーブルに適切なキーを選択する方法を知っておく必要があります。

    候補キーの概念は、データベース正規化理論の一部として、すべての大学のデータベースコースで教えられています。候補キーについて学習するときに直面する一般的な問題は、特定の属性セットが候補キーであるかどうかを確認し、関係のすべての候補キーを見つけることです。

    候補キーを理解することは、データベーステーブルの正規形を理解するために重要です。この知識は、最も一般的な正規形の規則を覚えておくのに役立ちます。

    この記事では、候補キーの概念を簡単に説明します。さらに、一連の属性が候補キーであるかどうかを確認する方法を示します。

    基本的なデータベース正規化の用語

    候補キーについて読む前に、基本的な正規化の用語に精通していることを確認してください。最も重要な用語を簡単に確認しましょう。

    関係 データベーステーブルの理論上の名前です。リレーション(テーブル)には名前があり、名前付きの属性(列)で構成されます。

    関数従属性 関係で( 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、およびその他のリレーショナルデータベースをサポートしています。試してみて、始めるのがいかに簡単か見てみましょう!


    1. SQL Server(T-SQL)でデータ型のリストを返す方法

    2. SQLServerでSELECTから更新する方法

    3. SQLでのDECODE関数の使用は何ですか?

    4. エラー2003(HY000):「127.0.0.1」のMySQLサーバーに接続できません(111)