問題タブ [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.
report - レポートのためにライブデータを非正規化する-良いか悪いか?
レポートの作成が容易になるため、エンタープライズアプリケーションデータベースを非正規化することの長所と短所は何ですか?
プロ-結合が不要になるため、SSRSでのレポートの設計はおそらく「簡単」になります。
短所-非正規化されたデータを処理するためのアプリの開発/保守は、データの重複と同期のためにさらに困難になります。
その他?
mysql - 大きな単一テーブルでのMySQLの実用的な正規化
私はPHPMySQLに比較的慣れていないので、「実践的な」アプローチで学習することに専念しています。幸いなことに、私は現在、(非常に)大規模なデータベースを持っており、すべて1つのテーブルで処理するコインデータに関連しています。現在、次の列があります(各行は単一のアイテム[コイン]を表します)。
新しいテーブルのグループ化は比較的明白です。
限目:
デノム:
タイプ:
残りはすべて、コインテーブルの下にあります。
だから私はテーブルを指定されたテーブルに正規化しようとしています。私はJOINを見ていることを知っていますが、それを実行するための最良の方法を考えています。最初に各データグループ(Denom、Period、Type)で新しいテーブルを作成し、次にJOINステートメントを使用してデータを挿入しますか?または、JOINステートメントを使用して「オンザフライ」で新しいテーブルを作成する方法はありますか。私はここで素晴らしい本を開いており、MySQLのセクションをうまくフォローしていて、このサイトも調べていますが、これを行うための「正しい」方法を理解できていません。
ここで知識のあるアドバイスを求める理由は、「関係」やキーなどを維持する方法が少しわからないためです。つまり、「Denom」というテーブルを作成して、すべての現在のテーブルデータと一意の主キーを作成します。次に、この新しい主キーへの参照をDenomテーブルからメインCoinテーブル(新しいアイテムDenomIDの下)に挿入して、それらが一致するようにするにはどうすればよいですか?
基本的に、このテーブルを4つの別々のテーブルに分割する必要があります。Access 2007のテーブルアナライザウィザードを使用してこれを試しましたが、私のようなn00bには有望に見えましたが、データが多すぎて実際にクラッシュしました。繰り返し。おそらく最善の策ですが、今はいくつかのベストプラクティスと、それを実践する方法を知る必要があります。アドバイス/ヘルプ/関連リンクをいただければ幸いです。
sql - テーブルの変更と外部キーによる新しいテーブルの比較
いくつかの変更を行う必要がある既存のデータベースがあります。テーブルを変更して余分なデータを記録するか、そのデータを既に記録している既存のテーブルを使用して別のテストを行い、それを新しいテーブルで他のテーブルにリンクするかを決定する必要があります。
既存:
オプション1:
オプション 2:
基本的には、テスト シーケンスの開始時に 1 回、圧力ボリュームをチェックするテストが行われていました。現在、彼らは他の電気データと一緒に 5 分ごとに記録したいと考えています。彼らはまだ最初の圧力容積テストを行っています。
mysql - mysqlの不明な列タイプによるソート
これで、users テーブルができました。ユーザー名、電子メールなどを保存します。次に、user_settings テーブルがあります。timestamp_logged_in、profile_views などの標準的な列の代わりに、キーと値の組み合わせとして整理しました。たとえば、列は次のとおりです。
user_settings_ID user_ID 名前 値
サンプル レコードは次のようになります: 82 2 'timestamp_logged_in' '2009-10-10 02:23:53'
これにより、設定がもう少し透過的になります。新しいユーザー設定の種類を格納するために列が存在する必要はありません。これを行うと (すべての値が文字列として格納され、ミドルウェアで適切な型にキャストされます)、並べ替えが難しくなることが懸念されます。たとえば、最後にログインした順にユーザーのリストを取得したい場合、並べ替えには次のような SQL 呼び出しが必要になります。
SELECT user_ID FROM user.settings WHERE status='open' AND name='timestamp_logged_in' ORDER BY name
ただし、これは見つかったレコードを文字列としてソートすることになります。並べ替えアルゴリズム mysql が特定の値の型に基づいて実装されていることを確認する方法はありますか (たとえば、並べ替え列を文字列、整数、日時、タイムスタンプなどとして強制的に処理するようにするなど)?
どんな考えでも本当に感謝します。ありがとう。オリバー・ナサール
grails - Grails:hasMany/belongsToなしの多対多-代わりにネイティブ3NFを使用-全文を検索
hasManyまたはbelongsToプロパティを使用せずに、3NFを使用して多対多のマッピングをgrailsに実装しています。
この記事から抜粋して、その利点について多くのことを示し、説明しています。
記事: http: //burtbeckwith.com/blog/?p = 169
プレゼンテーションノート: http: //burtbeckwith.com/blog/files/169/gorm%20grails%20meetup%20presentation.pdf
私はこのような質問にタグシステムを作ろうとしています(stackoverflow :))
質問とタグを保存してから、それらとの関連付けを保存できますが、タグを使用して完全な質問を検索して提供できるようにしたいと思います。
質問、タグ、質問タグの3つのドメインクラスがあります
タグクラス
QuestionTagクラス
これらは、3つの正規化された形式で3つのテーブルを生成します
作品、質問、タグの数を保存します。
Q.1「質問」とその「タグ」のセットをロードするにはどうすればよいですか?質問に関連付けられたタグが5つある場合。
ここで「searchable」プラグインをインストールし、「static searchable=true」を3つのクラスすべてに適用しました。しかし、そのプロパティをQuestionTagクラスに追加すると、コンパイルエラーが発生します。これは、「hasMany」の欠如に関係していると考えられます。
Q.2「hasMany」を追加すると、内部で別のテーブルが生成されますが、独自のテーブルを定義しました。それとも、私が作成したQuestionTagテーブルを参照しますか?
Q.3 3NFを使用すると、タグと質問の全文を検索して、タグまたはテキストに一致する検索キーワードに関連付けられた質問を返すことができます。
database-design - 疑わしい繰り返しグループを含むデータベーステーブル設計の例
クライアント固有のアイテムをリンクするために使用される次のテーブルについて、誰かと話し合っています。
これは論争のあるデザインです。3つのフィールドはすべて、他のテーブルを参照します。2つのItemフィールドは、同じ他のテーブルを参照します。これらは実際のフィールド名ではないため、命名規則については気にしないでください(ただし、「1」と「2」は実際にはフィールド名の一部です)。私は、この設計は1NF違反の理由で悪いと主張していますが、他の人は、これは不快に思えますが、他のすべてのオプションは、特定のユースケースでは悪いと主張しています。
ノート:
- ほとんどの場合、2つのアイテムを相互にリンクするだけで済みます。
- ただし、N:1グループは許可されます。このような場合、同じItem1がItem2の値が異なる複数の行で繰り返されます。
- 一部のItem2値(既存のItem1-Item2リンク内)自体が他のItemにリンクされている場合も非常に少なく、これらの場合、これらの値はItem1列にあり、他のリンクされた値はItem2列にあります。 ; リンクされたすべてのアイテムは1つのグループに対応するため、そのように取得する必要があります。
私の主張:
- これは1NFに違反します。Item1とItem2は同じテーブルの外部キーであるため、繰り返しグループを構成します(相手は繰り返しグループの定義に同意しません)。
- Itemの検索の場合、これは、たとえばGroupIDフィールドを代わりに使用するテーブルでは、1つではなく2つのインデックスが必要であることを意味します。
- これにより、制限句はItem1フィールドとItem2フィールドの両方を調べる必要があるため、このテーブルで特定のアイテムを検索するクエリはより複雑になります。
- アイテムリンクのチェーンが発生する場合の取得は、より複雑になります。
反対側は主張します:
- 最も実行可能な代替案は、単一のItemフィールドと追加のGroupIDフィールドを持つテーブルです。
- より単純で、より一般的な2項目のリンクの場合は、より複雑になります。
- GroupIDスロットの取得に同時実行の問題がある可能性があり、それを管理する必要があります
- GroupIDの同時実行性の問題を管理するには、一意性の制約があるフィールドにGroupIDを含む2番目のテーブルが必要になる可能性があります
- 特にORMが使用されている場合は、少なくとも一部の時間は結合を実行する必要があります。結合は、現在の設計のように単一のテーブルを使用するよりも効率的ではありません。
これについていくつか意見を聞きたいと思います。私はデータベース設計、特に1NFに関するSOに関する他の投稿を読みましたが、それらは私が望んでいたように上記の私のケースを具体的に扱っていません。また、オンラインでの多くの調査に基づいて、1NFのようないわゆる標準は、さまざまな人々によってさまざまな方法で定義できることも理解するようになりました。私は両方の議論について可能な限り明確にし、どちらか一方にバイアスをかけないように努めました。
編集1:
- Item1とItem2は(金融)取引です
- 「1」と「2」は実際にはフィールド名の一部です
database-design - データベースの正規化。無限の彼方へ?
以下の例を正確にどこまで正規化しますか? また、この例は正確にどのレベルの正規化を満たしていますか?
各レコードには、自宅、携帯電話、職場、またはファックス番号のレコードを 0 または 1 つだけ含めることができることに注意してください。各電話番号は、完全に機能的に私の主キーに依存しています。データベースの正規化について私が知っていることから、これは 5NF を満たしていると思いますが、6NF は失敗しています。
電話番号の定義は固定されているため (新しい電話番号の種類、複数の home_phone エントリなどはありません)、電話番号を (contact_info_id、phone_number、type) で追跡される別の関係に分割したい理由はありますか? ?
c# - 文字列の英国化?
文字列を英語化する簡単な方法を知っている人はいますか? 現在、私たちのシステムでは、以下に示すような「無効な」文字の置換を行っています。
ここでの問題は、追加の国 (トルコ、ロシア、ハンガリーなど) でビジネスを開始しているため、このプロセスで変換されない文字が大量にあることに気付いたことです。
「無効な」文字のテーブルに依存しないようにする解決策を知っている人はいますか?
また、それが役立つ場合は、C# を使用してコーディングしています。:)
ありがとう!
編集:
いくつかのコメントに応えて、私たちのシステムは Unicode 文字の完全なセットをサポートしています... しかし、私たちが統合する他のシステム (カード プロセッサなど) はサポートしていません。:(
.net - MakeRelativeUri で正しく機能するように URI を正規化する
ここでの出力は次のとおりです。
どちらが正しいように見えますが、ほぼすべての Web サーバーが次の 2 つを同じ要求として処理します。
この動作を修正する最善の方法は何ですか?これを行うための API はありますか?それとも、手動で新しい URI を作成し、パス内の // をすべて削除する必要がありますか?