データベース テーブルは主キーと外部キーを介して接続されます。テーブルに主キー制約が指定されている場合、データベース エンジンは主キー列に一意のインデックスを自動的に作成することでデータの一意性を確保します。外部キーとは、データ間のリンクを確立および強化するために使用される 1 つ以上の列です。 2 つのテーブル 外部キー テーブルに格納できるデータを制御するための組み合わせ。
このチュートリアルの動作環境: Windows 7 システム、mysql バージョン 5.8、Dell G3 コンピューター。
データベース テーブルは、主キーと外部キーを介して接続されます。
(推奨チュートリアル: mysql ビデオ チュートリアル)
主キー制約
テーブルには通常、一意の ID があります。テーブル の各行の値の列または列のセット。このような列はテーブルの主キー (PK) と呼ばれ、テーブルのエンティティの整合性を強制するために使用されます。主キー制約はデータの一意性を保証するため、多くの場合、アイデンティティ列に定義されます。
主キー制約がテーブルに指定されている場合、データベース エンジンは主キー列に一意のインデックスを自動的に作成して、データの一意性を確保します。また、このインデックスにより、主キーがクエリで使用される場合にデータへの高速アクセスが可能になります。主キー制約が複数の列に定義されている場合、列内の値を繰り返すことができますが、主キー制約定義内のすべての列の値の組み合わせは一意である必要があります。
次の図に示すように、Purchasing.ProductVendor テーブルの ProductID 列と VendorID 列は、このテーブルの複合主キー制約を構成します。これにより、ProductVendor テーブルの各行が ProductID と VendorID の一意の組み合わせを持つことが保証されます。これにより、重複した行が挿入されるのを防ぎます。
#テーブルには主キー制約を 1 つだけ含めることができます。
主キーは 16 列を超えることはできず、キーの合計長は 900 バイトを超えることはできません。
主キー制約によって生成されたインデックスによって、テーブル内のインデックスの数が 999 個の非クラスター化インデックスと 1 個のクラスター化インデックスを超えて増加することはありません。
主キー制約にクラスター化インデックスまたは非クラスター化インデックスが指定されておらず、テーブルにクラスター化インデックスがない場合は、クラスター化インデックスが使用されます。
主キー制約で定義されたすべての列は、Null にならないように定義する必要があります。 NULL 可能性が指定されていない場合、主キー制約に参加するすべての列の NULL 可能性は非 NULL に設定されます。
CLR ユーザー定義型の列に主キーを定義する場合、その型の実装はバイナリ ソートをサポートする必要があります。
外部キー制約
外部キー (FK) は、2 つのテーブル内のデータ間のリンクを確立および強化するために使用される列です。外部キー テーブルに格納できるデータを制御する列の組み合わせ。外部キー参照では、1 つのテーブルの主キー値を含む 1 つ以上の列が別のテーブルの 1 つ以上の列によって参照される場合、2 つのテーブル間にリンクが作成されます。この列は 2 番目のテーブルの外部キーになります。
たとえば、販売注文と営業担当者の間には論理的な関係があるため、Sales.SalesOrderHeader テーブルには Sales.Salesperson テーブルへの外部キー リンクが含まれています。 SalesOrderHeader テーブルの SalespersonID 列は、Salesperson テーブルの主キー列に対応します。 SalesOrderHeader テーブルの SalespersonID 列は、Salesperson テーブルの外部キーです。外部キー関係を作成すると、SalespersonID の値が Salesperson テーブルの主キーに存在しない場合、SalespersonID の値を SalesOrderHeader テーブルに挿入できません。
テーブルは、最大 253 個の他のテーブルおよび列を外部キー (送信参照) として参照できます。 SQL Server 2016 (13.x) では、別のテーブル (受信参照) で参照できる他のテーブルと列の数の制限が 253 から 10,000 に増加しました。 (互換性レベルは少なくとも 130 である必要があります。) 数制限を増やすと、次の制約が課されます:
DELETE DML 操作のみが 253 を超える外部キー参照をサポートします。 UPDATE および MERGE 操作はサポートされていません。
テーブル自体への外部キー参照を持つテーブルは、依然として 253 個の外部キー参照しか持つことができません。
列ストア インデックス、メモリ最適化テーブル、Stretch Database、またはパーティション分割された外部キー テーブルは、現在 253 を超える外部キー参照をサポートしていません。
外部キー制約のインデックス
主キー制約とは異なり、外部キー制約を作成しても、対応するインデックスは自動的に作成されません。ただし、次の理由により、外部キーのインデックスを手動で作成すると便利なことがよくあります。
外部キー列は、クエリ、メソッド Matches で関連テーブルのデータを結合するときの結合条件でよく使用されます。 1 つのテーブルの外部キー制約内の 1 つ以上の列を、別のテーブルの主キー列または一意キー列に制約します。インデックスを使用すると、データベース エンジンは外部キー テーブル内の関連データをすばやく見つけることができます。ただし、このインデックスの作成は必須ではありません。 2 つの関連するテーブルのデータは、2 つのテーブルに主キーまたは外部キー制約が定義されていない場合でも結合できますが、2 つのテーブル間の外部キー関係は、それらのキーを条件として使用して最適化されていることを示し、クエリに結合します。
主キー制約への変更は、関連テーブルの外部キー制約によってチェックできます。
プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !
以上がデータベーステーブル間の関係を確立する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

MySQLはGPLライセンスを使用します。 1)GPLライセンスにより、MySQLの無料使用、変更、分布が可能になりますが、変更された分布はGPLに準拠する必要があります。 2)商業ライセンスは、公的な変更を回避でき、機密性を必要とする商用アプリケーションに適しています。

Myisamの代わりにInnoDBを選択する場合の状況には、次のものが含まれます。1)トランザクションサポート、2)高い並行性環境、3)高いデータの一貫性。逆に、Myisamを選択する際の状況には、1)主に操作を読む、2)トランザクションサポートは必要ありません。 INNODBは、eコマースプラットフォームなどの高いデータの一貫性とトランザクション処理を必要とするアプリケーションに適していますが、Myisamはブログシステムなどの読み取り集約型およびトランザクションのないアプリケーションに適しています。

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

MySQLには、B-Treeインデックス、ハッシュインデックス、フルテキストインデックス、空間インデックスの4つのメインインデックスタイプがあります。 1.B-Treeインデックスは、範囲クエリ、ソート、グループ化に適しており、従業員テーブルの名前列の作成に適しています。 2。HASHインデックスは、同等のクエリに適しており、メモリストレージエンジンのHASH_TABLEテーブルのID列の作成に適しています。 3。フルテキストインデックスは、記事テーブルのコンテンツ列の作成に適したテキスト検索に使用されます。 4.空間インデックスは、地理空間クエリに使用され、場所テーブルのGEOM列での作成に適しています。

tocreateanindexinmysql、usethecreateindexstatement.1)forasinglecolumn、 "createdexidx_lastnameonemployees(lastname);" 2)foracompositeindexを使用して、 "createindexidx_nameonemployees(lastname、firstname);" 3); "3)、" 3)を使用します

MySQLとSQLiteの主な違いは、設計コンセプトと使用法のシナリオです。1。MySQLは、大規模なアプリケーションとエンタープライズレベルのソリューションに適しており、高性能と高い並行性をサポートしています。 2。SQLiteは、モバイルアプリケーションとデスクトップソフトウェアに適しており、軽量で埋め込みやすいです。

MySQLのインデックスは、データの取得をスピードアップするために使用されるデータベーステーブル内の1つ以上の列の順序付けられた構造です。 1)インデックスは、スキャンされたデータの量を減らすことにより、クエリ速度を改善します。 2)B-Tree Indexは、バランスの取れたツリー構造を使用します。これは、範囲クエリとソートに適しています。 3)CreateIndexステートメントを使用して、createIndexidx_customer_idonorders(customer_id)などのインデックスを作成します。 4)Composite Indexesは、createIndexIDX_CUSTOMER_ORDERONORDERS(Customer_Id、Order_date)などのマルチコラムクエリを最適化できます。 5)説明を使用してクエリ計画を分析し、回避します

MySQLでトランザクションを使用すると、データの一貫性が保証されます。 1)StartTransactionを介してトランザクションを開始し、SQL操作を実行して、コミットまたはロールバックで送信します。 2)SavePointを使用してSave Pointを設定して、部分的なロールバックを許可します。 3)パフォーマンスの最適化の提案には、トランザクション時間の短縮、大規模なクエリの回避、分離レベルの使用が合理的に含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









