ホームページ データベース mysql チュートリアル MySQLの外部キーが主キーになることができますか

MySQLの外部キーが主キーになることができますか

Apr 08, 2025 pm 04:27 PM
mysql なぜ

MySQL外部キーは主要なキーとして設定できますが、一般的には推奨されません。理由は次のとおりです。外国の鍵は、人間関係を維持する責任を引き受け、責任は主要なキーとして設定した後、重すぎます。冗長なデータはメンテナンスコストを増加させます。外部キーは、別のテーブルの主要な鍵に依存し、変更されたときに矛盾を引き起こす可能性があります。

MySQLの外部キーが主キーになることができますか

MySQLの外部キーは主キーになることはできますか?答えは次のとおりですが、通常は推奨されません。

この質問は簡単に思えますが、隠された謎があります。表面的には、テーブルを関連付けるために外国の鍵は使用されていませんか?主要な鍵は、レコードを独自に識別するために使用されませんか?外部キーを主キーとして設定することには何の問題もないようです。しかし、実際のアプリケーションでは、これを行うことで、多くの場合、自分のために穴を掘ります。

まず、MySQLのプライマリキーと外国の鍵の概念を確認しましょう。主キーは、名前が示すように、各レコードを一意に識別する列です。データの一意性を保証し、複製値を許可しません。外部キーを使用して、テーブル間の関係を確立します。これは、データの一貫性と完全性を確保するための別のテーブルの主要なキーを指します。

これらを理解することにより、なぜ外部キーを主要なキーとして設定することをお勧めしない理由を理解できます。理由は単純です。主要なキーは、この表のレコードの独自性を特定することに焦点を当てる必要があり、外部キーの責任は他のテーブルとの関係を維持することです。外部キーを主キーとして設定するということは、外部鍵を強制的に二重の責任を引き受けるように強制することを意味します。これは、従業員に2つの完全に異なる部門を同時に担当するようなものであり、これは非効率的でエラーを起こしやすいです。

外部キーが別のテーブルの主要なキーであると想像してください。実際に別のテーブルの主要なキーをこのテーブルにコピーしています。これにより、冗長データが追加されるだけでなく、データの矛盾につながる可能性があります。別のテーブルの主要なキーが変更された場合、テーブル内のデータもそれに応じて更新する必要があります。そうしないと、データは一貫していません。これは小さな問題ではありません。特にデータ量が大きい場合、維持し、予測不可能なエラーを引き起こすことさえ非常に面倒です。

もちろん、特別な場合は、これを行う必要がある場合があります。たとえば、他のテーブルの特定の公開情報を保存するために特別に使用されるテーブルがあり、このテーブルの主要なキーは、他のテーブルの一意の識別子でもあります。この場合、外部キーを主キーとして設定することは可能ですが、データの完全性と一貫性を注意し、完全に考慮してください。

例を見てみましょう。 usersorders 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

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

なぜ仮想通貨価格の上昇または下落があるのですか?なぜ仮想通貨価格の上昇または下落があるのですか? なぜ仮想通貨価格の上昇または下落があるのですか?なぜ仮想通貨価格の上昇または下落があるのですか? Apr 21, 2025 am 08:57 AM

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

MySQLの外国キーの目的を説明してください。 MySQLの外国キーの目的を説明してください。 Apr 25, 2025 am 12:17 AM

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

SQL対MySQL:2つの関係を明確にします SQL対MySQL:2つの関係を明確にします Apr 24, 2025 am 12:02 AM

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

mysqlとmariadbを比較対照します。 mysqlとmariadbを比較対照します。 Apr 26, 2025 am 12:08 AM

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

なぜ聞くべきなのか なぜ聞くべきなのか Apr 21, 2025 pm 09:00 PM

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

MySQLはOracleとどのように違いますか? MySQLはOracleとどのように違いますか? Apr 22, 2025 pm 05:57 PM

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

WordPressで今日の日付を表示する方法(2つの簡単な方法) WordPressで今日の日付を表示する方法(2つの簡単な方法) Apr 20, 2025 am 07:27 AM

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

See all articles