問題タブ [schema-design]
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.
ruby-on-rails - 主キー以外の列を使用したレールの関連付け
私はRailsにかなり慣れていないので、ActiveRecordが提供する関連付けを利用して、新しいプロジェクトとスキーマをセットアップしようとしています。ユーザーと質問の2つのモデルがあります。ユーザーが管理ユーザーによって設定されている場合、カテゴリのリストのチェックボックスが付いたフォームがあります。これらのカテゴリを特定の質問にマップして、後でセットアップユーザーに尋ねたいと思います。私の考えでは、マッピングテーブルuser_to_categoriesがあり、ユーザーから必要な質問にたどり着くことができます。ただし、questionsテーブルにはquestion_idの主キーがあるため、has_many:throughはここでは機能しないようです。多くの質問が同じカテゴリに含まれる可能性があるため、category_idは質問テーブルの別の列になります。レールとアクティブレコードの関連付けを利用するためにこれを設定する方法についての提案はありますか?
database-schema - SQuirreL SQL における列プロパティの意味
SQuilrreL SQL を使用してローカルの MySQL サーバーに接続し、いくつかのテーブルの列の仕様を調べています。同時に、MySQL (MySQL Workbench) で同じテーブルの仕様を直接見ていますが、明らかに、列のプロパティが異なります。たとえば、SQuirelL SQL では 、 、 などのプロパティがありますIS_NULLABLE
がDECIMAL_DIGITS
、NUM_PREC_RADIX
MySQL では 、 、 などのプロパティがNot Null
ありAuto Increment
ますZero Fill
。
私の質問 - SQuirreL SQL のすべての列プロパティの意味は何ですか? さらに良いことに、それらを MySQL のプロパティにマップするにはどうすればよいでしょうか? (それらのいくつかはIS_NULLABLE
<==>Not Null
のように明らかですが、ほとんどはそれほど明確ではありません)。
MySQL から Derby まで、SQuirreL SQL のプラグイン CopyDB を使用したばかりなので、これが必要です。変換ですべてが保持されているかどうか、およびテーブル構造にどのような変更が加えられたかを知りたいです。
ありがとうございました!
オファー
django - Django モデルの継承と構成、および複数のモデル/テーブルをまとめてクエリする
私は、多数の異なるモデルを持つ Django アプリを持っており、そのすべてに共通のデータがたくさんあります。最終的に、この問題は継承と構成のどちらを選択するかという問題に行き着くと思います。私の現在の実装は次のようなものです:
このモデルではThing
、Thing モデルのマネージャーを使用してクエリを実行できます。の type フィールドを使用して、'a' または 'b' のいずれかを含むフィールドThing
を調べ、 (ie) を要求することで、子オブジェクト データを取得できます。これは、すべてのオブジェクトのリストを取得するためのアプリでのかなり一般的な操作であるため、私が気に入っている機能です。type
thing.a.aFoo
Thing
ここにはいくつかの問題があります。まず、type
フィールドは不要に思えます。最初に型を調べずに子データを取得する方法はありますか? 型の値を指定して正しいオブジェクトを返すインスタンス メソッドを使用して、これを回避できるようです。または、型フィールドを本当に取り除きたい場合は、 の逆関係フィールドのそれぞれを反復処理してThing
、1 つを探します。それはDoesNotExist
例外を発生させません。しかし、これは私にはかなりもろく感じます。新しい 'subthing' を追加した場合、新しいタイプを探すためC
に更新する必要があります。これは、モデルを作成して抽象化することでThing
修正できます。Thing
そうすれば、のすべてのフィールドを取得でき、A
使用する必要がなくなりますB
Thing
type
分野。Thing
ただし、問題は、すべてのオブジェクトに対してクエリを実行できなくなることです。
私が考えている別のモデルは、データをとThing
のフィールドに変換することで、これをひっくり返します。A
B
このバージョンにはいくつかの利点があります。type
上のフィールドが取り除かれThing
、少なくとも私にとっては見た目も手触りもすっきりし、壊れにくくなっています。Thing
ただし、ここでの問題は、最初のバージョンでアブストラクトを作成する際の問題と同じです。すべての「サブシング」を一緒にクエリする能力を失います。A
オブジェクトのクエリまたはオブジェクトのクエリを実行できますが、両方を実行することはできませB
ん。すべての「サブシング」を照会する機能を犠牲にすることなく、このバージョンのモデルを使用できますか? QuerySet
1 つの可能性は、両方のモデルを照会し、すべてのオブジェクトのを返すマネージャーを作成することです。それは動作しますか?
xml - XMLスキーマのモジュール性とはどういう意味ですか?
XMLスキーマのモジュール性とはどういう意味ですか?つまり、xsdが与えられた場合、それをモジュール化するために何ができるでしょうか?
hbase - HBase:列修飾子をスキャンします-それは可能ですか?
各行に関連するさまざまなIDがあります。たとえば、、、1001
および1002
。これらの各IDには、同様の属性のセットがあります。
したがって、私の考えは、列修飾子を含む1つの列ファミリー('cf')を持つことです。
行(x)、列ファミリー(cf)、列(1001 *)をスキャンして、この場合は1001のすべての属性のマップを取得できますか?
明らかに、行キーに対してこれを行うことができますが、列修飾子が同じように機能するかどうかはわかりません。
xml - XML スキーマ設計 -ソース属性値
XML スキーマ ファイルの文書化を依頼されました。各スキーマ要素について、ビジネスおよび技術的な説明を含める必要があります。私たちのガイドラインと W3C XML Schema の推奨事項を見て、ベスト プラクティスとは具体的にどのようなものなのか疑問に思いました。
私たちのガイドラインでは、注釈タグは次の形式にする必要があると述べています。
XML の推奨事項では、ソース属性のタイプは「xs:anyURI」である必要があると規定されています。明らかに、「BuinessDescription」と「TechnicalDescription」は URI ではなく、スキーマ全体で何度も繰り返されます。したがって、ソース属性をセマンティック属性として使用することは本当に正しいのでしょうか?
XML Schema http://shop.oreilly.com/product/9780596002527.doで、Eric van der Vlist は、これは受け入れられることを示唆していますが、相互運用性の問題につながる可能性があると述べて、この見解と矛盾しています。
c# - どのスキーマ変更シナリオ?
私の現在のスキーマは次のようになります。
上記のID
field は、IDENTITY INT
end user としても使用されるフィールドaccount Id
です。DisplayVal
画面に表示されるものです。
新しいクライアントは独自のAccount Id
値を提供しましたが、それらはであるため、そのままフィールドalpha-numeric
に入ることができません。IDENTITY
ここに私のシナリオがあります: 最高のmaintainability
、end user experience
、magnitude and impact of changes
およびを提供するシナリオを探していますtesting/QA impact
。
私の最初のシナリオは、すべてのタイプの に対応するAccount Number
列を追加することでした。次のようになります。VARCHAR(x)
Account Numbers
上記では、最初のクライアントの場合、seeded Identity
がAccount Id
にコピーされAccount Number
ますが、他のクライアントの場合は がseeded Identity
作成されますが、それらAccount Number
は異なり、 と一致する場合と一致しない場合がありDisplay Value
ます。
私の 2 番目のシナリオは、列を追加せずAccount Number
、IDENTITY INSERT
. クライアントがAccount Number
.
3 番目のシナリオは、基本的に、新しいものを のままにしてAccount Number
、legacy Account Number
すべての新しいレコードに対して新しい ID 値を作成することでした。これには、エンド ユーザーが新しい に慣れる必要がありますAccount Number
。おそらく最も簡単ですが、欠点があるかどうかはわかりません。
この場合にうまく機能する別のシナリオがわかっている場合は、お知らせください。
node.js - 外部キーによるMongoDBクエリ
私は2つのコレクションを持っています:
ユーザー:
- { id:"aaaaaa" 年齢:19歳、性別:"f" }
- { id:"bbbbbb" 年齢:30 , 性別:"m" }
レビュー:
- { id:777777 , user_id:"aaaaaa" , text:"いくつかのレビュー データ" }
- { id:888888 , user_id:"aaaaaa" , text:"一部のレビュー データ" }
- { id:999999 , user_id:"bbbbbb" , text:"一部のレビュー データ" }
私は見つけたいと思いますすべてのレビューどこsex=f
とage>18
(レビューのコレクションが膨大になるため、入れ子にしたくありません)
mongodb - ジョブキューの正しい mongo スキーマ設計は何ですか?
Mongo でジョブ キューを実装したいと考えています。ソフトウェア システム全体が Mongo をベースにしているため、Mongo は自然で、うまく適合する可能性があります。
ジョブコレクションには、各ジョブの状態がドキュメントとして格納されます。これは、クエリのニーズに基づいた上限のないコレクションであると思います。ジョブドキュメントは次のようになります。
ジョブコレクションの一般的なアクセス パターンは次のとおりです。
- type、state、priority 、および場合によってはtiming.submittedの範囲クエリに基づいて、実行する未処理のジョブを検索します。以前の読み取り時間よりも長く送信されました
- 処理された (完了、失敗、キャンセルされた) ジョブをすべて見つける
- すべての未処理 (送信済み、実行中) のジョブを見つける
- _id で特定のジョブを検索し、そのペイロードを取得します(状態が実行中の場合)
クエリの大部分は、実行が必要な未処理のジョブを見つけることです。ジョブコレクション内でドキュメント サイズが大きく変わらないように、ペイロードをjobs_payloadコレクションに移動する価値はありますか?
大量の処理済み (完了済み、失敗済み、キャンセル済み) のジョブと未処理のジョブは、最終的にジョブコレクションに必要なワーキング セット メモリを増加させますか? 適切なインデックスを使用しても、未処理のジョブを実行するためのアクセス時間は遅くなりますか?
スキーマ設計を使用して行うことができる代替案とトレードオフは何ですか?
mongodb - アクティビティのタイムラインをmongodbのどこに配置するか、ユーザーに埋め込むか、個別に配置する必要がありますか?
私はeラーニングアプリを作成しており、学生の活動をタイムラインとして表示しています。user
コレクションに埋め込むか、。を使用して別のコレクションを作成する必要がありuserId
ます。
制約:
- 1対多の関係。
- ユーザーアクティビティは詳細で多数あります
- 90%の時間、一度に1人のユーザーのみを表示する必要があります。もう一方のケースは、スーパーバイザー(教師)がユーザーのアクティビティの概要を表示する必要がある場合です(おそらく別のコレクションですか?)
- アクティビティを検索して生徒を見つけるユースケースについては考えていませんが、後でこれを使用する可能性がありますか?(たとえば、誰が最初に特定のアクティビティを終了したかを確認しますか?しかし、それによって関係が多対多に変わり、まったく異なる質問になります)
これらの2つの質問で、関連する問題のさまざまなスキーマを見つけました。
- MongoDBスキーマ設計-2つの収集アプローチを選択するか、埋め込みドキュメントで次のことを推奨します
try and embed as much as possible
- ユーザーのロケーション履歴を保存するためのMongoDBスキーマは思い出させます
don't bloat a collection, because querying the elements deep below might be hard, especially if you're going to use lists