問題タブ [normalization]

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 投票する
3 に答える
889 参照

sql - 共通スキームでデータ変数の分散をどのようにモデル化しますか? SQL

私は最近いくつかのことを考えていて、次のシナリオのようなことを行う正しい方法は何だろうと思っていました (DB の人がそのようなことをするのは非常に一般的なことだと確信しています)。

次のような製品テーブルがあるとしましょう (MySQL):

ここでは異常なことは何もありません。ここで、別のテーブルにカテゴリの階層があり、製品テーブルと多対多の関係をバインドする別のテーブルがあるとしましょう - 各製品が何らかのカテゴリに属する​​ようにします (それらは省略します) 、それはここでは問題ではないため)。

ここで興味深いのは、各カテゴリが製品アイテムに追加の変数セットを要求する場合です。たとえば、コンピューター モニター カテゴリの製品には、LCD/CRT 列挙型フィールド、画面サイズ列挙型などを含める必要があります。また、他のカテゴリでは、アイスクリームにフレーバー varchar、棚保管時間 int などの他の変数があるとします。

ここでの問題は、すべての製品に共通の変数セット (id、名前、説明など) があるが、カテゴリごとに一貫していない追加の変数があることです。ただし、すべての製品は共通のセットを共有する必要があります。最終的に、それらはすべて製品グループに属しているため、たとえば SELECT * FROM products ORDER BY company_id などのクエリを実行できます (些細な例で、代表的ではないかもしれませんが、全体像がわかります)。

今、私はいくつかの潜在的な解決策を見ています:
- 製品カテゴリごとに個別のテーブルを生成し、そこに製品を適切な追加変数とともに保存します - 愚かでクエリフレンドリーではありません

- 製品テーブルは共通の変数と同じままであり、カテゴリごとに別のテーブルを作成し、追加の変数を追加しますJOIN で 2 つのテーブルをバインドする変数 - 正規化されていますが、クエリのパフォーマンスと明確性の問題 - カテゴリ (1 番目のテーブル - 製品) から製品をフィルタリングする方法と、追加の変数 (17 インチ LCD モニターなど) 用の追加のフィルター - SQL が必要です。 JOIN トリック

- 製品テーブルは同じままで、追加の変数を保持する JSON データなどを保持する別の変数タイプのテキストを追加します - コンパクトですっきりしていますが、SQL で変数をフィルタリングすることはできません

私はここで非常に明白で単純なものが欠けていることを知っています-私は正規化技術について少し錆びています:)


編集:この質問をする前に、スタックオーバーフローを検索してきましたが、成功しませんでした。ただし、質問を投稿した後、「正規化」タグの 1 つをクリックすると、同様の質問がいくつか見つかり、「一般化専門化リレーショナル デザイン」が検索されました。話の要点は、タグが実際に検索に役立つということは、私のインターネット生活の中で初めての経験にちがいないということです。まだまだですが、皆様のご意見、ご感想をお待ちしております。
edit2 : アプローチ no.2 の問題は、約 1000 の専門化が予想されることです。カテゴリには階層 (1 ~ 4 レベルの深さ) があり、エンド ノードには特殊な変数が追加されます。それらは約 1000 のオーダーで蓄積されるため、特殊なテーブルを追加して結合するのは少し現実的ではありません。
edit3 :私の場合、属性のボラティリティが非常に多いため、提案された「エンティティ属性値」は進むべき道のように見えます。クエリの悪夢がやってくる! みんなありがとう。

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

c# - DataTableのすべての行を比較します-重複するレコードを特定します

DataTable insertRowsキーなしでデータを正規化したいのですが。そのためには、ID()を見つけて、重複するレコードを識別してマークを付ける必要がありますimport_id。その後、個別のもののみを選択します。私が考えているアプローチは、各行をそのDataTableのすべての行と比較することです insertRows

DataTableの列は設計時には不明であり、キーはありません。パフォーマンス面では、テーブルには10kから20kのレコードと約40の列があります

パフォーマンスをあまり犠牲にせずにこれを達成するにはどうすればよいですか?

linqを使用しようとしましたが、where基準を動的に指定する方法がわかりませんでした。ここでは、各行のループで名前と名前を比較しています。

どんなアイデアでも大歓迎です。linqを使用して類似の列名を見つけるにはどうすればよいですか?>類似の質問

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

sql - 「悪い」データベース設計から使用可能な設計にデータを移行するには、どのようにアプローチすればよいですか?

私が継承した現在のプロジェクトは、主に 1 つの正規化されていないテーブルを中心に展開しています。正規化の試みがいくつかありますが、必要な制約が設定されていません。

例: Project テーブルには、(他の値の中でも) クライアント名があり、クライアント名だけを含むクライアント テーブルもあります [どこにもキーはありません]。client テーブルは、新しいプロジェクトを追加するときにユーザーに提供する値のプールとしてのみ使用されます。クライアント テーブルまたは外部キーに主キーがありません。

このような「設計パターン」は、データベースの現在の状態とそれを使用するアプリケーションで一般的です。私が自由に使えるツールは、SQL Server 2005、SQL Server Management Studio、および Visual Studio 2008 です。私の最初のアプローチは、正規化が必要な情報を手動で判断し、Select INTO クエリを実行することでした。ケースバイケースよりも優れたアプローチはありますか、それとも自動化できますか?

編集: また、「作業指示書番号」は IDENTITY (autonumber、unique) フィールドではなく、順番に生成され、各作業指示書に固有であることを発見しました。既存の番号付けにもいくつかのギャップがありますが、すべてが一意です。移行前にダミー行を生成するためのストア プロシージャを作成するための最良の方法はありますか?

0 投票する
6 に答える
1551 参照

database-design - 複数の外部キー

私のデータベース設計は以前はかなり直線的だったので、おそらく非常に簡単に解決できる問題に戸惑っています。

「CATEGORY」または「TOPIC」のいずれかの子である可能性のある投稿を含む「POSTS」のテーブルがあります。「POSTS」テーブルの外部キーを定義する最良の方法は何ですか?

POST_CATEGORY_ID という名前の列と "POST_TOPIC_ID" という名前のフィールドを持つことができると思いますが、これは null 可能である可能性がありますが、これは正しく聞こえません。確かに、私が見逃している簡単な解決策があります!

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

sql - さまざまなテーブルからIDを(すばやく)照合するにはどうすればよいですか?

非正規化されたテーブルが3つあり、額面どおりに取得する必要があります(データは外部リソースから取得されます)。3つのテーブルには異なる定義がありますが、それぞれが異なる視点から同じオブジェクトを記述しています。

これらのテーブル間の唯一の共通点は、主キーです。SELECT UNION SELECTを使用してIDをまとめることはできますが、各テーブルにPKフィールドのインデックスが付けられている場合でも、クエリは比較的遅いようです。このクエリvw_object_idsを抽象化するビューを作成することもできますが、同じ速度で実行されます。ビューをマテリアライズするためにインデックスを追加できると思いましたが、SQL Server 2005では、UNIONを使用してビューにインデックスを付けることはできません。

IDのマスターインデックスを基になるデータと同期させたいのですが、基になるデータはいつでも更新または削除される可能性があります。クレイジーなトリガーのセットを使用してこれを無期限に達成することも、インデックス付けされていないビューの速度で解決することもできると思います。ただし、オプションが不足していないこと、またはこのシナリオに名前があるか、パターンを示しているかどうかを確認したかっただけです。

考え?

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

php - PHPで「時間」を正規化する最良の方法は何ですか?

ユーザー入力を計算に適した正規化されたデータに変換する方法を探しています。入力はある程度の時間であり、Twitter からのものであるため、文字列のみです。理想的には、これらの結果が大好きです。

1時間半 --> 01:30

27.52 --> 00:28

5:24 --> 05:24

これは特に難しいことですか?適切なインプットを作成する方法についてユーザーを指導することに集中できますが、厳密になりすぎたくもありません。

どんな提案も素晴らしいでしょう、

ありがとう!

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

mysql - MySQLセットの保存

PHPでコーディングしているWebアプリケーションにいくつかのテーブルがありますが、これが適切かどうかを知りたいと思います。

たとえば、製品は次のようになります。

バリエーションは次のようになりますが:

多くの製品が同じ色/テクスチャを持つことができるように。私が見つけた問題は、データを次のように返す単一のクエリにこれを当てはめることができないということです。

その後、これを適宜解析して、各バリエーションの画像を表示します。

その形式を返すストアド関数は最良のアイデアですか?または、さらに正規化する必要がありますか?もしそうなら、どのように?

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

sql - テーブルデザイン

テーブルが次のようになっていると仮定して、これは良いデザインなのだろうかと思っていました

country fk が 3 つのテーブルで繰り返されていることに注意してください。2つのテーブルでfkが繰り返されている状態ですか?これが良いデザインかどうか誰か教えてください。もしそうなら、なぜですか?なぜなら、私はそれを頻繁に繰り返す必要があるとは思わない.

乾杯