0

割り当てのために、データベース駆動型の Web アプリケーションを作成しました。データベースを非正規化形式で表示し、それから徐々に正規化して、各段階で何が行われたかを説明することで、正規化についての私の理解を示す必要があります。

ステージ 1 から 3 までの正規化プロセス (ここまでが限界) は理解に苦しむことはありません。

私のデータベースには 20 以上のテーブルが含まれていますが、これが 0NF であることをどのように表現すればよいかわかりません。主な困難は、私が理解しているように、0NF データが単一のテーブルにあるという事実によるものです。実際、0NF には主キーがないため、これを回避する方法はありません。したがって、他のテーブルのデータを参照する方法はありません。

私はこれを考えるのが正しいですか?または、複数のテーブルで 0NF データを表すことができます。これにより、100 列以上のテーブルがなくなるため、このタスクがはるかに簡単になります。

4

3 に答える 3

0

「非正規化」ではなく「非正規化」を意味します。後者は、正規化されたベース テーブルが、値が常に元の信号の結合である他のテーブルに置き換えられる場合です。ここでの正規化されていない形式が最初の設計の試みを意味するのか、具体的にはそれらすべての適切な結合である「普遍的な関係」を意味するのかを、割り当てを与えた人から見つける必要があります。それ非正規化です。

すべてのベース テーブルとクエリ結果は、いくつかの述語(列によってパラメーター化されたステートメント) を真の命題(ステートメント) にする行を保持します。

  • 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 を持つと考えることができる一時テーブルを作成します。内部JOINs (つまりINNERCROSSプレーン) の場合、この一時テーブルはクロス結合です。その述語は、結合されたテーブルの述語の AND です。ONandWHERE条件も述語に 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] で働いています")

どの制約が保持されているかは問題ではないことに注意してください。( UNIQUEPRIMARY KEYFOREIGN 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 では通常、それらの値を再構築することはできません。FULLOUTERJOINNULLOUTER JOINFULL JOIN(T1 FULL JOIN T2) FULL JOIN T3T1 FULL JOIN (T2 JOIN T3)

PPS「0th Normal Form」はありません。「第 1 正規形」にはさまざまな用途があります。単に関係であることを意味する場合もあれば、関係値属性を持たない関係であることを意味する場合もあります。また、実際には優れた設計の側面に関するさまざまな混乱した/無意味な方法で頻繁に使用されます。

于 2015-09-20T02:30:30.083 に答える
0

0NF は、データのスプレッドシートのような単一のテーブルです。他のテーブルを参照することはなく、1 つのテーブルのデータを繰り返すだけです。

たとえば、メッセージング システムを想像してください。

Customer | Recipient | Message
Bob        John        Hello John
John       Bob         Hello
Bob        John        Have you got time to answer a question?
John       Bob         No way

Personリンク先を含むテーブルがありません。顧客列と受信者列にBoborを繰り返します。John

于 2013-04-26T14:17:43.093 に答える