1

この状況をモデル化するのに問題があります。ロケーションベースのクーポンシステムを設計しています。ユーザーは、ゾーンとオファーを定義してから、各オファーを複数のゾーンに関連付けることができます。また、各ゾーンは複数のオファーを持つことができます。そのため、ゾーンとオファーには多対多の関係があります。ユーザー エンティティは両方のエンティティを所有します。ゾーンとオファーは、同じユーザーが両方を所有している場合にのみ関連付けることができます。図は非常に役立ちます。ありがとう。

4

2 に答える 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 に答える