ホームページ データベース mysql チュートリアル データベースにおけるスーパーキー、主キー、外部キーなどの定義と使い方を詳しく解説

データベースにおけるスーパーキー、主キー、外部キーなどの定義と使い方を詳しく解説

Sep 05, 2018 pm 03:09 PM

この記事では主に、MySQL データベースにおけるスーパー キー、候補キー、主キー、主属性、および外部キーの具体的な定義と使用法を紹介します。以下の内容の詳細な説明については、PHP 中国語 Web サイトのMySQL ビデオ チュートリアル および MySQL マニュアル も参照してください。

まず、さまざまなキーの定義を見てみましょう:

スーパーキー: 関係内のタプルを一意に識別できる属性のセットは、リレーショナルパターンのスーパーキーと呼ばれます

候補キー: 冗長なスーパーキーは含まれません属性の主キーと呼ばれます。 リレーショナル スキーマ R1 に設定されている特定の属性が、R1 の主キーではない場合に、ユーザーがタプル識別子として選択した候補キー。が別のリレーションシップ R2 の主キーである場合、属性セットはリレーションシップ スキーマ R1 の外部キーになります。

例付きの詳細な説明:


次の 2 つのテーブルがあるとします:

学生(学号,姓名,性别,身份证号,教师编号)
教师(教师编号,姓名,工资)
ログイン後にコピー

スーパー キー:

スーパー キーの定義から、学生テーブル内の学生番号または ID 番号の任意の組み合わせがわかります。これはスーパーキーのテーブルです。例:(学籍番号)、(学籍番号、名前)、(IDカード番号、性別)など。

候補キー:

候補キーは、最小のスーパーキーです。つまり、候補キーの属性が削除されると、それはスーパーキーではなくなります。学生テーブルの候補キーは、(学生番号)、(ID カード番号) です。

主キー:

主キーは、人為的に指定された候補キーの 1 つです。たとえば、生徒テーブルでは通常「生徒番号」を主キーとして使用し、教師テーブルでは「教師」を主キーとして使用します。数値」が主キーとして使用されます。

外部キー:

学生テーブルの外部キーは比較的単純です。外部キーは主に 2 つのテーブル間の関係を記述するために使用されます。

主属性と主キー

厳密に言うと、主属性: 主キー列を指します。つまり、主キーは 1 つの列で構成されます。主キー定義: タプルを一意に識別できる属性または属性のセット。つまり、複数の列で構成できます。

ほとんどの教育例では、主キーは 1 つの列で構成されているため、単純に主属性と主キーに違いはないと言えます。

第一正規形 (1NF)


第一正規形は、データベース テーブルの各列が分割できない基本データ項目であることを意味します。同じ列に複数の値を含めることはできません。つまり、エンティティ内の属性は持つことができません。複数の値を使用したり、属性を繰り返したりすることはできません。これが第 1 正規形の基本概念です。

これはどういう意味ですか? たとえば、テーブルに「電話」フィールドがあり、その値に携帯電話番号と固定電話番号の両方が含まれている場合、これは最初のパラダイムの要件を満たしません。このとき、「電話」を「携帯電話」と「固定電話」に分割する必要があります。これが最初のパラダイムに準拠したデータテーブルになります。

概要: フィールドを分割することはできません。

第 2 正規形 (2NF)

第 2 正規形は、第 1 正規形に基づいて確立されます。つまり、第 2 正規形を満たすには、まず第 1 正規形を満たす必要があります。第 2 正規形では、データベース テーブル内の各インスタンスまたは行を一意に区別できる必要があります。差別化を実現するには、通常、各インスタンスの一意の ID を格納する列をテーブルに追加する必要があり、エンティティの属性が主キーに完全に依存する必要があります。テーブル シンボルが第 2 正規形に準拠していないかどうかを議論するための前提は、テーブルの主キーが複合主キーである場合、それが複合主キーでない場合、シンボルが準拠していないとは言えません。第 2 正規形を使用します。

概要: 部分的な依存は許可されません。つまり、テーブルに複合主キーがある場合、他の非主キー フィールドは主キーに完全に依存する必要があります。

第 3 正規形 (3NF)

第 3 正規形は、第 2 正規形に準拠する必要があります。つまり、他のデータ テーブルの非主キー フィールドがデータ テーブルに存在できないことを意味します。他のテーブルのフィールドである場合、そのテーブルの主キーである必要があります。

テーブルに 3 つのフィールド a b c、a—>b b—>c があるとします。 この場合、c と a は推移的な依存関係となり、第 3 正規形に準拠しません。そして、a が c を直接決定できるかどうかに関係なく、これは推移的な依存関係であるため、b と c だけが第 3 正規形に準拠するために a 以外の体に依存しません。

概要: 推移的な依存関係は存在できません。つまり、主キー以外のフィールドは主キーに依存する必要があり、他のフィールドに依存することはできません。

以上がデータベースにおけるスーパーキー、主キー、外部キーなどの定義と使い方を詳しく解説の詳細内容です。詳細については、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でインデックスを使用するよりも、フルテーブルスキャンがいつ速くなるのでしょうか? MySQLでインデックスを使用するよりも、フルテーブルスキャンがいつ速くなるのでしょうか? Apr 09, 2025 am 12:05 AM

完全なテーブルスキャンは、MySQLでインデックスを使用するよりも速い場合があります。特定のケースには以下が含まれます。1)データボリュームは小さい。 2)クエリが大量のデータを返すとき。 3)インデックス列が高度に選択的でない場合。 4)複雑なクエリの場合。クエリプランを分析し、インデックスを最適化し、オーバーインデックスを回避し、テーブルを定期的にメンテナンスすることにより、実際のアプリケーションで最良の選択をすることができます。

INNODBフルテキスト検索機能を説明します。 INNODBフルテキスト検索機能を説明します。 Apr 02, 2025 pm 06:09 PM

INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

Windows 7にMySQLをインストールできますか? Windows 7にMySQLをインストールできますか? Apr 08, 2025 pm 03:21 PM

はい、MySQLはWindows 7にインストールできます。MicrosoftはWindows 7のサポートを停止しましたが、MySQLは引き続き互換性があります。ただし、インストールプロセス中に次のポイントに注意する必要があります。WindowsのMySQLインストーラーをダウンロードしてください。 MySQL(コミュニティまたはエンタープライズ)の適切なバージョンを選択します。インストールプロセス中に適切なインストールディレクトリと文字セットを選択します。ルートユーザーパスワードを設定し、適切に保ちます。テストのためにデータベースに接続します。 Windows 7の互換性とセキュリティの問題に注意してください。サポートされているオペレーティングシステムにアップグレードすることをお勧めします。

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

INNODBのクラスターインデックスと非クラスターインデックス(セカンダリインデックス)の違い。 INNODBのクラスターインデックスと非クラスターインデックス(セカンダリインデックス)の違い。 Apr 02, 2025 pm 06:25 PM

クラスター化されたインデックスと非クラスター化されたインデックスの違いは次のとおりです。1。クラスター化されたインデックスは、インデックス構造にデータを保存します。これは、プライマリキーと範囲でクエリするのに適しています。 2.非クラスター化されたインデックスストアは、インデックスキー値とデータの行へのポインターであり、非プリマリーキー列クエリに適しています。

mysqlとmariadbは共存できますか mysqlとmariadbは共存できますか Apr 08, 2025 pm 02:27 PM

MySQLとMariaDBは共存できますが、注意して構成する必要があります。重要なのは、さまざまなポート番号とデータディレクトリを各データベースに割り当て、メモリ割り当てやキャッシュサイズなどのパラメーターを調整することです。接続プーリング、アプリケーションの構成、およびバージョンの違いも考慮する必要があり、落とし穴を避けるために慎重にテストして計画する必要があります。 2つのデータベースを同時に実行すると、リソースが制限されている状況でパフォーマンスの問題を引き起こす可能性があります。

MySQLユーザーとデータベースの関係 MySQLユーザーとデータベースの関係 Apr 08, 2025 pm 07:15 PM

MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

さまざまなタイプのMySQLインデックス(Bツリー、ハッシュ、フルテキスト、空間)を説明します。 さまざまなタイプのMySQLインデックス(Bツリー、ハッシュ、フルテキスト、空間)を説明します。 Apr 02, 2025 pm 07:05 PM

MySQLは、Bツリー、ハッシュ、フルテキスト、および空間の4つのインデックスタイプをサポートしています。 1.B-Treeインデックスは、等しい値検索、範囲クエリ、ソートに適しています。 2。ハッシュインデックスは、等しい値検索に適していますが、範囲のクエリとソートをサポートしていません。 3.フルテキストインデックスは、フルテキスト検索に使用され、大量のテキストデータの処理に適しています。 4.空間インデックスは、地理空間データクエリに使用され、GISアプリケーションに適しています。

See all articles