모든 주소를 자신의 테이블에 넣는 것은 매우 인기있는 아이디어처럼 보입니다. 개발자는 반복을 찾아서 제거하는 것을 좋아합니다. 그러나이 경우 대부분의 응용 프로그램과 마찬가지로 주소를 본격적인 엔터티로 취급하지 않으면 너무 복잡해지기 때문에 엔티티 상태로 주소를 위장하는 것을 주저합니다.
주소를 실제 엔터티로 처리 한 경우 두 회사가 어떻게 든 동일한 주소를 공유하거나 한 위치에 잠시 동안 거주 한 다음 다른 위치에 동일한 위치에 거주 한 경우 해당 회사는 동일한 주소를 참조하게됩니다. 응용 프로그램이 주소를 입력으로 받아 들일 때 기존 주소가 있는지 여부를 확인한 후 주소 테이블에 일부 가비지를 슬래 밍하지 않고 참조하기 때문에. 어느 쪽을 할 계획입니까?나는 그것이 슬램 하나라고 생각합니다. 왜냐하면 대부분의 비즈니스 응용 프로그램처럼 당신이 넣고있는 새 주소가 이미 데이터베이스에있는 다른 주소와 같은지 전혀 신경 쓰지 않기 때문입니다. 개별 사물로서의 주소. 이것이 개체와 고양이 음식의 차이입니다.
통합을 통해 교차 테이블을 도입하고 색인을 생성해야하며 주소가있는 모든 엔티티가 참여해야하므로 주소를 열심히 얻거나 지연로드를 사용할지 여부를 고려해야합니다. 우리는 모든 주소를 하나의 양동이에 넣고 모든 사람들이 자신의 주소로 빨리 도착할 수 있도록 노력해야합니다. 실제 엔티티의 경우 이는 서로 다른 것들이 동일한 엔티티에 연결해야하기 때문에 이해가되지만 위의 사항은 상관하지 않으며 아무도이 엔트리를 공유하지 않습니다.
어디에서 하나의 테이블에 주소를 통합하여 제거 할 것인지요? 같은 필드에 관계없이 주소는 데이터베이스에서 어딘가에서 끝날 것입니다. 우리는 공간을 절약하지 못합니다. 유일한 반복은 우리가 관리 할 수있는 스키마를 생성하는 데 사용되는 DDL에 있습니다.이 스키마는 주소 (응용 프로그램 코드의 중복성을 나타냄)에 대한 재사용 가능한 구성 요소 ("구성 요소"가 Hibernate 용어 임)를 만들고 ORM 도구를 사용하여 스키마를 생성하십시오. 아니면, 최악의 경우, 그냥 무시하고, 주소가 그렇게 많이 변경되지 않는다면, 그것은 당신의 가장 큰 문제가 아닙니다.
당신이 설명하는 이러한 요구 사항은 친구를 위해 수행하는 프로젝트에 대해 의심 스러울 정도로 기업용이라고 생각합니다. 친구의 뇌는 자신이하는 일을 모르는위원회에서 요구하는 요구 사항을 상세히 설명하기 위해 노출 과다로 중독되었을 가능성이 있습니다. 직장에서이 쓰레기를 참을 수있을 정도로 나쁘지는 않지만 개인적인 프로젝트를 위해? 얘기 해봐.
하지만 어쩌면 친구가 자신의 엔터프라이즈 작업을 아웃소싱하고 있으며 고객 당 0-N 주소가 붙어있을 수도 있습니다. 그렇다면 피해를 포함 시키십시오 : 고객 주소 전용 테이블을 작성하여 교차 테이블이 필요 없도록하고 다른 엔티티의 주소를 인라인에 넣으십시오. 주소가 하나 뿐인 엔티티가 다른 테이블에서 주소를 가져 오게되면 아무것도 조인하지 않고 더 많은 조인을 사게됩니다. 기록이 필요한 경우 기록이없는 별도의 기록 표에 기록을 기록하십시오.
가정에 대한 좋은 질문입니다. –