一意キー

リレーショナルデータベース設計における概念

リレーショナル データベース管理システムでは一意のキーは候補キーです。リレーションのすべての候補キーは、リレーションのレコードを一意に識別できますが、そのうちの 1 つだけがリレーションの主キーとして使用されます。残りの候補キーは、リレーション内のレコードを一意に識別できるため、一意のキーと呼ばれます。一意のキーは、複数の列で構成できます。一意のキーは、代替キーとも呼ばれます。一意のキーは、リレーションの主キーの代わりとなります。SQL では、一意のキーには重複を防ぐためのUNIQUE 制約が割り当てられています (一意の列では重複エントリは無効です)。代替キーは、単一テーブルの選択やwhere句でのフィルタリングを行うときに主キーのように使用できますが、通常、複数のテーブルの結合には使用されません。

要約

キーは、データベースユーザーとアプリケーションソフトウェアがデータベーステーブル内の情報を識別、アクセス、更新するための手段を提供します。特定のテーブルには複数のキーが存在する場合があります。たとえば、従業員テーブルでは、従業員番号とログイン名はそれぞれ一意です。テーブルにキー制約(一意性制約)を適用することも、データベースのデータ整合性機能です。DBMSは、キー値の重複を引き起こす更新を防ぎ、それによってテーブルが常に一意性に関する望ましいルールに準拠することを保証します。したがって、データベースを設計する際に適切なキーを選択することは、データベースの整合性にとって重要な側面です

リレーショナルデータベースのテーブルには、1つ以上の利用可能な一意のキー(正式には候補キーと呼ばれます)が存在する場合があります。テーブルごとにこれらのキーの1つが主キーに指定され、その他のキーは代替キーと呼ばれます

任意のキーは、1つ以上の属性から構成されます。例えば、社会保障番号は従業員の単一の属性キーとなる可能性があり、フライト番号と日付の組み合わせは、定期便の2つの属性から構成されるキーとなる可能性があります。

データベースのモデリングと実装 で使用されるキーにはいくつかの種類があります。

キー名 定義
シンプル 1つの属性のみで作成されたキー
連結 複数の属性を1つのキーとして結合したキー。例えば、名前の一部または全体にシステム生成の番号が付加されたもので、Eメールアドレス などでよく使用されます
複合 少なくとも2つの属性または単純キーから構成されるキー。複合キーには単純キーのみが存在します
複合 複合キーに似ていますが、個々の属性は単純キーである必要はありません
自然 現在のデータベース外に存在するデータから作成されたキー。つまり、別のシステムからインポートされた社会保障番号など、システムによって生成されたデータではないデータです。
代理 システムによって割り当てられたデータ、または別の候補キーが存在する場合に生成されたデータから作成された人工キー。代理キーは通常、数値ID値であり、パフォーマンス上の理由からよく使用されます。[要出典]
候補 主キーになる可能性のあるキー。
主キーとして選択されるキー。エンティティ内の1つのキーのみが主キーとして選択されます。これは、エンティティ間に存在する関係を定義するために、他のエンティティに移行できるキーです。データモデルが物理データベースにインスタンス化されると、システムがテーブルにアクセスしたり、データを選択する際にテーブルを結合したりするときに最もよく使用されるキーになります
代替 テーブル内の1行のみを識別するために使用できる主キー以外のキー。代替キーは、単一テーブルの選択において主キーのように使用できます
外部 別のエンティティに移行したキー。

最も基本的な定義では、「キーとは一意の識別子である」[1]ため、一意キーは冗長表現です。元のエンティティ内にあるキーは、そのエンティティ内で一意です。別のエンティティに移行したキーは、設計と他のテーブルでの使用方法に応じて、一意である場合とそうでない場合があります。外部キーは別のテーブルの主キーになる場合があります。たとえば、PersonIDはEmployeeテーブルのEmployeeIDになる場合があります。この場合、EmployeeIDは外部キーであると同時に一意の主キーでもあり、テーブルは1対1の関係にあることを意味します。Personエンティティに実父のIDが含まれている場合、父親は複数の子供を持つ可能性があるため、父親のIDは一意であるとは期待されません

以下は、主キーが関連テーブルの外部キーになる例です。ID は Author テーブルから Book テーブルに移行されます。

著者テーブルスキーマ:  

著者ID 氏名住所生年月日   

ブックテーブルスキーマ:  

書籍( ISBN 著者ID タイトル出版社価格)    

ここで、IDはテーブル「Author」の主キーとして機能しますが、AuthorIDはテーブル「Book」の外部キーとしても機能します。外部キーは、このサンプルデータベース内の関連する2つのテーブル間のリンク、つまり接続として機能します。

リレーショナルデータベースでは、候補キーはデータベーステーブル内の各データ値行を一意に識別します。候補キーは、単一のデータベーステーブル内の単一のまたは列セットで構成されます。NULL値は使用されないため、データベーステーブル内の2つの異なる行またはデータレコードが、候補キー列に同じデータ値(またはデータ値の組み合わせ)を持つことはできません。データベーステーブルの設計によっては、複数の候補キーを持つ場合がありますが、主キーとして識別される候補キーは最大で1つです。

キー制約は、ある時点におけるテーブル内のタプルの集合に適用されます。キーは、テーブルに格納される可能性のあるすべてのタプルインスタンス全体にわたって必ずしも一意の識別子である必要はありませんが、データベーステーブル内で重複を許容しないというデータ整合性ルールを意味します。キーの例としては、社会保障番号ISBN、車両登録番号、ユーザーログイン名などが挙げられます。

原則として、任意のキーは外部キーによって参照できます。一部のSQL DBMSでは、主キーに対する外部キー制約のみが許可されていますが、ほとんどのシステムでは、外部キー制約はテーブルの任意のキーを参照できます。

SQLでのキーの定義

SQL におけるキーの定義:

  ALTER TABLE <テーブル識別子> ADD [ CONSTRAINT <制約識別子> ] { PRIMARY KEY | UNIQUE } ( <> [ { , <> } ... ] )    
            
                    

同様に、キーは SQL ステートメントの一部として定義できますCREATE TABLE

  CREATE TABLE table_name ( id_col INT col2 CHARACTER VARYING ( 20 )、key_col SMALLINT NOT NULL ... CONSTRAINT key_unique UNIQUE ( key_col )、... )   
        
           
         
     
       
     
  
  CREATE TABLE table_name ( id_col INT PRIMARY KEY col2 CHARACTER VARYING ( 20 )、... key_col SMALLINT NOT NULL UNIQUE ... )   
          
          
     
          
     
  

主キー制約と一意制約の違い

主キー制約

  1. 主キーではNULL は許可されません(NULL を許可する列では主キーを定義できません)。
  2. 各テーブルは複数の主キーを持つことはできません。
  3. 一部のRDBMSでは、主キーはデフォルトでクラスター化インデックスを生成します。

一意制約

  1. 一意制約は、NULLを許容する列に定義できます。その場合、NULLを含む行は、制約によって定義された列セット全体で実際には一意ではない可能性があります
  2. 各テーブルには複数の一意の制約を設定できます。
  3. 一部のRDBMSでは、一意の制約によって、デフォルトで非クラスター化インデックスが生成されます。

PRIMARY KEY制約とは異なり、UNIQUE制約は制約対象となる列に対してNOT NULLを暗黙的に指定するものではないことに注意してください。列をキーにするには、NOT NULLを指定する必要があります。NULL値可能な列にUNIQUE制約を設定することは可能ですが、SQL標準では、この制約はNULL値可能な列の一意性を保証するものではないと規定されています(いずれかの列にNULL値が含まれている行については、一意性は強制されません)。

SQL [2]標準によれば、一意制約はNULL値が存在する場合に一意性を強制しないため、NULL値と非NULL値の同一の組み合わせを持つ複数の行を含めることができる。ただし、すべてのRDBMSがこの機能をSQL標準に従って実装しているわけではない。[3] [4]

参照

参考文献

  1. ^ Awad, Elias (1985),システム分析と設計 第2版, Richard D. Irwin, Inc., ISBN 0-256-02824-9
  2. ^ ANSI/ISO/IEC SQLの概要 2012年4月25日アーカイブ、Wayback Machine
  3. ^ 「制約 - SQLデータベース参考資料 - SQLを学び、SQLマニュアルを読み、SQLチュートリアルに従い、SQLクエリの構造化方法を学習しましょう!」www.sql.org 。 2018年8月16日閲覧
  4. ^ 「さまざまなSQL実装の比較」troels.arvin.dk . 2018年8月16日閲覧
  • リレーションデータベース用語集、キー:RDBMSにおけるさまざまな種類のキーの概要
「https://en.wikipedia.org/w/index.php?title=Unique_key&oldid=1261384537」から取得