問題タブ [relational]

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

c# - ネストされたセット モデルを C#/LINQ の観点から説明できる人はいますか?

ネストされたセット モデルが C# 言語や LINQ に直接関係していないことはわかっています。これは、Web アプリの開発に使用しているものです。

階層データ (私の場合はサブカテゴリを含むカテゴリ) については、現在、隣接リスト モデルに似たものを使用しています。現時点では、2 レベルのカテゴリしかありませんが、さらに進めて、ネストされたセット モデルを使用して n レベルのカテゴリを許可したいと考えています。

C# コンテキストでの使用方法についてはよくわかりません。これは、ネストされたセットモデルで読んでいる記事ですこの記事で私の混乱はいくらか解消されましたが、まだ大きな問題があります ?? 頭の中:

- カテゴリの挿入、更新、または削除は面倒ですか? 左と右の数字の番号を付け直す必要があるようです...次のシナリオでは、LINQ クエリはどのようになりますか?

  • 子ノードを削除します (すべてのノードの左/右の値を再番号付けします)
  • 親ノードを削除します (孤児はどうしますか?)
  • 子ノードを別の親ノードに移動する (再度番号を付け直す)

私の理解が正しければ、常に子ノードの左/右の値は常に親ノードの左/右の値の間にありますか?

カテゴリだけが静的であれば、十分に簡単に思えます...おそらく、概念を理解するためにもっと時間を費やす必要があります.

どんな助けでも大歓迎です!

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

mysql - データベース-「イベント」テーブルの設計

このすばらしいNettuts+の記事のヒントを読んだ後、大量の読み取りが行われる他のテーブルから非常に揮発性の高いデータを分離し、同時にデータベーススキーマ全体で必要なテーブルの数を減らすテーブルスキーマを思いつきました。正規化のルールに従わないため、これが良いアイデアかどうかはわかりません。アドバイスを聞きたいのですが、一般的なアイデアは次のとおりです。


クラステーブル継承構造でモデル化された4種類のユーザーがあり、メインの「ユーザー」テーブルに、すべてのユーザーに共通のデータ(id、、、、いくつかusername、...)といくつかのフィールド( 、、、、、、)を格納します。 ..)。passwordflagsTIMESTAMPdate_createddate_updateddate_activateddate_lastLogin

上記のNettuts+の記事からヒント#16を引用するには:

例2:テーブルに「last_login」フィールドがあります。ユーザーがWebサイトにログインするたびに更新されます。ただし、テーブルを更新するたびに、そのテーブルのクエリキャッシュがフラッシュされます。そのフィールドを別のテーブルに配置して、ユーザーテーブルの更新を最小限に抑えることができます。

今ではさらにトリッキーになります。次のようなユーザー統計を追跡する必要があります。

  • ユーザープロファイルが表示された一意の回数
  • 特定のタイプのユーザー広告がクリックされたユニークな回数
  • 特定のタイプのユーザーからの投稿が表示されたユニークな回数
  • 等々...

私の完全に正規化されたデータベースでは、これにより約8〜10個の追加テーブルが追加されます。それほど多くはありませんが、できれば単純にしておきたいので、次の" events"テーブルを作成しました。

基本的に、はテーブルIDの主キー(id)フィールドを指しTABLEますが、残りはかなり簡単なはずです。この設計で私が気に入った点の1つは、最後のログインだけでなく、すべてのユーザーログインを追跡できるため、そのデータを使用していくつかの興味深いメトリックを生成できることです。

テーブルの性質が大きくなっているためevents、次のようないくつかの最適化を行うことも考えました。

  • #9:有限数のテーブルと有限(および所定の)数のイベントしかないため、スペースを節約するために、TABLEおよび列をsではなくsEVENTSとして設定できます。ENUMVARCHAR
  • #14IPsをUNSIGNED INTsの代わりINET_ATON()にsとして保存しVARCHARます。
  • sDATETIMESTAMPsではなくsとして保存しDATETIMEます。
  • /の代わりにARCHIVEまたはCSV)エンジンを使用します。 InnoDBMyISAM
    • INSERTsとsのみSELECTがサポートされており、データはその場で圧縮されます。

全体として、各イベントは14(非圧縮)バイトしか消費しません。これは私のトラフィックには問題ないと思います。

長所:

  • より詳細なデータ(ログインなど)を保存する機能。
  • ほぼ12個の追加のテーブル(日付と統計)を設計(およびコーディング)する必要はありません。
  • テーブルごとに数列を削減し、揮発性データを分離します。

短所:

  • 非リレーショナル(まだEAVほど悪くはない):
    • SELECT * FROM events WHERE id = 2 AND table = 'user' ORDER BY date DESC();
  • イベントごとに6バイトのオーバーヘッド(、、IDおよびTABLEEVENT

長所が短所をはるかに上回っているように見えるので、私はこのアプローチを採用する傾向がありますが、それでも私は少し気が進まない...何かが足りないのですか?これについてどう思いますか?

ありがとう!


@coolgeek:

私が少し違うことの1つは、entity_typeテーブルを維持し、そのIDをobject_type列(この場合は「TABLE」列)で使用することです。event_typeテーブルでも同じことをしたいと思うでしょう。

明確にするために、テーブルで許可されるイベントをマップするテーブルを追加し、TABLE/EVENTペアを使用する代わりにイベントテーブルでそのテーブルのPKを使用する必要があることを意味しますか?


@ben:

これらはすべて既存のデータから得られた統計ですよね?

追加のテーブルは主に統計に関連していますが、データはまだ存在していません。いくつかの例を示します。

これらのテーブルを削除すると、誰が、何を、いつ、ビューがここでどのように役立つかを追跡する方法がありません。

私はそれが分離されるべきであることに同意しますが、それは根本的に異なるデータであるためです。誰かが何であるか、そして誰かが何をするかは、2つの異なることです。ボラティリティはそれほど重要ではないと思います。

私はそれを両方の方法で聞いたが、MySQLのマニュアルにはどちらかが正しいと述べているものは何も見つからなかった。とにかく、それらはデータの種類を表すため、別々のテーブルにする必要があることに同意します(通常のアプローチよりも説明的であるという追加の利点があります)。

いわば、木々の森が欠けていると思います。

テーブルの述語は「DATEEVENTEDTOTABLEの時点でのIPIPからのユーザーID」であり、妥当と思われますが、問題があります。

「EAVほど悪くない」という意味は、すべてのレコードが線形構造に従っていて、クエリが非常に簡単であるということです。階層構造がないため、すべてのクエリを単純なで実行できますSELECT

あなたの2番目の声明に関して、あなたは私をここで間違って理解したと思います。IPアドレスは必ずしもユーザーに関連付けられているとは限りません。テーブル構造は次のようになります。

IPアドレス( )は、日付()にテーブル( )のPK()に対してIP何か( )を実行しました。EVENTIDTABLEDATE

たとえば、上記の例の最後の行では、IP 217.0.0.1(一部の管理者)が2010-04-20 03:20:00にユーザー#2(最後の既知のIPは127.0.0.2)を削除したことを示しています。 。

たとえば、ユーザーイベントをユーザーに参加させることはできますが、外部キー制約を実装することはできません。

確かに、それが私の主な関心事です。ただし、従来のリレーショナルデザインではうまくいかなかったこのデザインで、何がうまくいかないのか完全にはわかりません。いくつかの注意点を見つけることができますが、データベースをいじっているアプリがそれが何をしているのかを知っている限り、問題はないはずです。

この議論で重要なもう1つのことは、私がはるかに多くのイベントを保存することです。各イベントは元の設計と比較して2倍以上になります。ここでストレージエンジンを使用することは完全に理にかなっていますがARCHIVE、唯一のことはそうではないということです。 sをサポートしますFKUPDATEsでもDELETEsでもありません)。

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

mysql - Rails で関連付けられたレコードのみを表示するようにユーザーを制限する

3 つのモデル (プロファイル -> サブモデル -> サブサブモデル) が連結されたアプリケーションがあり、多くの関係があります。ログイン後に、プロファイルに関連付けられたレコードのみを取得するようにユーザーを制限しようとしています。私はレールに非常に慣れていません。これは、プロファイルモデルで試していたことです

しかし、これは Profile.find_by_id(1).submodels で呼び出すと空のデータ セットを返します。または、代わりにコントローラーまたはビューでこれを処理する必要があります。モデルがこれを処理するのに適していると思いました。

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

php - 値の有無にかかわらず小道具リストを照会する

私はSELECTこれらのような3つのリレーショナルテーブルを作成しようとしています:

私のページでは、このような結果を取得したいのですが、クエリに問題があります。

したがって、クエリは次のようなものを返す必要があります。

私は次のようなものを使用しようと思いました:

問題は、クエリが値を返さないことです。プロップ値に関係なく、すべてNULLに同じprop順序が必要です。materialsNULL or not

この例が明確であることを願っています!

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

c# - 他のテーブルに関連するレコードがあるSQLレコードを同じデータベースにコピーするにはどうすればよいですか?

レコードとそれに関連する子を同じデータベース内の新しいレコードと新しい関連する子にコピーできる関数をC#で作成しました。(これは、以前の作業を新しい作業のテンプレートとして使用できるようにするアプリケーション用です。)

とにかく、それはうまく機能します...これがコピーをどのように達成するかについての説明です:

2列のメモリベースのルックアップテーブルに、各レコードの現在の主キーを入力します。次に、新しいコピーレコードを個別に作成するときに、ルックアップテーブルを新しいレコードのID PKで更新します[SCOPE_IDENTITY()から取得]。これで、関連する子をコピーするときに、新しい親PKを検索して、新しいレコードにFKを設定できます。

テストでは、SQL Server 2005ExpressEditionのローカルインスタンスにリレーショナル構造をコピーするのに1分しかかかりませんでした。残念ながら、生産がひどく遅いことが証明されています!私のユーザーは、LANを介してSQLServerへの親レコードごとに60,000以上のレコードを処理しています。私のコピー機能は引き続き機能しますが、これらの各レコードは個別のSQL UPDATEコマンドを表し、通常の2%のアイドル状態から約17%のCPUでSQLServerをロードします。50,000レコードのコピーのテストを終えたところですが、20分近くかかりました。

SQLクエリまたは保存されたプロシージャでこの機能を複製して、各クライアントからLAN経由でブラストする代わりに、SQLサーバーにすべてのコピー作業を実行させる方法はありますか?

(Microsoft SQL Server 2005 Standard Editionを実行しています。)

ありがとう!

-デレク

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

php - mysqldbで送信された最後の結果

mysqldb行に送信された最後の20件の結果を取得するにはどうすればよいですか。

最近ユーザーが送信した20件の結果が必要です。

乾杯。

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

sql-server - Webshop ストレージを NoSQL ソリューションに移行する

SQL Server リレーショナル DB に基づく Web ショップ ソリューションがある場合、NoSQL ストレージに移行する理由は何ですか? リレーションに大きく依存するデータストアを NoSQL に移行することは理にかなっていますか? ゼロから始める場合、Web ショップ プロジェクトのリレーショナル ソリューションではなく NoSQL ソリューションを選択しますか?しばらくすると、記事、分類、税率、価格表などのテーブルの束と、それらの間の関係の大きさになります。 ?

.NET (4.0) での MongoDB のサポート、または MongoDB の .NET 4.0 のサポートはどのようなものですか? MongoDB 用の EF ウィザード、L2SQL ウィザードなどに似た豊富なコード生成ツールを当てにできますか?

これまで読んできたように、NoSQL は主にドキュメント ストレージ、より単純なオブジェクト モデルに適しています。

この質問に対するあなたの回答は、適切なインフラストラクチャ設計の決定を下すのに役立ちます。

更新: ASP.NET MVC を中心にソリューションを開発していて、Model クラスに大きく依存している場合、DB4o を選択してオブジェクトをデータストアとの間で単純にシリアル化および逆シリアル化するのが最も簡単な方法でしょうか?

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

mysql - インデックス「有効」フィールドは良い考えですか?

Web サイトのコンテンツは MySQL データベースに保存されます。コンテンツの 99% が有効になりますが、一部 (ユーザー、投稿など) は無効になります。ほとんどのクエリは次のように終了しますWHERE (...) AND enabled

フィールド「有効」にインデックスを作成することは良い考えですか?

0 投票する
4 に答える
223 参照

sql - データベース設計 -- 3rd NF を尊重しているか?

リレーショナル モデルに次の関係 (テーブル) があります

Student と Teacher の機能的な依存関係について疑問に思っています。

これらの表は第 3 正規形を尊重していますか? これらのテーブルの主キーはどれですか?