MySQLの外部キーが主キーになることができますか
MySQL外部キーは主要なキーとして設定できますが、一般的には推奨されません。理由は次のとおりです。外国の鍵は、人間関係を維持する責任を引き受け、責任は主要なキーとして設定した後、重すぎます。冗長なデータはメンテナンスコストを増加させます。外部キーは、別のテーブルの主要な鍵に依存し、変更されたときに矛盾を引き起こす可能性があります。
MySQLの外部キーは主キーになることはできますか?答えは次のとおりですが、通常は推奨されません。
この質問は簡単に思えますが、隠された謎があります。表面的には、テーブルを関連付けるために外国の鍵は使用されていませんか?主要な鍵は、レコードを独自に識別するために使用されませんか?外部キーを主キーとして設定することには何の問題もないようです。しかし、実際のアプリケーションでは、これを行うことで、多くの場合、自分のために穴を掘ります。
まず、MySQLのプライマリキーと外国の鍵の概念を確認しましょう。主キーは、名前が示すように、各レコードを一意に識別する列です。データの一意性を保証し、複製値を許可しません。外部キーを使用して、テーブル間の関係を確立します。これは、データの一貫性と完全性を確保するための別のテーブルの主要なキーを指します。
これらを理解することにより、なぜ外部キーを主要なキーとして設定することをお勧めしない理由を理解できます。理由は単純です。主要なキーは、この表のレコードの独自性を特定することに焦点を当てる必要があり、外部キーの責任は他のテーブルとの関係を維持することです。外部キーを主キーとして設定するということは、外部鍵を強制的に二重の責任を引き受けるように強制することを意味します。これは、従業員に2つの完全に異なる部門を同時に担当するようなものであり、これは非効率的でエラーを起こしやすいです。
外部キーが別のテーブルの主要なキーであると想像してください。実際に別のテーブルの主要なキーをこのテーブルにコピーしています。これにより、冗長データが追加されるだけでなく、データの矛盾につながる可能性があります。別のテーブルの主要なキーが変更された場合、テーブル内のデータもそれに応じて更新する必要があります。そうしないと、データは一貫していません。これは小さな問題ではありません。特にデータ量が大きい場合、維持し、予測不可能なエラーを引き起こすことさえ非常に面倒です。
もちろん、特別な場合は、これを行う必要がある場合があります。たとえば、他のテーブルの特定の公開情報を保存するために特別に使用されるテーブルがあり、このテーブルの主要なキーは、他のテーブルの一意の識別子でもあります。この場合、外部キーを主キーとして設定することは可能ですが、データの完全性と一貫性を注意し、完全に考慮してください。
例を見てみましょう。 users
とorders
2つの表があるとします。 users
テーブルには主要なキーuser_id
があり、 orders
テーブルには外部キーuser_id
があり、 users
テーブルの主キーを指します。
<code class="sql">-- users 表CREATE TABLE users ( user_id INT PRIMARY KEY, username VARCHAR(255) ); -- orders 表CREATE TABLE orders ( order_id INT PRIMARY KEY, user_id INT, order_date DATE, FOREIGN KEY (user_id) REFERENCES users(user_id) );</code>
この例では、 orders
テーブルのuser_id
外部キーですが、主要なキーではありません。 user_id
主キーに強制する場合、 orders
テーブルに2つの注文が同じユーザーに属することはできません。これは明らかに実際の状況に適合しません。
全体として、MySQLでは外部キーを主要なキーとして設定することができますが、これは通常、ベストプラクティスではありません。データベースの設計を非常に深く理解していて、正当な理由がない限り、そうすることを避けるのが最善です。クリアデータベース設計により、システムの安定性と保守性を確保できることを忘れないでください。いわゆるシンプルさを追求して、システムの堅牢性を犠牲にしないでください。それは家を建てるようなものです。基礎がしっかりと置かれている場合にのみ、高層ビルを建設できます。そうでなければ、装飾がどれほど美しくても、基礎が不安定であるというリスクを隠すことはできません。
以上がMySQLの外部キーが主キーになることができますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック











MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

仮想通貨価格の上昇の要因には、次のものが含まれます。1。市場需要の増加、2。供給の減少、3。刺激された肯定的なニュース、4。楽観的な市場感情、5。マクロ経済環境。衰退要因は次のとおりです。1。市場需要の減少、2。供給の増加、3。ネガティブニュースのストライキ、4。悲観的市場感情、5。マクロ経済環境。

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

SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLはSQLを使用するデータベース管理システムです。 SQLは、CRUD操作を含むデータベースと対話する方法を定義しますが、MySQLはSQL標準を実装し、ストアドプロシージャやトリガーなどの追加機能を提供します。

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

Concordium:プライバシーとコンプライアンスを考慮した公開第1レベルのブロックチェーンプラットフォームは、公開第1レベルのブロックチェーンプラットフォームです。その中心は、プライバシーと規制のコンプライアンスとアイデンティティ検証の巧妙な統合にあります。 Lars Seier Christensenによって2018年に設立されたプラットフォームのコアテクノロジーは、各トランザクションのプロトコルレベルに暗号化のアイデンティティを埋め込みます。このユニークな設計により、ユーザーのプライバシーを保護しながら責任のトレーサビリティが保証され、ブロックチェーン分野での匿名性と規制要件の間の競合の問題を効果的に解決します。この問題を軽減するために、Concordiumはゼロナレッジプルーフ(ZKP)テクノロジーを利用して、不要な個人情報を開示することなく特定のID属性を検証できるようにします。これは、それにもかかわらず、それを意味します

MySQLは、迅速な開発や中小規模のアプリケーションに適していますが、Oracleは大規模な企業や高可用性のニーズに適しています。 1)MySQLはオープンソースで使いやすく、Webアプリケーションや中小企業に適しています。 2)Oracleは強力で、大企業や政府機関に適しています。 3)MySQLはさまざまなストレージエンジンをサポートし、Oracleは豊富なエンタープライズレベルの機能を提供します。

WordPressで今日の日付を表示しますか?多くのニュースWebサイト、オンラインジャーナル、および頻繁に更新されるブログは、現在の日付と時刻を表示したい場合があります。これにより、ユーザーは現在の日付とコンテンツが公開されたときに知ることができます。この記事では、WordPressサイトに今日の日付または現在の時間を簡単に表示する方法を紹介します。なぜWordPressで今日の日付を示すのですか?多くのニュースサイトは、ウェブサイトのタイトルセクション、特に毎日メインストーリーを公開する小さなニュースサイトに現在の日付を表示しています。これにより、ユーザーは出版物のオンラインバージョンの最新バージョンを表示していることを保証します
