データベース管理を簡単にする基本キー

データベースキーは、効率的なリレーショナルデータベースを作成する最も簡単な方法です

ご存知のように、データベースはテーブルを使用して情報を整理します。 (データベースの概念を基本的に理解していない場合は、「データベースとは」を参照してください )。各テーブルは複数の行で構成され、各行は単一のデータベースレコードに対応します。 だから、データベースはどのようにこれらの記録をすべて真っ直ぐに保つのか? それは鍵の使用によるものです。

主キー

ここで説明する最初の種類のキーは主キーです。 すべてのデータベーステーブルには、 プライマリキーとして指定された1つ以上の列が必要です。 このキーが保持する値は、データベース内のレコードごとに一意でなければなりません。

たとえば、当社のすべての従業員の人事情報を含むEmployeesというテーブルがあるとします。 各従業員を一意に識別する適切な主キーを選択する必要があります。 あなたの最初の考えは、従業員の名前を使用することです。 あなたが同じ名前の2人の従業員を雇うことが考えられるので、これはうまくいかないでしょう。 より良い選択肢は、雇用時に各従業員に割り当てる一意の従業員ID番号を使用することです。 いくつかの組織では、各従業員にすでに1つがあり、それらが一意であることが保証されているため、このタスクに社会保障番号(または同様の政府の識別子)を使用することを選択します。 しかし、この目的のために社会保障番号を使用することは、プライバシーに関する懸念から非常に議論の余地があります。 (政府機関に勤めている場合は、1974年のプライバシー法の下では、社会保障番号の使用は違法かもしれません。)このため、ほとんどの組織は一意の識別子(従業員ID、学生IDなど)これらのプライバシーに関する懸念事項を共有していない。

主キーを決定してデータベースを設定すると、データベース管理システムはキーの一意性を強制します。

既存のレコードを複製する主キーを持つテーブルにレコードを挿入しようとすると、挿入は失敗します。

ほとんどのデータベースは、独自の主キーを生成することもできます。 たとえば、Microsoft Accessは、オートナンバー型データ型を使用して、テーブルの各レコードに一意のIDを割り当てるように構成されている場合があります。 効果的ですが、これは表の各レコードに意味のない値が残るため、設計上の妥当性がありません。 何か役に立つものを保管するためにそのスペースを使用してみませんか?

外部キー

別のタイプは外部キーで 、テーブル間の関係を作成するために使用されます。 ほとんどのデータベース構造では、テーブル間に自然な関係が存在します。 Employeesデータベースに戻って、部門情報を含むテーブルをデータベースに追加するとします。 この新しいテーブルはDepartmentsと呼ばれ、部門全体に関する大量の情報を含んでいます。 また、部門の従業員に関する情報を含めることもできますが、2つのテーブル(従業員と部署)に同じ情報を持たせることは冗長です。 代わりに、2つのテーブルの間に関係を作成することができます。

DepartmentsテーブルがDepartment Nameカラムを主キーとして使用すると仮定しましょう。 2つのテーブルの間にリレーションシップを作成するには、DepartmentというEmployeesテーブルに新しい列を追加します。 次に、各従業員が所属する部署の名前を記入します。 また、EmployeesテーブルのDepartmentカラムがDepartmentsテーブルを参照する外部キーであることをデータベース管理システムに通知します

次に、EmployeesテーブルのDepartmentsカラムのすべての値がDepartmentsテーブルの対応するエントリを持つようにすることによって、データベースは参照整合性を強制します。

外部キーには一意制約がないことに注意してください。 我々は1つの部門に属する複数の従業員を抱えている可能性があります。 同様に、Departmentsテーブルのエントリには、対応するエントリがEmployeesテーブルに含まれている必要はありません。 従業員のいない部署がある可能性もあります。

このトピックの詳細については、 外部キーの作成を参照してください。