データベース管理を容易にする基本キー
データベースはテーブルを使用して情報を整理します。 各テーブルはいくつかの行で構成され、各行は単一のデータベースレコードに対応します。 では、データベースはどのようにしてこれらのレコードをまっすぐに保つのでしょうか? それは鍵の使用によるものです。
主キー
ここで説明する最初のタイプのキーは主キーです。 NS 主キー テーブル内の各レコードを一意に識別します。 すべてのデータベーステーブルには、主キーとして指定された1つ以上の列が必要です。
主キーの例
会社のすべての従業員の人事情報を含むEmployeesというテーブルがあるとします。 各従業員を一意に識別する適切な主キーを選択する必要があります。 あなたの最初の考えは、従業員の名前を使用することかもしれません。 ただし、同じ名前の2人の従業員を雇うことが考えられるため、これは機能しません。 より良い選択は、雇用時に各従業員に割り当てられた一意の従業員ID番号を使用することです。
一部の組織では、社会保障番号(または同様の政府ID)を主キーとして使用しています。これは、各従業員がすでに社会保障番号を持っており、一意であることが保証されているためです。 ただし、この目的での社会保障番号の使用は、プライバシーの懸念から物議を醸しています。
政府機関で働いている場合、1974年のプライバシー法では社会保障番号の使用は合法ではない可能性があります。 このため、ほとんどの組織は、従業員IDや学生IDなどの一意の識別子の使用に移行しています。
主キーを決定してデータベースを設定すると、データベース管理システムはキーの一意性を強制します。 たとえば、既存のレコードを複製する主キーを使用してテーブルにレコードを挿入すると、挿入は失敗します。
ほとんどのデータベースは、主キーを生成することもできます。 たとえば、Microsoft Accessは、AutoNumberデータ型を使用して、テーブル内の各レコードに一意のIDを割り当てるように構成できます。 これは効果的ですが、テーブルの各レコードに無意味な値が残るため、悪い設計手法です。 代わりに、そのスペースを使用して有用なものを保存してください。
外部キー
別の種類のキーは 外部キー. 外部キーは、テーブル間に自然な関係を作成します。 ほとんどのデータベース構造では、テーブル間に自然な関係が存在します。
外部キーの例
Employeesデータベースに戻って、部門情報を含むテーブルをデータベースに追加するとします。 この新しいテーブルはDepartmentsと呼ばれる場合があり、部門全体に関する大量の情報が含まれます。
部門の従業員に関する情報も含めたいのですが、2つのテーブル(従業員と部門)に同じ情報を含めるのは冗長です。 したがって、代わりに、2つのテーブル間に関係を作成します。
テーブル間の関係の作成
Departmentsテーブルが主キーとしてDepartmentName列を使用すると仮定します。 2つのテーブル間の関係を作成するには、Departmentという名前の新しい列をEmployeesテーブルに追加します。
次に、各従業員が所属する部門の名前を入力します。 次に、 データベース管理システム EmployeesテーブルのDepartment列は、Departmentsテーブルを参照する外部キーです。
たとえば、単一の部門に属する複数の従業員がいる可能性があるため、外部キーに一意性の制約はありません。 同様に、Departmentsテーブルのエントリに対応するエントリがEmployeesテーブルにある必要はありません。これは、従業員のいない部門が存在する可能性があるためです。