4

リレーショナル データベースについて学習したばかりで、エントリの重複を許可しないと言われました。重複した結果を返す SQL クエリを作成したため、最初はこれを信じていませんでした。それは、システムが 1 つの関係で同一のセットを保存しないということですよね? つまり、本と著者の関係があり、著者のみを選択した場合、同じ著者が別の本を書いた場合 (例: select author from Books)、重複があるように見えることがあります。また、結合を使用すると、結果が重複する可能性がありますよね? 他のシナリオはありますか?

基本的に、rmdb に重複がないというのは、情報が (1 つのテーブルに) 格納される方法を意味しているだけですよね?

4

4 に答える 4

6

リレーションはタプルのセットです。これらはセットであるため、関係に同じタプルを 2 回含めることはできません。

何か (SQL の「テーブル」など) に「同じタプルが 2 回」含まれている場合、それは関係ではなく、言語はリレーショナル言語ではありません。せいぜい、言語の使用者が必要な自己規律を自分自身に課す場合にのみ、言語をリレーショナルな方法で使用できます。

簡単な説明: リレーショナル DBMS は実際に重複を許容できず、典型的な SQL エンジンはまさにこの理由でリレーショナル DBMS ではありません (ao)

于 2012-10-10T17:02:12.003 に答える
1

明示的に禁止するテーブルの制約がない限り、テーブルに重複を入れることができます。

多くの場合、テーブルには主キーがあり、主キーは、キーの一部であるフィールドの重複を許可しない制約であるため、テーブルに重複レコードが含まれないようにします。

于 2012-10-10T05:44:01.817 に答える
-1

RDBMSは、特に適切にセットアップされていない場合、重複する可能性があります。RDBMSを設定するには、正規化とは何かを理解する必要があります。重複している場合は、テーブルがおそらく第1正規形ではないことを意味します。第1正規形でのテーブルの定義は、繰り返し値の削除または削除です。したがって、繰り返し/重複する値がある場合は、最初に繰り返し値を削除してから、テーブルを第1正規形標準に設定し、次にその2番目に設定する必要があります。正規化フォームなど。

于 2012-10-11T01:17:18.717 に答える