SQL テーブルにはスーパーキーが含まれていますか?
この記事では、SQL テーブルのスーパーキーの概念を検討し、次の質問に答えます。
SQL のリレーショナル モデルとスーパーキー
「スーパーキー」という用語は、関係内の行を一意に識別する一連の属性を表すリレーショナル モデル (RM) に由来しています。 RM 関係では、スーパーキーは一連の属性であり、これらの属性の値は行ごとに異なります。
ただし、SQL テーブルは、重複や null 値の許可など、いくつかの点で RM 関係とは異なります。したがって、SQL テーブルのスーパーキーの概念はわかりにくくなります。
空の SQL テーブルのスーパーキー
行を含まない空の SQL テーブルは、独特の状況を示します。 RM 定義によれば、NULL リレーションの場合、属性の各サブセットがスーパーキーを構成します。これは、比較する行がなく、属性のサブセットが有効な識別子になるためです。
空ではない SQL テーブルのスーパーキー
一意性を強制しない、または null 値を許可しない空でない SQL テーブルの場合、スーパーキーの概念は疑わしいものになります。 RM 定義の一部の解釈では、関係の一意性条件を満たす属性のセットはすべてスーパーキーと見なすことができると示唆されています。
ただし、SQL テーブルには重複行や NULL 値が含まれる可能性があり、一意性の概念が疑問視される可能性があることに注意することが重要です。したがって、SQL テーブルでスーパーキーを定義するには、ある程度の非公式性が必要です。
SQL テーブルのスーパー キーの非公式ビュー
より実用的なアプローチでは、SQL テーブルのスーパーキーを、主キーまたは一意の非 null 制約として宣言できる属性のセットとして定義できます。さらに、最大 1 行を含むテーブルには空のスーパーキー (つまり、{}) を含めることができます。
結論
スーパーキーの概念はリレーショナル モデルで正式に定義されていますが、それを SQL テーブルに適用するには、ある程度の調整が必要です。空の SQL テーブルの場合、属性の各サブセットはスーパーキーと見なすことができます。 NULL 以外のテーブルの場合、スーパーキーの解釈はより非公式になり、一意性を強制したり、重複や NULL を防止したりできる属性のセットに重点が置かれます。
以上がSQL テーブルには常にスーパーキーが含まれますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。