6

データを取得しようとしていて、明らかに簡単な方法がない場合ですか?

何かがそれ自体のテーブルであるべきだとわかったときは?

法律は何ですか?

4

13 に答える 13

7

ウィキペディアをご覧ください。この記事では、データベースの正規化とさまざまな形式 (1 番目、2 番目、3 番目など) について説明しています。ほとんどの場合、少なくとも第 3 正規形を目指す必要があります。ルールを少し緩和したい場合もありますが (複数のテーブルを結合するにはコストがかかりすぎるため、少し非正規化する必要があるかもしれません)、ほとんどの場合、第 3 正規形が適しています。

于 2009-11-03T14:23:55.210 に答える
6

同じデータを繰り返す必要があることに気付いたとき、または単一のフィールドを配列として使用し始めたとき。

于 2009-11-03T14:21:39.520 に答える
3

これはやや皮肉な答えですが、データが十分に正規化されていないことがわかった場合。Web には、正規化のレベル (より正確には「フォーム」) に関する多くのリソースがあり、ここで説明するよりも詳細にフォームを説明しています。第 1 正規形と第 2 正規形はほぼ必須です。3 番目 (実際には 4 番目) の正規形でない場合は、その理由を明確に説明する必要があります。

データベースの正規化に関するウィキペディアの記事を確認してください。

于 2009-11-03T14:24:08.393 に答える
2

他の人は、正規化の正式なルールを指摘しています。以下に、私が使用する非公式のガイドラインをいくつか示します。

  1. テーブルに列があり、その名前が数字だけ異なる場合 (例: Phone1 と PHone2)。

  2. テーブル内の別の列が入力されている場合にのみ入力する必要があるテーブル内の列がある場合。

  3. データベース内の「事実」 (番地など) を更新するために複数の UPDATE が必要な場合。

  4. どのテーブルから情報を取得するかによって、同じ質問に対して 2 つの異なる回答が得られる場合があります。

  5. 少なくとも 2 つのテーブルを JOIN せずに、重要な質問に対する答えをデータベースから取得できる場合。

  6. データベースに「1 つのみが許可される」以外の数量ベースの制限がある場合 (つまり、「1 つのアドレスのみが許可される」は問題ありませんが、「2 つのアドレスのみが許可される」は正規化の問題を示します)。

于 2009-11-03T20:31:11.593 に答える
2

SQL データベースにさらに正規化が必要かどうか疑問に思っているとき。

于 2009-11-03T14:21:30.170 に答える
2

リレーショナル データベースがあるときはいつでも....<grin/>

いいえ、実際には法律があります。ウィキペディアのリンクをご覧ください。

それらは5つの正規形またはそのようなものと呼ばれます。50 年代/60 年代にリレーショナル データベースを発明した人物、EF Codd の出身です。

「鍵は鍵全体で、鍵以外は何もないので、コッドを助けて」

これは概要です:

  1. 第 1 正規形 (1NF) テーブルは関係を忠実に表し、繰り返しグループはありません
  2. 第 2 正規形 (2NF) テーブル内の非素数属性は、候補キーの一部 (適切なサブセット) に機能的に依存していません。
  3. 第 3 正規形 (3NF) すべての非素数属性は、テーブルのすべてのキーに非推移的に依存している テーブル内のすべての非自明な関数の依存関係は、スーパーキーへの依存関係である
  4. 第 4 正規形 (4NF) テーブル内の重要な多値依存関係はすべて、スーパーキーへの依存関係です。
  5. 第 5 正規形 (5NF) テーブル内の自明でないすべての結合依存関係は、テーブルのスーパーキーによって暗示されます。ドメイン/キー正規形 (DKNF) Ronald Fagin (1981)[19] テーブルのすべての制約は、テーブルのドメイン制約とキー制約の論理的な結果です。
  6. 第 6 正規形 (6NF) テーブルには、非自明な結合依存関係がまったくありません (一般化された結合演算子を参照)。
于 2009-11-03T14:26:04.503 に答える
1

通常、必要なのは 3NF だけで、次の 3 つのルールに従います。

表のすべての列は、次のものに依存する必要があります。

  • キー (1NF)、
  • キー全体 (2NF)、
  • キー(3NF)だけです(だから、Coddは通常、引用が終了する方法です)。

多くの場合、パフォーマンス上の理由から 2NF に「ダウングレード」できますが、その意味を理解し、問題が発生した場合にのみ使用できますが、すべての設計の最初の目標は 3NF にする必要があります。

于 2009-11-03T14:28:33.530 に答える
1

他の誰もが言ったように、複数のテーブルに (多すぎる) 重複する列ができ始めるとわかります。

そうは言っても、複数のテーブルに冗長な列があると便利な場合があります。これにより、複雑なクエリで実行する必要がある JOIN の数を減らすことができます。すべてのテーブルの同期を保つように注意してください。そうしないと、問題が発生するだけです。

于 2009-11-03T16:41:23.310 に答える
0

データベースの正規化の基本の説明を参照してください。

于 2009-11-03T14:25:58.387 に答える
0

現在、正常化のレベルはどの程度ですか? 答えられない場合は、データベースがごちゃごちゃしていると思います。私は常に最初の設計で 3 番目の法線を作成し、必要に応じてさらに非正規化または正規化します。

于 2009-11-03T14:26:18.083 に答える
0

これはかなり良い記事です。正常になることは芸術ではなく科学です。いつ非正規化するかを知っている...それは芸術です。

http://www.alvechurchdata.co.uk/hints-and-tips/softnorm.html

于 2009-11-03T14:25:32.487 に答える
0

対話型アプリケーションをサポートするトランザクション データベースについて話していると思いますが、その価値は...

レポート専用に使用され、ETL プロセスによってのみ更新される OLAP データベースは、正規化されていない構造の恩恵を受ける可能性があります。これらのアプリケーションでは、冗長なデータ ストレージと複製のコストを受け入れて、結合を減らすことによるパフォーマンス上の利点と、(場合によっては技術的ではない) データ アナリストとビジネス アナリストの使いやすさを向上させます。

トランザクション データベースは常に実用的な範囲 (少なくとも 3NF) で正規化してから、必要に応じて選択的に非正規化する必要があります。また、非正規化の必要性は、理想的には実際のパフォーマンス テストの結果に基づいている必要があります。

于 2009-11-03T20:21:26.737 に答える
-1

基本的な情報を抽出するためだけに膨大な量のデータを検索する必要がある場合、つまり、どのような製品カテゴリがあるかなどです。

于 2009-11-03T14:28:19.750 に答える