SQLデータベースの外部キーとは何ですか?

SQLデータベースの外部キーとは何ですか?

外部キーを使用すると、データベース管理者はSQLデータベース管理システム内に存在するさまざまな接続を簡単に識別できます。





SQLは、データベース管理システム内のデータに対して数学演算を実行します。これらのデータベースには、それぞれが特定のエンティティにデータを格納するさまざまなテーブルが含まれています。レンタカーデータベースがある場合、そのデータベース内のエンティティ(またはテーブル)は顧客になります(各顧客のすべての個人データが保存されます)。





これらのデータベーステーブルには行と列が含まれ、各行はレコードをホストし、各列は属性固有のデータを保持します。





データベース管理システムでは、各レコード(または行)は一意である必要があります。

主キー

テーブル内の各レコードは区別する必要があるという規定がありますが、常にそうであるとは限りません。レンタカーデータベースの例を続けると、データベースにそれぞれJohn Brownという名前の2人の顧客が含まれている場合、JohnBrownはレンタルしていないメルセデスベンツを返すことが期待できます。



主キーを作成すると、このリスクが軽減されます。 SQLデータベース管理システムでは、主キーは、あるレコードを別のレコードから区別する一意の識別子です。

Wordでページを整理する方法

したがって、SQLデータベース管理システムのすべてのレコードには主キーが必要です。





データベースでの主キーの使用

SQLを使用してデータベース管理システムに主キーを含めるには、新しいテーブルを作成するときに、主キーを通常の属性として追加するだけです。したがって、顧客のテーブルには4つの属性(または列)が含まれます。

  • CarOwnerID(主キーを格納します)
  • ファーストネーム
  • 苗字
  • 電話番号

関連している: SQLでテーブルを作成する方法





これで、データベースに入力されるすべての顧客レコードに、一意の識別番号、および名、姓、電話番号が割り当てられます。電話番号は、主キーとして十分に一意ではありません。これは、一度に1人の人に固有であるにもかかわらず、人は自分の番号を簡単に変更できるため、他の人のものになるためです。

主キーの例を含むレコード

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

上記のSQLコードは、既存のレコードに新しいレコードを追加します お客様 テーブル。次の表は、2つのJohnBrownレコードを含む新しい顧客テーブルを示しています。

外部キー

これで、あるレンタカー会社を別のレンタカー会社と一意に区別する主キーができました。唯一の問題は、データベースでは、各ジョン・ブラウンと彼が借りている車との間に実際の関係がないことです。

したがって、間違いを犯す可能性は依然として存在します。ここで外部キーが役立ちます。主キーを使用して所有権のあいまいさの問題を解決するには、主キーが外部キーを兼ねている場合にのみ達成できます。

外部キーとは何ですか?

SQLデータベース管理システムでは、外部キーは、データベース内の2つ以上のテーブルを接続する一意の識別子または一意の識別子の組み合わせです。

存在する4つのSQLデータベース管理システムの中で、リレーショナルデータベース管理システムが最も人気があります。リレーショナルデータベース内のどのテーブルに外部キーを含めるかを決定するときは、最初に、どのテーブルがサブジェクトであり、どのテーブルがそれらの関係のオブジェクトであるかを特定する必要があります。

レンタカーデータベースに戻って、各顧客を正しい車に接続するには、顧客(対象)が車(対象)を借りていることを理解する必要があります。したがって、外部キーは車のテーブルにある必要があります。

外部キーを使用してテーブルを生成するSQLコードは、標準とは少し異なります。

外部キーの例を使用したテーブルの作成

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

上記のコードでわかるように、外部キーは、新しいテーブルに接続されている主キーへの参照とともに、そのように明示的に識別される必要があります。

100ディスク使用量を示すウィンドウズ10

関連している: 初心者向けの基本的なSQLコマンドのチートシート

新しいテーブルにレコードを追加するには、外部キーフィールドの値が元のテーブルの主キーフィールドの値と一致していることを確認する必要があります。

外部キーの例を使用したレコードの追加

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

上記のコードは、新しいレコードに新しいレコードを作成します テーブル、次の結果を生成します。

車のテーブル

上の表から、レコードの外部キーによってメルセデスベンツを借りている正しいジョンブラウンを特定できます。

アドバンス外部キー

データベースで外部キーを使用する方法は他に2つあります。

上記の外部キーの定義を振り返ると、外部キーは一意の識別子または一意の識別子の組み合わせである可能性があることがわかります。

レンタカーデータベースの例に戻ると、顧客がその車を借りるたびに(同じ車の)新しいレコードを作成すると、 テーブル。車が販売されていて、1人の顧客に一度販売された場合、既存のデータベースは完璧です。しかし、車がレンタルであることを考えると、このデータを表すためのより良い方法があります。

複合キー

複合キーには、2つ以上の一意の識別子があります。リレーショナルデータベースでは、単一の外部キーを使用しても、そのデータベース内に存在する関係を十分に表せない場合があります。

レンタカーの例では、最も実用的なアプローチは、家賃の詳細を格納する新しいテーブルを作成することです。レンタカーテーブルの情報を役立てるには、レンタカーテーブルと顧客テーブルの両方に接続する必要があります。

複合外部キーを使用したテーブルの作成

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

上記のコードは重要なポイントを示しています。 SQLデータベースのテーブルには複数の外部キーを含めることができますが、持つことができる主キーは1つだけです。これは、レコードを識別するための一意の方法が1つしかないためです。

一意のキーを使用するには、テーブル内の3つの属性すべてを組み合わせる必要があります。顧客は同じ日に複数の車を借りることができます(つまり 顧客IDDateRented 良い組み合わせではありません)複数の​​顧客が同じ日に同じ車を借りることもできます(したがって ライセンス番号DateRented 良い組み合わせではありません)。

ただし、どの顧客、どの車、どの日に、優れた一意のキーになるかを示す複合キーを作成します。この一意のキーは、複合外部キーと複合主キーの両方を表します。

人生のクイズであなたの目的を見つける方法

外部主キー

そうそう、外部主キーは存在します。正式な名前はありませんが、外部キーを同じテーブルの主キーにすることもできます。これは、既存のエンティティ(または別のテーブルのレコード)に関する特殊なデータを含む新しいテーブルを作成するときに発生します。

レンタカー会社で働いているFredは、会社のデータベースのemployeeテーブルにあります。数年後、彼はスーパーバイザーになり、スーパーバイザーテーブルに追加されます。

フレッドはまだ従業員であり、同じID番号を持ちます。そのため、Fredの従業員IDは、外部キーとしてスーパーバイザーテーブルにあり、そのテーブルの主キーにもなります(Fredがスーパーバイザーになったため、新しいID番号を作成しても意味がありません)。

SQLデータベースで外部キーを識別できるようになりました

外部キーは、SQLデータベース内のさまざまなテーブルを接続します。この記事から、外部キーとは何か、それがどのように機能するか、そしてデータベースに外部キーを保持することが重要である理由を理解できます。また、基本的な、さらに複雑な形式の外部キーについても理解しています。

外部キーが興味深いと思われる場合は、プロジェクトと選択操作を使用してSQLデータベースにクエリを実行するフィールドデーがあります。

共有 共有 つぶやき Eメール SQLでプロジェクトと選択操作を使用する方法を学ぶ

これらの例を使用してプロジェクトと選択の操作を理解することにより、SQLリレーショナルデータベースを理解してください。

次を読む
関連トピック
  • プログラミング
  • プログラミング
  • SQL
  • データベース
著者について カデイシャキーン(21の記事が公開されました)

Kadeisha Keanは、フルスタックソフトウェア開発者およびテクニカル/テクノロジーライターです。彼女は、最も複雑な技術的概念のいくつかを単純化する明確な能力を持っています。技術初心者なら誰でも簡単に理解できる素材を作る。彼女は、執筆、興味深いソフトウェアの開発、そして(ドキュメンタリーを通じて)世界中を旅することに情熱を注いでいます。

KadeishaKeanのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください