この状況をモデル化するのに問題があります。ロケーションベースのクーポンシステムを設計しています。ユーザーは、ゾーンとオファーを定義してから、各オファーを複数のゾーンに関連付けることができます。また、各ゾーンは複数のオファーを持つことができます。そのため、ゾーンとオファーには多対多の関係があります。ユーザー エンティティは両方のエンティティを所有します。ゾーンとオファーは、同じユーザーが両方を所有している場合にのみ関連付けることができます。図は非常に役立ちます。ありがとう。
質問する
945 次
2 に答える
2
ゾーンとオファーが実際に接続されているかどうかに関係なく、ユーザーがゾーンとオファーを所有できると仮定すると、次のようなことができます。
これは、ひし形の下部が両方のひし形の側面で同じひし形の上部を参照しなければならないという、ひし形の依存関係の古典的な問題です。 ZONE_OFFER.USER_ID の前の FK2)。
外部の理由がある場合は、いつでもこのモデルに (代理?) キーを追加できますが、この基本構造は、同じユーザーのゾーンとオファーのみを接続できるようにするために、何らかの形で存在する必要があります。
于 2013-08-10T16:53:58.247 に答える
0
データベースモデルは次のとおりです。
Tbl_Zone
id_Zone not null
id_User not null
zoneDescription not null
....
Tbl_Offer
id_Offer not mull
id_User not null
offerDescription not null
....
Tbl_ZoneOffer
id_ZoneOffer
id_Zone not null
id_Offer not null
ユーザーのルールに戻ると、これはビジネス ロジックの一部となり、テーブルが表示される前にフィルター処理されます。
SELECT * FROM Tbl_Zone WHERE id_User = myUserIdentifier
SELECT * FROM Tbl_Offer WHERE id_User = myUserIdentifier
ゾーンごとに利用可能なオファーのリストについては、次のとおりです。
SELECT zoneDescription, offerDescription FROM Tbl_ZoneOffer
INNER JOIN Tbl_Zone on Tbl_ZoneOffer.id_Zone = Tbl_Zone.id_Zone
INNER JOIN Tbl_Offer on Tbl_ZoneOffer.id_Offer = Tbl_Offer.id_Offer
WHERE Tbl_Zone.id_User = myUserIdentifier
于 2013-08-09T14:08:05.193 に答える