問題タブ [entity-relationship]
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.
oop - OOにおける2倍の1対多の関係
これらの関係を想像してみてください。
- 1Aには多くのBがあります
- 1Bには多くのCがあります。
逆に:
- Cには1つのBがあります
- Bには1Aがあります
- 推移性により、Cは1Aを持ちます
DBでこの関係をモデル化するには、次のようにします。
OOでこの関係をモデル化するには、次のようにします。
そして...--objBはobjAへの参照を持っています-objCはobjBへの参照を持っています
objCにobjAのメソッドを呼び出す必要のあるメソッドがある場合、どうしますか?
オプション1。
私が知っている多くのpplはこれを行うでしょうが、getA()は純粋なOOの意味でのBの動作ではないため、これは良くないことも学びました。そうすることは、手続き型プログラミングを行うのと同じです。同意する同意しません?
オプション2。
コンストラクターインジェクション/セッターを介してobjCがobjAとobjBを直接参照するようにします
これは良い考えですか?しかし、objCが参照しているobjBもobjAを参照しています。これで大丈夫ですか?または、循環オブジェクト参照の場合でない限り、それは許容されますか?
オプション3。
問題のメソッドをobjAに移動し、パラメーターでobjCを渡します。
これがオプションと見なされるかどうかはわかりません。すべての場合に機能するとは限りません。objCのメソッドを、その状態でのみ機能する最小限に減らし、objAが前後に実行する必要があることをすべて実行するようにします。
オプション4. (委任)
runMethodXinA()をBに追加すると、
Cコール
私は以前にこの方法を試しましたが、BはAと同じ数の方法を持っている可能性が高く、BとAの両方に1つの方法がない場合はDRYに違反しますか?
あなたは何ですか?他のオプションはありますか?コメント?提案?
sql-server-2005 - データベース設計の問題
サーバーおよびデータベース インベントリ用のデータベースを設計しようとしていますが、優れたデータベース設計を探しています。サーバー クラスター、スタンドアロン サーバー、およびデータベース用のテーブルがあります。データベースで次の関係を表現したいと思います。
クラスターからサーバーへの 1 対多の関係。
データベースからクラスター/サーバーへの 1 対多の関係。
難しいのは 2 番目の関係にあります。これは、クラスターとサーバーが別のテーブルにあり、クラスターがサーバーで構成されているためです。この関係を表す最良の方法は何ですか?
ruby-on-rails - Railsで2から多数に移行
設計中のRailsアプリケーションがあります。1つのモデルのうち2つだけにリンクする必要がある別のモデルがあります。具体的には、私の「評価」には、2人の「メンバー」、評価者、および評価者がいます。他にもいくつかの情報がありますが、これに関連するものではありません。
これを表す最良の方法は何ですか?評価における2つの外部キーが最適でしょうか、それとも評価とメンバー間の多くの関係が最適でしょうか?さらにうまく機能する他のオプションはありますか?
最初は多対多だと思いますが、関係の片側に定義された数があるので、ここでの適用性に疑問を持っています。私の知る限り、多対多は一般に、関係の両側の数が可変であることを意味します。
sql - ASP.Net MVC アプリで最終更新日を自動的に更新する
一般的な情報:
ASP.NET MVC アプリ
ADO.NET Entity Framework の使用
SQL Server 2005
ほとんどが一対多の関係の階層構造を多かれ少なかれ持っているいくつかのテーブルがあります。それらのすべてではないにしても、ほとんどに Last Modified 列があり、私の質問は、この列が階層全体で適切に更新されるようにするための最善の方法です。データベースレベルで自動的に実行したいのですが、方法がわかりません。ある同僚は、トリガーについて言及すると同時に、トリガーは最善の方法ではない可能性があると述べました。モデルの管理に使用しているクラス内でこれを行うべきか、データベース レベルで行うべきかわかりません。各参照を個別に更新し続けるのは面倒なので、レベルごとに個別の関数を多数作成する必要があるため、これは避けたいと思います。
私の質問は次のとおりです。
呼び出すことができるストアド プロシージャを使用して、データベース レベルでこれを行う方法はありますか?
そうでない場合、これをプログラムで最適に処理するために、アプリケーション側で何をすることをお勧めしますか?
さらに情報が役立つ場合は、喜んで提供します。この質問をする方法を理解するのに苦労しました.
entity-framework - ADO.NET Entity Framework UpdateException に関するヘルプが必要
私は自分のデータベースに連絡先テーブルと電話テーブルを持っています。電話テーブルには、連絡先への電話を参照するキーを持つ列「ContactId」があります。
サーバーのキー オプションで、削除オプションを「カスケード」に設定しました。
コンテキストを使用して連絡先を削除しようとすると:
上記のステートメントは UpdateException をスローし、ContactId 列がその ID に設定されている Phone レコードがまだ Contact にあることを知らせます。
これで、手動で行うことができ、最初に関連するすべての電話を削除してから連絡先を削除できることがわかりましたが、より効率的な方法を探しています。これをすべて自動的に行う必要があります。
どんな提案や実践も歓迎します。
ありがとう。
domain-driven-design - ドメイン駆動設計を念頭に置いて、役割/関係をどのようにモデル化しますか?
Project、ProjectRole、Person という 3 つのエンティティがあり、Person が異なるプロジェクトのメンバーになり、異なるプロジェクト ロール (「プロジェクト リーダー」や「プロジェクト メンバー」など) になることができる場合、そのような関係をどのようにモデル化しますか? ?
データベースには、現在、次のテーブルがあります: Project、Person、ProjectRole Project_Person、PersonId と ProjectId を PK、ProjectRoleId を FK Relationship として持ちます。
私が思いついたすべてのドメインモデルが「DDD」ルールに違反しているように見えるので、ここで本当に途方に暮れています。この問題の「基準」はありますか?
合理化されたオブジェクト モデリングを見てみたところ、Project と ProjectMember がどのように見えるかの例がありますが、Project の AddProjectMember() は ProjectMember.AddProject() を呼び出します。したがって、Project には ProjectMembers のリストがあり、返される各 ProjectMember には Project への参照があります。私には少し複雑に見えます。
アップデート
この件について詳しく読んだ後、次のことを試してみます:私のドメイン内には、特定の役割タイプの個別の役割、またはより適切にはモデル関係があります。たとえば、ProjectMember は、プロジェクト内で Person が果たす関係について何かを伝える明確な役割です。これには、果たす役割について詳しく説明する ProjectMembershipType が含まれています。プロジェクト内で人が役割を果たさなければならないことは確かにわかっているので、その関係をモデル化します。
ProjectMembershipTypes は、作成および変更できます。これらは、「プロジェクト リーダー」、「開発者」、「外部アドバイザー」などです。
人はプロジェクト内で多くの役割を持つことができ、これらの役割は特定の日付で開始および終了できます。このような関係は、クラス ProjectMember によってモデル化されます。
ProjectMembershipType: すなわち。「プロジェクトマネージャー」「開発者」「アドバイザー」
language-agnostic - DB 設計: 抽象化または外部キー制約を優先しますか?
次のシナリオがあるとします。
この場合、3 つのエンティティすべてに基本的に同じフィールドがあります。
- ID
- 名前
- 対応する子 (Artist to Album および Album to Track) に対する 1 対多の関係の外部
提供されたソリューションの典型的なソリューションは、同じフィールド (ArtistID、AlbumID など) と 1 対多の関係フィールドの外部キー制約を持つ 3 つのテーブルです。
しかし、この場合、同じフィールドの繰り返しを避けるために継承の形式を組み込むことはできますか? 私は次のようなことを話している:
上記のデザインについてどう思いますか?この DB シナリオに「OOP の概念」を組み込むことは理にかなっていますか?
そして最後に、最初のシナリオの外部キー制約を使用することを好みますか、それともより一般的なシナリオを使用することをお勧めしますか?アルバム)アプローチ?
..ところで、考えてみると、Artist の RelField の入力値が Album に対応しているかどうかをトリガーで実際に確認できると思いますか?
sql - 制約を一時的にオフにする(MS SQL)
すべてのDBの制約(テーブルの関係など)を一時的にオフにする方法を探しています。
あるDBのテーブルを別のDBに(INSERTを使用して)コピーする必要があります。コマンドを適切な順序で実行することで(関係を壊さないように)それを達成できることを私は知っています。
ただし、制約のチェックを一時的にオフにして、操作の終了後にオンに戻すことができれば、より簡単になります。
これは可能ですか?
linq - Linq からエンティティへの自己参照関係のマッピング
LinqToEntity を使用して、ParenCategoryId という自己参照を持つ主キーとして Id を持つカテゴリというテーブルをどのようにマップしますか?
entity-relationship - 第 3 正規形に関する質問
次の表:
State は主キー (EmpId) に推移的に依存するため、第 3 正規形ではありません。
したがって、次のように分割すると: (EmpId,State) (State,PIN)
3NFです。
(EmpId,State) (EmpId,PIN) のように分割することもでき、再び 3NF になります。
しかし、2 番目のケースでは、情報の冗長性があります。
2 番目の分解が違反するプロパティはどれですか?