이것은 제가 만족 스러웠던 해결책을 찾지 못했던 고전적인 문제입니다. 이 문제에 대한 OO 우아하고 DB 확장 가능한 접근 방식으로 간주 될 수있는 것은 무엇입니까?일대 다 구성 및 데이터 검색
Employee
- Name, Phone, Meta, etc
Company
- Meta, etc
- Employee[]
CompanyRepository (RDMBS)
- Company GetById(int)
- Company[] GetAll()
접근 # 1 : 'GetById'모두 선택에서 'tCompany'왼쪽 '은 tEmployee'를 결합한다. Sql Select는 12 행을 산출합니다. 12 명의 직원이 거주하는 단일 회사를 반환합니다.
'GetAll'같음 위와 동일하게 선택하지만 12,000,000 개의 행을 반환합니다. 창조적 인 루프와 논리를 통해 100 만 명의 기업에 12 명의 직원이 있습니다.
접근법 # 2 : 'GetById'...
상기와 같은 'GETALL'. 'tCompany'에서 모두 선택하지만 'tEmployee'에서는 선택하지 않습니다. Sql select는 1,000,000 개의 행을 산출합니다. 1,000,000 개의 회사를 반환하지만 각각 '직원'속성이 없습니다. 3
접근 # 1 ... 'SimpleCompany'만을 함유하고 메타 'SimpleCompany'상속하지만 임직원 '속성이'ComplexCompany '로 영역을 분할. GetById는 'ComplexCompany'를 반환하고 GetAll은 'SimpleCompany'배열을 반환합니다.
... 각기 다른 이유로 냄새가납니다.