SQLでの代理キーの使用法は何ですか?


ベストアンサー

主キーは列または列のセットに対する特別な制約。主キー制約により、そのように指定された列にNULL値がなく、すべての値が一意であることが保証されます。物理的には、主キーは一意のインデックスを使用してデータベースシステムによって実装され、主キーのすべての列はNOTNULLとして宣言されている必要があります。テーブルには主キーが1つしかない場合もありますが、複合(複数の列で構成される)の場合もあります。

代理キーは「実際の」またはナチュラルの代わりに主キーとして宣言できる列または列のセットキー。主キーとして宣言できる自然キーがいくつかある場合があり、これらはすべて候補キーと呼ばれます。したがって、代理は候補キーです。これは珍しいことですが、テーブルには実際には複数の代理キーが含まれる可能性があります。最も一般的なタイプのサロゲートキーは、MySQLのauto\_increment列、Oracleのシーケンス、SQLServerのID列などのインクリメント整数です。

サロゲートキーを使用する利点

前述のように、サロゲートキーはデータの元のコンテキストの一部を犠牲にします。ただし、次の理由により、分析目的で非常に役立つ場合があります。

  • サロゲートキーは一意です。サロゲートキーは一意であるためです。システムによって生成されたため、システムが重複する値を作成して保存することはできません。
  • 代理キーはすべてのレコードに統一されたルールを適用します。代理キー値は、システムで生成された値を作成するプログラムの結果です。プログラムの結果として作成されたキーは、各レコードに統一されたルールを適用します。
  • 代理キーは時の試練に耐えます。キーにはコンテキストやビジネス上の意味がないため、将来的にキーを変更する必要はありません。
  • 代理キーでは無制限の値を使用できます。シーケンシャル、タイムスタンプ、およびランダムキーには、一意の組み合わせに対する実際的な制限はありません。

回答

今日のほとんどのデータベースは、実際にはデータベース管理システム(DBMS)です。これらは2つのコンポーネントで構成されています。

  1. データベース適切。データと、関係、制約などのメタデータを格納します。 、など…
  2. 開発者やデータベース管理者がSQLコマンドを入力するユーザーインターフェイス。

データベースの大部分には、インターフェイス用のコマンドラインユーティリティが付属しています。データベースで。たとえば、MySQLは、入力行編集機能を備えた単純なSQLシェルを提供します。インタラクティブおよび非インタラクティブな使用をサポートします。インタラクティブに使用すると、クエリ結果はASCIIテーブル形式で表示されます。非対話的に(たとえば、フィルターとして)使用すると、結果はタブ区切り形式で表示されます。出力形式は、コマンドオプションを使用して変更できます。

コマンドインタープリターのプロンプトからMySQLシェルを呼び出すには、次のように入力します。

shell> mysql --user=user\_name --password db\_name

Enter password: your\_password

データベースにログインすると、SELECTクエリなどのコマンドを実行できます。 、それに対して:

shell>SELECT * FROM shop ORDER BY article;

+---------+--------+-------+

| article | dealer | price |

+---------+--------+-------+

| 1 | A | 3.45 |

| 1 | B | 3.99 |

| 2 | A | 10.99 |

| 3 | B | 1.45 |

| 3 | C | 1.69 |

| 3 | D | 1.25 |

| 4 | D | 19.95 |

+---------+--------+-------+

SQLステートメントをファイルに入れて次に、そのファイルから入力を読み取るようにmysqlに指示します。これを行うには、実行するステートメントを含むテキストファイルを作成します。次に、次のようにmysqlを呼び出します。

shell> mysql db\_name < text\_file

一部のデータベースベンダーは、コマンドに加えてGUIクライアントとユーティリティも提供しています-ラインクライアント。 MySQLを維持し、そのGUIクライアントはMySQLWorkbenchです。 Windows、Linux、Mac OSXで利用可能なMySQLWorkbenchは、データベースアーキテクト、開発者、およびDBAを対象としています。データモデリング、SQL開発、およびサーバー構成、ユーザー管理、バックアップなどの包括的な管理ツールを提供します。

その他のツール

データベースベンダー自身が提供するツールの他に、人気のあるすべてのユーザーが利用できる他の多くのオープンソースおよび商用サービスがあります。データベースの種類とクラウドサービス。違いに関しては、無料製品と商用製品の両方がその目的に適しています。どちらを使用するかは、通常、使いやすさではなく、どのような種類の作業を行うかによって決まります。

オープンソース製品と商用製品の両方でかなりの作業を行ってきたので、次第に後者は、ITコンサルタントとしての私の仕事にとって作業効率がより重要になったためです。私の個人的な意見では、商用製品は一般的なタスクを合理化して効率を高めるため、生産性を高めることができます。

その結果、私は NavicatPremiumを使用しています。 データベース開発および管理クライアントは数年前からあります。 Navicatはすべての一般的なデータベースのクライアントを作成しますが、Navicat Premiumは、単一のアプリケーションからMySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL、およびSQLiteデータベースに同時に接続できる唯一のツールです。また、Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud、GoogleCloudなどのクラウドデータベースとも完全に互換性があります。

Windowsのメイン画面のスクリーンショットは次のとおりです。

すべてのNavicat製品は、WindowsだけでなくLinuxとmacOSでも利用できます。

特に、クエリエディターは私が書くのに役立ちます以下に示すように、シンタックスハイライト、再利用可能でカスタマイズ可能なコードスニペット、自動提案を含めることで、クエリを高速化します。

クエリビルダーもあり、経験の浅いユーザーにとっては大きなメリットがあります。これにより、SQLの知識がほとんどなくても視覚的にクエリを作成および編集できます!

お役に立てば幸いです!

よろしくお願いいたします。

アダム

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です