問題タブ [denormalization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
10983 参照

mysql - mysqlデータベースを非正規化するための良い方法は何ですか?

正規化された注文データの大規模なデータベースがあり、レポートのクエリが非常に遅くなっています。レポートで使用するクエリの多くは、5つまたは6つのテーブルを結合し、数万または数十万の行を調べる必要があります。

クエリはたくさんあり、そのほとんどはサーバーの負荷を減らして速度を上げるために可能な限り最適化されています。非正規化された形式でデータのコピーを保持し始める時が来たと思います。

アプローチに関するアイデアはありますか?いくつかの最悪のクエリから始めて、そこから進む必要がありますか?

0 投票する
7 に答える
86758 参照

database - データベース結合はいつ、なぜコストがかかるのですか?

私はデータベースについていくつかの調査を行っており、リレーショナル DB のいくつかの制限を調べています。

大きなテーブルの結合は非常にコストがかかると思いますが、その理由は完全にはわかりません。結合操作を実行するために DBMS は何をする必要がありますか?ボトルネックはどこですか?
非正規化は、この費用を克服するためにどのように役立つでしょうか? 他の最適化手法 (インデックス作成など) はどのように役立ちますか?

個人体験も大歓迎!リソースへのリンクを投稿する場合は、ウィキペディアを避けてください。私はすでにそれを見つける場所を知っています。

これに関連して、BigTable や SimpleDB などのクラウド サービス データベースで使用される非正規化アプローチについて疑問に思っています。この質問を参照してください。

0 投票する
2 に答える
466 参照

sql - 非正規化されたインデックス付きビューで正規化されたテーブルを使用することは良い考えですか?

現在、読み取りと書き込みの比率が高い新しいアプリを設計しています。私の現在の雇用主では、パフォーマンス上の理由から、テーブルに非正規化されたデータが多数あります。完全に 3NF テーブルを用意し、インデックス付きビューを使用してすべての非正規化を行う方が良い方法ですか? テーブルまたはビューに対してクエリを実行する必要がありますか?

私が興味を持っている例のいくつかは、列の子テーブルの集計です (たとえば、ユーザーの投稿数がどこかに保存されています)。

0 投票する
7 に答える
915 参照

mysql - データベースの非正規化の機会

テーブルを分岐するという繰り返しの問題を止めるための戦略を探しています。たとえば、架空のユースケースとして、名前、ログイン、パスワード、およびその他のメタデータを含むユーザーのテーブルがあるとします。この特定のシナリオでは、ユーザーが IP の特定のサブセットごとにログインするように制限されているとします。したがって、1:M の関係があります。次のようなユースケースが発生するたびに、通常のワークフローには「users」テーブルと「user_ips」などのテーブルが含まれます。この場合、pk(ip_id)、fk( user_id) と user_ips 側の IP。

同様の状況で、皆さんは通常、上記のようにファンアウトしますか? ここで効果的に非正規化する機会はありますか? おそらく、CSV で区切られた方法で IP を BLOB 列に保存しますか? 皆さんが現在展開している戦略は何ですか?

0 投票する
14 に答える
13039 参照

database - データベースに関しては、「正確さのために正規化し、パフォーマンスのために非正規化する」というのは正しいマントラですか?

ノーマライゼーションは、美的快楽を含む多くの本質的で望ましい特性につながります。その上、それは理論的にも「正しい」です。このコンテキストでは、パフォーマンスを達成するための妥協、修正として非正規化が適用されます。データベースが非正規化される可能性があるのは、パフォーマンス以外の理由がありますか?

0 投票する
1 に答える
428 参照

ms-access - MS Access フィールドへのレコードの移動

自分が所有しておらず、変更できないデータベースへの ODBC 接続があります。私が探しているのは、関連するレコードを 1 つのレコードにマージすることです。関係は 1 対多です。

私は学生管理システムを持っており、自動コールアウト サービス (コールによって課金されます) にフィードするコールアウト リストをエクスポートしたいと考えています。複数の学生が住んでいる家に一度だけ電話できるようにしたい。

目的のコールアウト ファイル構造:

既存のデータに当てはめて:

助言がありますか?

0 投票する
5 に答える
477 参照

mysql - ブログ投稿にタグを付けるとき、本当にリレーション テーブルを使用する必要がありますか?

ここで単一の SQL ステートメントでブログ投稿にタグを付ける方法を見つけようとしているときに、次の考えが頭をよぎりました。

次のようにタグ自体にインデックスを付ける次のモデルを使用しないのはなぜですか? タグの名前が変更されることはなく、追加および削除されることはないと考えれば、これは理にかなっていますよね? どう思いますか?

PS: 私はidを保持しています。最後に追加されたn 個のタグを簡単に表示するために...

0 投票する
3 に答える
513 参照

sql - SQL データの正規化 / パフォーマンス

私は保険業界向けの Web API に取り組んでおり、保険の見積もりに適したデータ構造を考え出そうとしています。

データベースには、基本的に次の「評価」テーブルが既に含まれています。

[編集] 商品の種類ごとに、通常、保険金額の範囲が 3 ~ 4 あります [/編集]

goods_types のリストはめったに変更されず、ほとんどの保険のクエリには 100 ドル未満の商品が含まれます。このため、次の形式のテーブルを使用して非正規化することを検討していました ($0.00 から $100.00 までのすべての値)。

このデータの非正規化は維持が容易なはずです。レートは通常、多くても 1 か月に 1 回しか更新されないからです。$100 を超える値に対するすべてのリクエストは、常にプライマリ テーブルで検索され、計算されます。

私の質問は次のとおり
です。 1. 加算された値を DECIMAL(9,2) または BIGINT に格納されたセントの値として格納する方が良いですか?
2. この非正規化方法では、10,001 個の値 ($0.00 から $0.01 の増分で $100.00) をおそらく 20 個のテーブルに格納します。これは、percent_premium を調べて計算を実行するよりも効率的でしょうか? - または、メイン テーブルに固執して計算を行う必要がありますか?

0 投票する
10 に答える
1462 参照

sql - 「超正規化」データの処理

私の雇用主である小規模な事務用品会社は、サプライヤを切り替えようとしています。私は、堅牢なデータベース スキーマを作成するために、サプライヤの電子コンテンツを調べています。私たちの以前のスキーマは、ほとんど何も考えずにまとめられただけであり、破損した一貫性のない情報を含む耐え難いデータ モデルにつながっています。

新しいサプライヤーのデータは古いものよりもはるかに優れていますが、彼らのデータは私が超正規化と呼ぶものです. たとえば、製品カテゴリ構造には、マスター部門、部門、クラス、サブクラス、製品ブロックの 5 つのレベルがあります。さらに、製品ブロックのコンテンツには、製品の長い説明、検索用語、および画像名があります (製品ブロックには製品とすべてのバリエーションが含まれているという考えです。たとえば、特定のペンは黒、青、または赤のインクで提供される場合があります。これらすべてアイテムは本質的に同じものであるため、単一の製品ブロックに適用されます)。私が与えられたデータでは、これは製品ブロックの一意の ID への参照を持つ製品テーブル (「テーブル」と言いますが、データを含むフラット ファイルです) として表されます。

提供されたデータに対応する堅牢なスキーマを考え出そうとしています。比較的すぐにロードする必要があり、提供されたデータは提供されたデータのタイプと一致しないようですサンプル Web サイト ( http://www.iteminfo.com ) でデモを提供しています。いずれにせよ、私は彼らのプレゼンテーション構造を再利用しようとは考えていないので、それは論点ですが、私はサイトを閲覧して物事を構造化する方法についていくつかのアイデアを得ていました.

私が確信が持てないのは、データをこの形式で保持する必要があるかどうか、またはたとえば、自己参照関係を使用してマスター/部門/クラス/サブクラスを単一の「カテゴリ」テーブルに統合し、それを製品ブロック (製品ブロックは「カテゴリ」自体ではなく、特定のカテゴリに関連する製品のグループであるため、個別に保持する必要があります)。現在、製品ブロック テーブルはサブクラス テーブルを参照しているため、これらを統合すると「category_id」に変更されます。

私はおそらく、このデータを Ruby on Rails で利用する e コマース ストアフロントを作成する予定です (少なくとも、それは私の計画です)。考えすぎですが、申し訳ありませんが安全を確保したいと思います。以前のデータは本当に混乱しており、一貫性のない不正確なデータが原因で、会社は何万ドルもの売り上げを失っていました。また、Rails の規則から少し離れて、データベースが堅牢であり、制約が適用されるようにするつもりです (アプリケーション レベルでも行う予定です)。

このような状況にどのように対処しますか?テーブル構造を模倣するフラット ファイルにデータをロードする必要があることに注意してください (どの列がどの参照が設定されているかを示すドキュメントがあります)。それらを現在のように正規化したままにするか、統合する必要があるかを決定しようとしています。各メソッドが Rails を使用してサイトをプログラミングする方法にどのように影響するかを認識する必要があります。統合すると、単一のテーブルに本質的に 4 つの「レベル」のカテゴリが存在するためです。各レベル。サブクラス (製品ブロックに直接リンクする) を除いて、それらは行わないためそれらの下の次のレベルのカテゴリを表示する以外のもの。私は常に、このようなデータを処理するための「最善の」方法を失っています。

0 投票する
2 に答える
1095 参照

.net - DataSet の非正規化

DataRelations (従来のヘッダー/詳細ペア) と一緒にリンクされているいくつかの DataTables を持つ DataSet があります。関連テーブルのすべての列を含む単一の DataTable にロット全体を非正規化する簡単な方法はありますか?

テーブル名と列はコンパイル時には不明であり、3 つ以上のテーブル/リレーションが存在する可能性があります。