テーブル内の一意の列を識別する以外に使用される主キーは何ですか? これは、列に対して自動インクリメント制約を使用するだけでは実現できませんか? PK と FK が異なるテーブルを関連付けるために使用されることは理解していますが、結合だけではこれを行うことはできませんか?
基本的に、主キーを使用して結合するときのパフォーマンスを向上させるために、データベースは何をしていますか?
テーブル内の一意の列を識別する以外に使用される主キーは何ですか? これは、列に対して自動インクリメント制約を使用するだけでは実現できませんか? PK と FK が異なるテーブルを関連付けるために使用されることは理解していますが、結合だけではこれを行うことはできませんか?
基本的に、主キーを使用して結合するときのパフォーマンスを向上させるために、データベースは何をしていますか?
主に外部キーとの参照整合性のために、PK がある場合、バックグラウンドでインデックスも作成されるため、値を検索するときにテーブル スキャンが不要になります。
通常、RDBMS プロバイダーは、主キーを持つテーブルを操作するように最適化されています。ほとんどのストア統計は、クエリ プランの最適化に役立ちます。これらの統計は、特に大規模なテーブルでのパフォーマンスにとって非常に重要であり、主キーがないと同じようには機能せず、予測できないクエリ応答時間になることになります。
ほとんどのデータベースのベスト プラクティス ブックでは、すべてのテーブルを例外なく主キーで作成することを推奨しています。この方法に従うのが賢明です。参照整合性なしでデータベースを構築するジュニア ソフトウェア開発者と言う人はあまりいません。
一部の PKは、単に自動インクリメントされた列です。また、通常は PK と FK を使用して参加します。結合するには何らかの関係が必要です。さらに、ほとんどの DBMS は既定で PK を自動的にインデックス付けするため、結合のパフォーマンスが向上し、ID に基づく特定のレコードのクエリも改善されます。
クエリ内で主キーなしで結合できますが、少なくとも SQL Server では、データ整合性制約を適用するために主キーを定義する必要があります。(外部キーなど)
また、 Primary Keysに関する興味深い読み物もあります。
Microsoft Access で、たとえば SQL Server へのリンク テーブルがある場合、リンク テーブルを書き込み可能にするには、ソース テーブルに主キーが必要です。少なくとも、Access 2000 と SQL Server 6.5 ではそうでした。それ以降のバージョンでは異なる場合があります。
キーは、データの完全性と識別に関するものです。キーの一意性は、データベースに制約を設けることで保証され、そうでなければキーに違反する「悪い」データを排除します。このようにデータの整合性規則が保証されているという事実こそが、鍵を識別子として使用できるようにするものです。それはどのキーにも当てはまります。慣例により、テーブルごとに 1 つのキーは「主」キーと呼ばれますが、それによって他の代替キーの重要性が低下することはありません。
実際には、データの品質と使いやすさの要求を満たすために、すべてのタイプのデータ (数値だけでなく) に対して一意性ルールを適用できる必要があります。