这是一个经典问题,我似乎无法想出解决方案,我很满意。什么会被认为是面向这个问题的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'Same如上选择,但返回12,000,000行。通过创意循环和逻辑回报每个有12名员工的1,000,000家公司。
方法2: 'GetById' ......同上
'GETALL'。从'tCompany'中选择所有,但'tEmployee'中没有任何内容。 Sql select产生1,000,000行。返回1,000,000个公司,但每个公司都有一个空的'员工'属性。
方法3 ...分裂域划分为“SimpleCompany”只包含元以及从“SimpleCompany”继承,但有一个“员工”财产“ComplexCompany”。 GetById返回'ComplexCompany',GetAll返回'SimpleCompany'数组。
......由于不同的原因,每个人都闻起来不好。