2017-05-17 4 views
1

저는 데이터베이스에서 작업 중이고 관계 중 하나에 문제가 있습니다. 저는 Person 엔티티와 Address 엔티티가 있으며 Person과 Address간에 OneToMany 관계가 있습니다. 주소 엔티티를 정규화하려고합니다. 동일한 주소를 가진 사람이 여러 명인 경우 데이터베이스에 하나의 주소 만 있습니다.symfony doctrine 데이터베이스 정규화

사람 : 1 : {ID : 1, 이름 : "foo는"address_id : 1}

사람 2 : {ID : 2, 이름 : "바", address_id : 1 여기 시각화 }

주소 1 : {ID : 1, 거리 "barstreet", housenumber : 123}

나는 사람이이기 때문에 주소를 변경하려면 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 당신이 첫 번째 예제를 의미합니까 실은 각각의 관계에 대해 하나 대신 하나의 주소가 2 개 있습니다 – nusje2000

답변

2

데이터베이스의 구조가 정상적으로 보입니다. 은 if

  1. 확인 : 난 당신이 같은 주소 : 당신은 사람의 주소를 업데이트해야하는 경우

    , 나는 다음 흐름을 할 것입니다에 살고있는 많은 사람들과 사례를 가지고 있다고 가정 제공된 거리 번호가있는 주소, 하우스 등이 데이터베이스에 있습니다.

  2. 이고 데이터베이스가 인 경우 해당 주소와 연결합니다.
  3. 이고 데이터베이스가 인 경우 새 주소를 만들어 해당 사람에게 추가해야합니다.
+0

다른 사람이 이미 사용하고있는 사람의 주소를 변경하면 어떻게해야하는지 생각합니다. – Cerad

+0

예, 알고 있습니다 :) 주소가 다른 사용자에 의해 사용되는지 여부와 상관없이 - 내가 의미하는 것을 알고있는 경우 두 가지 방법 중 하나를 같은 장소에서 처리해야합니다 ....희망은 내가 분명했다 :) – Daniella

+0

사실 내 질문은 어디에 논리를 작성해야합니다 – nusje2000