「非正規化」ではなく「非正規化」を意味します。後者は、正規化されたベース テーブルが、値が常に元の信号の結合である他のテーブルに置き換えられる場合です。ここでの正規化されていない形式が最初の設計の試みを意味するのか、具体的にはそれらすべての適切な結合である「普遍的な関係」を意味するのかを、割り当てを与えた人から見つける必要があります。それは非正規化です。
すべてのベース テーブルとクエリ結果は、いくつかの述語(列によってパラメーター化されたステートメント) を真の命題(ステートメント) にする行を保持します。
SELECT * FROM EMP
「従業員 [E] は [N] という名前で、[D] の扶養家族がいます」
SELECT * FROM DEP
「従業員 [E] は部門 [D] で働いています」
SELECT E, N FROM EMP
一部の D のクエリ、「従業員 [E] は [N] という名前で、依存関係 [D] があります」
(「従業員 [E] は [N] という名前で、依存関係があります」)
SQLFROM
は、各テーブル T の列 C ごとに列 TC を持つと考えることができる一時テーブルを作成します。内部JOIN
s (つまりINNER
、CROSS
プレーン) の場合、この一時テーブルはクロス結合です。その述語は、結合されたテーブルの述語の AND です。ON
andWHERE
条件も述語に AND されます。このSELECT
句は、「.」がないように一時列の名前を変更します。(ただし、あいまいさがなければ、SQL はその暗黙的な処理を行います。)
- クエリ
SELECT EMP.E AS E, N, DEP.D AS D FROM EMP JOIN DEP
"一部の EMP.D について、従業員 [EMP.E] の名前は [EMP.N] であり、従属 [EMP.D] があります"
AND "従業員 [DEP.E] は部門 [DEP.D] で働いています"
(つまり、"従業員 [E] は [N] という名前で、扶養家族がいて、部門 [D] で働いています")
どの制約が保持されているかは問題ではないことに注意してください。( UNIQUE
、PRIMARY KEY
、FOREIGN KEY
&を含むCHECK
)。制約は、テーブルが保持する値が制限されていることを示しているだけです。実際、制約は述語と発生する可能性のある状況によって決まります。
=
T1.C T2.C がテーブル T1 & T2 のいくつかの列 C に対して常に当てはまることがわかっている場合はSELECT
、そのうちの 1 つだけを使用する必要がありますAS C
。すべての列 C がすべてのテーブルで常に等しい場合、列に言及することなくNATURAL JOIN
適切な=
およびを実行します。AS
(さらにre述語とSQL。)
PSデータベースの単一塩基バージョンは、値が個別の塩基の( )である塩基ではありません。まず、正規化はs を処理しないため、結果からそれらを削除する必要があり、多かれ少なかれテーブルが元に戻ります。2 つ目は、一般に<>などの結合性がないため、「2 つ以上のテーブルの FULL JOIN`」などというものはありません。第 3 に、テーブルが 2 つしかない場合でも、それらの FULL JOIN では通常、それらの値を再構築することはできません。FULL
OUTER
JOIN
NULL
OUTER JOIN
FULL JOIN
(T1 FULL JOIN T2) FULL JOIN T3
T1 FULL JOIN (T2 JOIN T3)
PPS「0th Normal Form」はありません。「第 1 正規形」にはさまざまな用途があります。単に関係であることを意味する場合もあれば、関係値属性を持たない関係であることを意味する場合もあります。また、実際には優れた設計の側面に関するさまざまな混乱した/無意味な方法で頻繁に使用されます。