リレーショナルデータベースは、リレーショナルモデルに基づいています。リレーショナルモデルは、基本的に、ストレージデータの数は、あなたがExcelの表の多くとしてそれらを見ることができる2次元の表です。
テーブルの各列はレコード(Record)、論理的な意味上のレコードデータと呼ばれます。
テーブルの各列はフィールドの数が同じテーブルの各行で、フィールド(列)と呼ばれています。
フィールドは、データ・タイプ(整数、浮動小数点、文字列、日付など)を定義し、させていますNULL
。注NULL
フィールドのデータが存在しないことを示しています。フィールドが整数である場合NULL
、その値を表していない0
。同様に、文字列フィールドは、NULL
それが空の文字列であることを示すものではありません''
。--nullと0と「比較ではありません。
テーブルやリレーショナルデータベースのテーブル間の「一対多」ため、アプリケーションのロジックに従ってデータを整理して保管することができることが、「多くの」と「一から一」との間の関係を確立する必要があります。
リレーショナルデータベース内で、関係が維持する主キーと外部キーによって確立されます。
図1に示すように、プライマリ・キー:一意に異なる記録することによってフィールドを区別することができ、このフィールドが主キーと呼ばれます。
リレーショナルデータベースでは、行ごとにデータテーブルは、レコードと呼ばれています。レコードは複数のフィールドで構成されています。各レコードは、定義されたフィールドの数が含まれています。すべてのレコードを持つテーブルには、同じフィールドの定義を持っています。
表制約2つの任意の記録を繰り返すことができません。
主な要件:テーブルに挿入された後、レコード、それはマスターキーが唯一の場所の履歴として使用され、主キーを変更し、主キーを変更、影響の範囲を引き起こしますが最善ではありません。
主キーの基本原則を選択します。主キーとして任意のサービス関連のフィールドを使用しないでください。
主キーは最高のビジネス完全に無関係な分野であるように、我々は一般的に名前を付けることには、このフィールドを設定しますid
。などの一般的なid
タイプのフィールドは以下のとおりです。
-
自己増力Integer型:主キーの心配が繰り返され、我々は、彼ら自身が所定の主キーを生成しませんしませんので、データレコードを挿入するときに、データベースが自動的に各整数増分に割り当てられています。
-
グローバルに一意の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の関係の外部キーによってを達成することができます。外部キーは、データベースによって制約される可能性がある、制約は、アプリケーションのロジックのみを保証依存するように、設けなくてもよいです。