問題タブ [data-modeling]

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 に答える
201 参照

sql - スケーラブルなデータベース システム、批評を要求

Web サイトのバックエンド用にスケーラブルなデータベース ソリューションを構築したいと考えています。最近、データベースの設計について読んでいて、うまくいくかもしれないアイデアを自分で開発したようです。これは同期されたデータで n 個のデータベースを維持する斬新な方法だと思いますが、間違っている可能性があります。だから私はSOにアイデアを評価して、それがクレイジーかどうか教えてくれるように頼んでいます. (または、既に存在し、実装されている場合)

このスキームには、サーバーノードのグループがあります。1 つのノードはクエリ ロード バランサを実行し (これをAと呼びましょう)、残りは一般的な dbms を実行しています。これらのノードをまとめてNと呼びましょう。

各 N は他から切り離されています。つまり、Nのノードは他のノードと通信する必要はありません。各NはAのみに接続されます。

プロセスは次のように機能します

  • すべてのデータベース クエリはAを介して渡されます。(ここでは、 Aが無限のスループットと処理能力を持っていると仮定しましょう)
  • Aは各クエリ ( Q ) を検査し、それがデータベースから読み取る操作か、データベースに書き込むクエリかを判断します。(SQL では、読み取りは選択になり、書き込みは更新になります)
  • Q読み取り操作の場合、 N内のノードの1 つに転送します
  • Q書き込み操作の場合、それをNのすべてのノードに転送します

適切に実装されていると仮定すると、これにより、N内のすべてのノードが同期されたデータベース コンテンツを持つことになります。データの読み取りのみを行うクエリは、1 つのノードに送信する必要があります。

私のシステムでは書き込み操作が非常に少なく、1% 未満であるため、このアイデアは特にうまく機能しているようです。

このアイデアについていくつか質問があります

  • このようなスキームは、理論的な観点から理にかなっていますか?
  • これが理にかなっている場合、商用または無料のソリューションが既に実装されていますか?
0 投票する
4 に答える
2070 参照

domain-driven-design - ドメイン モデルの設計

この単純な例のドメイン モデルをどのように作成しますか? レシピには多くの材料を含めることができ、材料は多くのレシピで使用できます。各レシピで使用される各材料の量も保存されます。このデータと関係を格納するために、次の 3 つのデータベース テーブルを設計しました。

これを表すドメイン モデルを作成しようとしています。2 つのクラスを持つ基本的な例があります。その後、新しい素材を作ろうと考えたときに、このモデルで問題が発生しました。数量プロパティのないクラスが必要です。これをどのようにモデル化する必要がありますか?

データベース テーブル

代替テキスト http://img190.imageshack.us/img190/340/databasex.png

ドメイン モデル

代替テキスト http://img24.imageshack.us/img24/8859/classesy.png

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

sql - データベースエントリをモデル化する図

データベースのエントリを示す図を知っていますか?UMLのオブジェクト図のようなものだと思います。実体関連モデルがあることは知っていますが、データベースの既存のエントリは表示されません。

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

sql-server - db スキーマについて教えてください。

シンプルなブログ アプリを作成しています。これまでのところ、投稿、コメント、作成者の 3 つのテーブルがあります。

各テーブルの主キーと外部キーをリストします。

投稿には主キーとして postid が含まれます。

コメントには、commentid が主キーとして含まれ、postid が外部キーとして含まれます。

投稿は、コメントと 0 対多の関係にあります。

作成者には主キーとして authorid が含まれます。

作成者は、投稿と多対多の関係を持ち、コメントと多対多の関係を持ちます。

最後のステートメントは、私が最も問題を抱えているところです。著者は実際に投稿やコメントと多対多の関係を持っているのでしょうか、それとも 1 対 1 なのでしょうか。多対多の場合、投稿の作成者とコメントの作成者の関係を説明する中間テーブルを作成することをお勧めしますが、このテーブルでどのキーを使用すればよいかわかりません。

著者は多くの投稿を書くことができ、一人の著者で多くの投稿を書くことができると口頭で表現すると、1対多と見なされますが、投稿などのテーブルに格納された実際のデータから見ると、複数の投稿が含まれます投稿と作成者には複数の作成者が含まれる場合、多対多のように見えます。これが、重複を削除するための相互参照テーブルの目的です。

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

sql - レコードの変更時に異なる場所 (テーブル) で複数の情報を更新する方法は?

これは SO メタの質問ではありません。私はSOを例としてのみ使用しています。

StackoverFlow では、各回答、各コメント、各質問、各投票には、ある時点でバッジを生成する効果があります。つまり、すべてのアクションの後、クエリのリストがテストされます。

たとえば、A氏が賛成票を投じた場合、B氏は回答します。したがって、このB氏の回答が100回賛成票を投じられているかどうかを確認する必要があるため、B氏にバッジを与え、A氏が100回賛成票を投じたので、彼にバッジを与えます。

これは、アクションごとに少なくとも 100 個のクエリ/IfElse を実行する必要があることを意味します。

私の実際の例は、出席マシンからオンライン データを受信するアプリケーションを持っていることです。ユーザーが自分のカードを機械に見せたとき。これを受け取り、記録として保管します。この記録に基づいて、私は複数の計算を行いました。つまり、彼は遅れていますか。彼は3日続けて遅刻していますか。彼は右シフト(日勤/夜勤)ですか?今日は休み。これは残業ですか。彼は早いですか.......etc.,etc.,etc.

この種の要件に最適な戦略は何ですか。

更新: SO チームはこれについて私たちを案内できますか?

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

database-design - データベース内のアドレスを最もよく表す方法

重複の可能性:
世界のすべての住所に共通の番地データベース設計はありますか?
国際住所をデータベースに保存するための「最良の」方法は何ですか?
データベース内の一貫性のある包括的なアドレスストレージのベストプラクティス

現在、Customers、Contacts、Facilities、Clientsの4つのテーブルがあります。

これらの各テーブルには、AddressLine1、AddressLine2、City、StateOrProvince、PostalCodeの各フィールドがあります。

アドレスを別のテーブルに移動し、アドレスのタイプ(請求、配送、メインなど)も指定できるようにしたいと思います。

私の解決策は次のとおりです。

  1. AddressLine1、AddressLine2、City、StateOrProvince、PostalCodeを顧客、連絡先、施設、およびクライアントから削除します。
  2. フィールドAddressID(PK)、AddressLine1、AddressLine2、City、StateOrProvince、PostalCode、LastUpdateUser、LastUpdateTimeを使用してAddressesテーブルを作成します。
  3. フィールドAddressTypeID、AddressTypeName、AddressTypeDescription、AddressTypeActive、LastUpdateUser、LastUpdateTimeを使用してAddressTypesテーブルを作成します
  4. フィールドCustomerID、AddressID、AddressTypeID、CustomerAddressActive、LastUpdateUser、LastUpdateTimeを使用してCustomerAddressesテーブルを作成します
  5. ClientID、AddressID、AddressTypeID、ClientAddressActive、LastUpdateUser、LastUpdateTimeのフィールドを持つClientAddressesテーブルを作成します
  6. ContactID、AddressID、AddressTypeID、ContactAddressActive、LastUpdateUser、LastUpdateTimeのフィールドを持つContactAddressesテーブルを作成します
  7. フィールドFacilityID、AddressID、AddressTypeID、FacilityAddressActive、LastUpdateUser、LastUpdateTimeを含むFacilityAddressesテーブルを作成します

私が考案したものよりも良い解決策があるかどうかを判断するためのガイダンスを探しています。なぜ誰もが考えるのですか?

編集:私はこの時点で米国外では何も気にせず、番地を保存する方法、つまり番地と番地全体の関係も気にしません。私はデータベース設計とテーブル構造の観点から懸念しています。

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

sql - Positive or negative boolean field names

A table's boolean fields can be named using the positive vs the negative...

for example, calling a field:

#xA;

Question: Is there a proper way to make this type of table design decision, or is it arbitrary?


My specific example is a messages table with a bool field (private/public). This field will be set using a form checkbox when a user enters a new message. Is there a benefit in naming the field "public" vs "private"?

thanks.

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

sql - データベース設計:worker->superior関係を実装する

私は現在ホテルのウェブサイトを開発しています。そして、私が実装しようとしていることの1つは、ワーカー->優れた関係です。MySQLでこれを行うための最良の方法は何ですか?

つまり、シェフの上司は料理長、料理長の上司はシフトマネージャー、シフトマネージャーの上司は総支配人です。従業員テーブルでは、上位従業員のIDを使用してフィールドを上位にすることはできますが、その場合、上位/上位の役割を1つしか取得できません。さらに重要なことに、マネージャーが特定のホテルで管理しているすべての従業員のリストを取得することはできません。

これについてアドバイスが必要です。

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

sql - MySQL でリンクされたテーブル全体に UNIQUE を実装する

USER は PERSON で、PERSON には COMPANY があります - user -> person は 1 対 1、person -> company は多対 1 です。

person_id は USER テーブルの FK です。company_id は PERSON テーブルの FK です。

PERSON は USER ではないかもしれませんが、USER は常に PERSON です。

company_id が user テーブルにある場合、username と company_id に基づいて一意のキーを作成できますが、そうではなく、データの複製になります。

現在、RoseDB マネージャー ラッパー コードで一意のユーザー名/会社 ID ルールを実装していますが、それは間違っているように感じます。可能であれば、DB レベルで独自のルールを定義したいのですが、どのようにアプローチすればよいかわかりません。私はこのようなことを試しました:

しかし、それはうまくいきません。

ドキュメントを読んでも、少しでも似たようなことをする例が見つかりません。存在しない機能を追加しようとしていますか、それとも何か不足していますか?