SQL_学習_ _リレーショナルモデルの主キー、外部キー、インデックス

リレーショナルデータベースは、リレーショナルモデルに基づいています。リレーショナルモデルは、基本的に、ストレージデータの数は、あなたがExcelの表の多くとしてそれらを見ることができる2次元の表です。

テーブルの各列はレコード(Record)、論理的な意味上のレコードデータと呼ばれます。

テーブルの各列はフィールドの数が同じテーブルの各行で、フィールド(列)と呼ばれています。

フィールドは、データ・タイプ(整数、浮動小数点、文字列、日付など)を定義し、させていますNULLNULLフィールドのデータが存在しないことを示しています。フィールドが整数である場合NULL、その値を表していない0。同様に、文字列フィールドは、NULLそれが空の文字列であることを示すものではありません''--nullと0と「比較ではありません。

テーブルやリレーショナルデータベースのテーブル間の「一対多」ため、アプリケーションのロジックに従ってデータを整理して保管することができることが、「多くの」と「一から一」との間の関係を確立する必要があります。

リレーショナルデータベース内で、関係が維持する主キーと外部キーによって確立されます。

図1に示すように、プライマリ・キー:一意に異なる記録することによってフィールドを区別することができ、このフィールドが主キーと呼ばれます。

リレーショナルデータベースでは、行ごとにデータテーブルは、レコードと呼ばれています。レコードは複数のフィールドで構成されています。各レコードは、定義されたフィールドの数が含まれています。すべてのレコードを持つテーブルには、同じフィールドの定義を持っています。

表制約2つの任意の記録を繰り返すことができません。

主な要件:テーブルに挿入された後、レコード、それはマスターキーが唯一の場所の履歴として使用され、主キーを変更し、主キーを変更、影響の範囲を引き起こしますが最善ではありません。

主キーの基本原則を選択します。主キーとして任意のサービス関連のフィールドを使用しないでください。

主キーは最高のビジネス完全に無関係な分野であるように、我々は一般的に名前を付けることには、このフィールドを設定しますidなどの一般的なidタイプのフィールドは以下のとおりです。

  1. 自己増力Integer型:主キーの心配が繰り返され、我々は、彼ら自身が所定の主キーを生成しませんしませんので、データレコードを挿入するときに、データベースが自動的に各整数増分に割り当てられています。

  2. グローバルに一意のGUIDを入力します。同様に、主キーとしてグローバルに一意の文字列を使用しています8f55d96b-8acc-4636-8cb8-76bf8abc2f57ネットワークカードのMACアドレス、タイムスタンプと乱数列によるGUIDのアルゴリズムが生成され、いつでも任意のコンピュータが異なっていることを保証するために、ほとんどのプログラミング言語が内蔵されているGUIDアルゴリズムは、メインキーの予算を自分で行うことができます。

主キー:即ち、2つ以上のフィールドが主キーであり、マスターキーが主キーと呼ばれ、主キーに重複が許可限り、すべての主キー列を繰り返すことができません。

主キーは、テーブルに記録されている一意の識別子です。ビジネスセンスではない主キーが、BIGINT増分またはGUIDタイプを使用する必要があります。主キーを選択することは非常に重要です。主キーは許されるべきではありませんNULL

複数の列を主キーとして使用することができる、主キーが使用されません。

外部キー:外部キー列と呼ばれる、一緒に他のデータテーブルに関連付けることができます。

外部キーは、カラム名ではなく、外部キー制約を定義することによって達成されていません。

ALTER TABLE students
ADD CONSTRAINT fk_class_id
FOREIGN KEY (class_id) ——名称可以任意 REFERENCES classes (id); —— 外键关联到哪个表的键
通过定义外键约束,关系数据库可以保证无法插入无效的数据。即如果classes表不存在id=99的记录,students表就无法插入class_id=99的记录。

外部キー制約は、データベースのパフォーマンスが低下するように、スピードの追求のためのインターネットアプリケーションの大半は、外部キー制約を設定しませんが、唯一のアプリケーション自体によって、論理の正しさを保証するために。この場合、class_id普通の列が、それはそれの重要な役割の外を果たしました。

またを通じて、外部キー制約を削除するにはALTER TABLE、実装:

ALTER TABLE students
DROP FOREIGN KEY fk_class_id; 

注:外部キー制約を削除し、外部キーがこの列を削除されません。列を削除しますDROP COLUMN ...実装。

多くの多く:多くの関係は実際には二つの対多関係に関連付けられた、中間テーブルを介して、2つ、多くの関係、多くの関係を形成することによって実現され、中間テーブルを介して、我々は定義「多くの多くの。」の関係

ワン:別のテーブルに固有の一つのレコードにテーブルの対応を記録します。

一部のアプリケーションでは、大きなテーブルが1つの目的は、より高いパフォーマンスを得るためには、分離するために、多くの場合、常に読み取りフィールドを読んでいない2つのテーブルに分割されますがあります。例えば、利用者基本情報テーブルのための大規模なユーザーテーブルを分割するuser_infoと、ユーザ詳細情報テーブルuser_profiles、時間のほとんどは、のみ照会する必要があるuser_info表を、あなたが照会する必要はありません。user_profilesあなたは、クエリの速度を向上させることができるように、テーブルを。

リレーショナルデータベースは、多くの、そして多対1の関係の外部キーによってを達成することができます。外部キーは、データベースによって制約される可能性がある、制約は、アプリケーションのロジックのみを保証依存するように、設けなくてもよいです。

 

おすすめ

転載: www.cnblogs.com/CrazyJioJio/p/12591679.html