2017-05-17 16 views
1

私はデータベースで作業していますが、関係の1つに問題があります。PersonエンティティとAddressエンティティがあり、PersonとAddressの間にOneToMany関係があります。 Addressエンティティを正規化したいので、同じAddressを持つPersonが複数ある場合、データベースには1つのアドレスしかありません。Symfony doctrineデータベースの正規化

人1:{ID:1、名称: "FOO"、ADDRESS_ID:1}

者2:{ID:2、名称: "バー"、ADDRESS_ID:1ここで可視であります}

住所1:{ID:1、通り: "barstreet"、housenumber:123}

私は人2であるため、アドレス1を変更したくない人1用のアドレスを変更したい場合私はこれが起こることを望みます:

人1:{ID:1、名称: "FOO"、ADDRESS_ID:2}

者2:{ID:2、名称: "バー"、ADDRESS_ID:1}

住所1 :{ID:1、通り: "barstreet"、housenumber:123}

住所2:{ID:1、通り: "bazstreet"、housenumber:5}

の最良の方法は何かこの問題を解決するには、事前に感謝します。

+0

同じ住所ですが異なる住宅番号ですか?それとも、それはタイプミスですか? – Cerad

+1

2つの可能性があり、1-nの関係にとどまり、person1のアドレスを変更すると、同じアドレスを持つ他のユーザーのために変更されます。あるいは、あなたの関係を1-1関係に変更してから、すべての人に個別の住所を設定することができます。ちょっと難しいと言われているようにそれをやりたければ、それは本当に効率的なのか分かりません。 –

+0

@ErwanHaquetあなたが最初の例を意味するかどうか実際には、1の代わりに2つのアドレスがあります。それぞれの関係に1つある – nusje2000

答えて

2

データベースの構造は正常です。 私はあなたが同じアドレスに住んでいる多くの人々との例があるとし:)

あなたは人のアドレスを更新する必要があるとき、私は次の流れをするでしょう:

  1. チェック場合指定された番地の住所、家などがデータベースに存在する。
  2. データベースに存在する場合、その人物をそのアドレスに関連付けます。
  3. データベースに存在しない場合は、新しいアドレスを作成してその人物に追加する必要があります。
+0

人がすでに他のユーザーによって使用されているアドレスを変更した場合、どうしたらよいかという疑問があると思います。 – Cerad

+0

はい、私は知っています:)アドレスが別のユーザーによって使用されている場合でも、そうでなくても - どちらの方法でも同じ意味で扱われるはずです。希望は私は明確だった:) – Daniella

+0

実際には私の質問はどこにロジックを書く必要があります – nusje2000

関連する問題