2014-07-08 1 views
-2

이의 내가 3 개 수업을 가정 해 봅시다. 예 :여러 개의 관련없는 클래스에서 클래스 속성을 다시 만들어야한다는 것을 알고 있습니다. 내 방법론이 잘못 되었나요?</p> <p><strong>사용자</strong></p> <p><strong>건물</strong></p> <p><strong>자동차 이들 각각은 자신의 관련 속성이 있습니다</strong></p> <p>:

사용자는 이름, 나이,
건물 나이, 객실을 보유하고 이메일, 자동차 브랜드, 석
이의 내가 관계를 저장하는 데이터베이스 있다고 가정 해 봅시다


을 top_speed fire_alarm있다 사용자와 건물, 그리고 사용자와 자동차 사이. 내 건물 클래스에서

save_building 방법은 USER_ID이 필요합니다.

여기에는 두 가지 선택 사항이 있습니다.

1) 나도 중복 및 깨지기 건물 클래스의 USER_ID 속성을 (다시 만들고 너무 자동차 클래스에서 중복) 또는
2) 될 필요가있다 사용자 객체를 직접 참조하고 user_id을 얻을 수 있습니다.

이 두 가지 중 어느 쪽도 '올바른 것'으로 보이지 않습니다.

속성을 설정하면 유효성을 검사 한 다음 해당 유효성 검사의 오류를 객체 자체에 저장합니다. 옵션 을 사용하는 경우 작업하는 객체를 확인하지 않고 save_building 메서드를 진행하기 전에 다른 객체에서 오류를 확인해야합니다.

옵션 이 올바른 방법입니까, 아니면 입니까?

편집 :

user_buildings : USER_ID를
user_cars을 BUILDING_ID : 명확하게하기 위해, 데이터베이스 관계 테이블은 다음과 같습니다 USER_ID,

을 car_id Edit2가 : 결국 문제는 비 개방 만들기.

+0

건물 및 자동차에 대한 owner_id 열을 추가하면 user_id ...로 매핑되거나 car.owner_name/user.name을 사용하십시오. –

+0

관계 테이블에있는 사람들이 있습니다. 나는 주로 코드면을 처리하는 방법에 대해 궁금해하고있다. – WombatCombat

+0

'save_building' 메소드가'user_id'를 필요로하는 이유는 무엇입니까? – Wio

답변

0

사용자와 건물 간의 관계를 데이터베이스에 저장해야 했으므로 클래스에 어떻게 든 명시해야합니다.객체의 관계를 설정하기 위해 객체 참조를 저장하는 것에 대해 중복되는 것은 없으므로 그렇게 생각하지 마십시오. 잠재적으로 제거 될 수있는 유일한 중복은 사용자와 건물이 서로를 가리키는 것보다 한 지점을 갖는 것입니다. 이것은 단일 링크 목록과 이중 링크 목록 중 어느 것을 사용해야하는지와 같은 문제입니다. 당신의 두 가지 옵션이 주어

, 내가 있기 때문에 사용자가 알 수없는 존재의 경우, 옵션 1을 선호하는 것입니다, 당신은 사용자가 없었던 경우 0 또는 -1이든 해당하는 정수보다 더 의미입니다 null으로 설정할 수 있습니다 데이터베이스에서 쿼리되었거나 조인되었거나 아직 관계가 없습니다.

사용자가 나열하지 않은 또 다른 옵션은 사용자와 건물 간의 관계 변화를 모른 채 save_building입니다. 어쩌면이 기능은 사용자 클래스에서만 처리해야합니다. 어쩌면이 기능을 처리하는 것이 목적 인 새로운 클래스 building-owner 클래스를 원할 수도 있습니다.

+0

어떻게 save_building 메서드를 user_id에 대해 무시할 수 있습니까? 저장 기능을 사용자 클래스로 푸시하면 반대 문제가 발생합니다. 사용자 클래스에 building_id 속성을 추가해야합니다. – WombatCombat

+0

여기에 어떤 문제가 있는지 나는 알지 못합니다. – Wio

+0

사용자 클래스에서 building_id 속성을 사용하는 것이 바람직합니까? – WombatCombat