問題タブ [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.

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

django - Django の月次レポート - 月の一意性を強制しますか?

これは、Django プロジェクトのスキーマ設計に関する簡単な質問です。

基本的に、さまざまな部門からの一連の月次レポートがあり、いくつかのきれいなグラフを含む 1 つのレポートにまとめられています (おそらく Google ビジュアライゼーション API を使用する予定ですが、何か考えられることがあれば、他の提案も受け付けています。 else は Django とうまく統合されます)。

各部門は、レポートのそれぞれの部分について独自の数値を提出する責任があります。これらの数値を入力するためにおそらく Django admin を使用することになります。

ここでのより良い方法は、抽象的な Report モデルを作成し、これを個別のモデルを持つ各部門に継承し、特定のフィールドをオーバーライドしてから、それぞれに DateField を設定することだと思います。

親オブジェクトとして月を持ち、そこからレポートを派生させる - それはばかげたアプローチですよね?

また、数値を 1 回しか提出できないようにする最善の方法は何ですか? 別の月と年のフィールドを持つこともできます。そのフィールドで一意を強制すると思いますが、組み込みの DateField を使用することを望んでいましたが、月と年の一意性を強制する最良の方法は何ですか? そのために新しいモデル検証機能を使用する必要がありますか?

乾杯、ビクター

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

java - JavaオブジェクトのXMLスキーマ定義(XSD)の継承

Javaオブジェクトを記述するXMLスキーマ定義(XSD)を作成する必要があります。

問題のオブジェクトがtypeパラメーターを持つ共通の基本クラスから継承する場合、これをどのように行うのか疑問に思いました。

(ここでXTimeLocationは他の場所で定義されたカスタムクラスです)

Rule<T>それぞれのサブクラスのXSDが共通のコンテンツを繰り返さずに、のサブクラスのそれぞれを表すXMLノードを持つことができるようにXSDを構築するにはどうすればよいですか?

ありがとうございました!

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

oracle - Oracle Schema Design:I / Oオーバーヘッドのあるスキーマを分離しますか?

Oracle11gR1をベースにした新しいシステムのデータベーススキーマを設計しています。100近くのテーブルを持つメインスキーマを特定しました。これらはフロントエンドJavaアプリケーションからアクセスされます。

50近くのテーブルで変更された値を監査する必要があります。これは、すべての行で実行する必要があります。

つまり、1つの行の場合、テーブルMYSYS.T1に50(またはそれ以上またはそれ以下ですが、最小1)の行が存在する可能性がありMYSYS_AUDIT.T1_AUDます。すべての列エントリの古い値と、から利用可能な新しい値がある可能性がありますT1

DBAは観察を行い、この方法に反対するようアドバイスしました。彼が言ったのは、個別のスキーマはすべての操作に対して追加のI/Oを意味するからです。基本的に、AUDITスキーマは、値の分析と入力を行うためにのみ使用されます(したがってSELECTINSERT)。

「別個のスキーマは追加のI/Oを意味する」というのは本当ですか?正当な理由が見つかりませんでした。

AUDITデータは改ざんされるべきではないので、私には論理的に見えます。したがって、別のスキーマです。

また、からいくつかのテーブルをアーカイブするための別のスキーマを設計しましたMYSYS。テーブルからMYSYS_ARCテープにバックアップされるか、十分な時間が経過すると削除される可能性があります。

いくつかの統計:
スキーマ 内のいくつかのテーブル(20、30に近い)がMYSYS約5,000万行に拡大する可能性があります。
合計4TBのディスク容量を要求しました。
MYSYS_AUDITスキーマはその10倍になる可能性がありますがMYSYS、3か月以上保持することはありません。
MYSYSのいくつかのテーブルには、次のトランザクション/分があります。

  • テーブルへの同じ数の挿入を意味するINSERT100 。MYSYSMYSYS_AUDIT
  • テーブル内の1000UPDATEは、MYSYSテーブル内の同じ数の挿入を意味しMYSYS_ADITます。

質問:
これらすべてを踏まえて、改善点を提案していただけますか?

  1. 別のスキーマはディスクI/Oに影響しますか?(スキーマごとに1つの追加I / O?)
  2. 一般的な提案はありますか?

形:

これとは別に、読み取り専用の権限のみを持つスキーマがさらに2つありますが、主にそれらはアドホックな目的であり、それらのパフォーマンスは気にしません。

提案:
いくつかの提案があります。私たちは次のことに同意します。

  1. 論理的分離のスキーマ。
  2. TRIGGERAUDITテーブルにデータを挿入するため。
  3. _AUDテーブル名にはサフィックスはありません。:)
  4. ARCHIVEスキーマテーブルにデータを入力する手順。
  5. 間隔に基づいて分割します。

私たちは分析しています...

  1. ワークスペースマネージャーオプション。

APCまたはdpbradelyのソリューションを受け入れる前に、質問はまださらなる提案のために開かれています。

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

sql - SQL/MySQL で、1 対 1 の関係を同じテーブルに配置しない理由はありますか?

通常、1 対 1 の関係は同じテーブルに格納できます。それらを同じテーブルに保存しない理由はありますか?

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

database - スキーマ設計: 多対多と追加の 1 対多

私はこのシナリオを持っていますが、データベースでどのようにモデル化する必要があるか正確にはわかりません。私がモデル化しようとしているオブジェクトは、チーム、プレーヤー、チームプレーヤーのメンバーシップ、および特定のチームの各プレーヤーに支払うべき料金のリストです。したがって、料金はチームとプレーヤーの両方に依存します。

したがって、私の現在のアプローチは次のとおりです。

スキーマ レイアウト ERD

このスキーマでは、 はとteam_playersのジャンクション テーブルです。また、テーブルには、ジャンクション テーブルのレコードに属するレコードがあります。teamsplayersteam_player_fees

たとえば、プレーヤー A はチーム A に属しており、8 月と 2 月に 10 ドルと 20 ドルの料金が支払われます。プレーヤー A もチーム B に所属し、5 月と 6 月に支払われる料金は 25 ドルと 25 ドルです。各プレーヤー/チームの組み合わせには、異なる料金のセットを設定できます。

質問:

  • そのようなシナリオを処理するためのより良い方法はありますか?
  • このタイプの関係を表す用語はありますか? (グーグルで検索できます)または、同様の構造を持つ参照を知っていますか?
0 投票する
3 に答える
13513 参照

mongodb - MongoDB スキーマ設計 - リアルタイム チャット

私は、MongoDB が提供する速度とスケーラビリティにより、MongoDB に特に適していると思われるプロジェクトを開始しています。

私が現在興味を持っているモジュールは、リアルタイム チャットに関するものです。従来の RDBMS でこれを行う場合、次のように分割します。

  • チャネル (チャネルには多くのユーザーがいます)
  • ユーザー (ユーザーは 1 つのチャネルを持っていますが、多くのメッセージを持っています)
  • メッセージ (メッセージにはユーザーがいます)

この使用例の目的として、通常は一度に 5 つのチャネルがアクティブになり、それぞれが 1 秒あたり最大 5 つのメッセージを処理すると想定したいと思います。

高速である必要がある特定のクエリ:

  • 新しいメッセージを取得します (ブックマーク、タイム スタンプ、またはインクリメント カウンターに基づいていますか?)
  • チャンネルにメッセージを投稿する
  • ユーザーがチャネルに投稿できることを確認する

MongoDB のドキュメント制限が 4MB であることを念頭に置いて、スキーマをどのように設計しますか? あなたはどのように見えますか?気をつけるべき落とし穴はありますか?

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

mysql - バイナリ ツリーまたはツリーは、データベース内で常に 1 つのテーブルと自己参照として表すことができますか?

以前はこのルールを感じませんでしたが、バイナリ ツリーまたは任意のツリー (各ノードは多くの子を持つことができますが、子は親を指すことはできません) のようであり、このデータ構造はデータベース内の 1 つのテーブルとして表すことができます。各行には、それ自体の ID とparentID、親ノードを指す があります。

これは、実際には古典的な従業員 - マネージャーの図です。1 人の上司が多くの人をその下に置くことができます...そして、各人がn彼の下に人を置くことができます。シングルテーブルEmployee

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

sql - スキーマのない SQL データベース テーブル - 実用的な妥協点

この質問は、この質問に対する実用的な解決策を見つける試みです。

SQL データベースのセミスキーマレス設計が必要です。ただし、柔軟性を制限して、SQL パラダイム全体に押し込むことはできます。スキーマのないデータベースへの移行は、将来の選択肢になるかもしれませんが、今のところ、私は SQL にこだわっています。

SQL データベースにテーブルがあります ( と呼びましょうFoo)。これに行が追加されると、これに任意の数の「メタ」フィールドを格納できる必要があります。例としては、タグ、コラボレーターなどの任意のメタデータを添付する機能があります。すべてのフィールドはオプションですが、問題はそれらが異なるタイプであることです。数値の場合もあれば、テキストの場合もあります。

、、、などのフィールドFooを持つテーブルにリンクするシンプルなデザインは直接的に見えますが、アレックスが最後の回答で言及した EAV モデル全体に​​降りかかりかなり無駄に見えます。また、これが大きくなったときのクエリはかなり遅くなると思います。ただし、このテーブルで何かを検索したり並べ替えたりすることは期待していません。必要なのは、 から行を取得するときに、これらの追加の属性も取得できるようにすることだけです。OptionalValuesnamevalue_typevalue_stringvalue_intvalue_dateFoo

この種のセットアップを SQL データベースに実装するためのベスト プラクティスはありますか、それとも単に全体を見誤っているのでしょうか。

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

json - 空の JSON スキーマを適用する

空の JSON オブジェクトを強制する JSON スキーマが必要です。{}

これは良い考えであり、可能ですか?

次のことを試しましたが、JSON 本文に何でも入力できます。

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

language-agnostic - データベース テーブルを構成する適切な方法は? (空の列と複数のテーブル)

データベーステーブルを作成できる Widget というオブジェクトがあるとします。

ここで、ウィジェットを説明する追加の詳細のセットが 2 つあるとします。データの各セットは、別々の時間に入手できます。では、ウィジェットのライフサイクルに 3 つのフェーズがあるとしましょう...

フェーズ 1では、名前と説明を含むウィジェットを作成するだけです。

フェーズ 2では、ウィジェットの高さと重量が増加します。

フェーズ 3では、ウィジェットは配送先と送料を取得します。

上記のスキーマ (「フェーズ 3」用) は、フェーズ 1 または 2 のウィジェットのデータベース レコードがnull 値を持つことを意味します。

または、null 値を持たないスキーマを構築することもできます (ただし、ウィジェットのライフサイクルの現在のフェーズに応じて、親レコードにゼロ、1、または 2 つの子レコードが含まれる場合があります)。

これらの選択肢の 1 つが常に正しいですか? それぞれに正当な長所と短所がありますか? 答えがより多くの変数に依存する場合、それらは何ですか? どのような条件下で、1 つの代替案が明らかに好ましい選択肢となるでしょうか?

受け入れられた回答は、トピックに関する最新の信頼できる情報源を引用します。

編集:これは簡単に議論の余地があると思いますが、正当な長所と短所があり、したがって信頼できる答えが必要なトピックでもあります。この質問は単に私を悩ませたものです。なぜなら、正当化や代替案の考慮なしに両方の方法で行われたのを見たからです。現在の傾向を設定している DBA のタイプに応じて、どちらが正しいかを知りたいだけです。