2010-05-12 5 views
0

고객 주문을 추적하는 시스템을 구축 중입니다. 각 주문에는 3 개의 주소가 있습니다. 주 연락처 주소, 청구서 수신 주소 및 배송 주소가 포함됩니다. 세 가지 주소에 대한 주문 테이블에 열을 갖고 싶지 않습니다. 별도의 테이블에서 참조하고 항목을 열거하는 방법을 사용하여 주소 지정이 주, 배송 또는 청구인지 확인할 수 있습니다. AddressType에 대한 주소 테이블에 열을 만들고이를 열거하거나 다른 테이블 (AddressTypes)을 작성하여 주소 열거 및 해당 테이블에 대한 링크를 정의하는 것이 합리적입니까?CakePHP에서 여러 주소로 고객을 처리하는 방법

이 주제를 다룬 다른 질문을 찾았습니다. 여기에서 필자의 모델을 살펴 보았습니다. 내가 겪고있는 문제는 그것을 cakePHP 컨벤션으로 가져가는 것입니다. 저는 BelongsTo 관계가 형성되는 방향을 내면화하기 위해 고심하고 있습니다 - 문서가 나에게 느낀 느낌.

도움이 되셨다면

감사합니다.

+0

나는'belongsTo' 관계의 극성이 룩업 테이블의 경우에 어색하고 반대로 느껴진다는 것에 동의합니다 (당신이 말하는 것과'address_types' 테이블). 'Address'는 실제로 자연어로'AddressType'을'belongsTo'하지 않지만, 그것을 지나칠 수 있었던 충분한 기술적 감각을 만듭니다. 그것은 이상한 장소였습니다.하지만 그것은 학습 곡선이었습니다. –

답변

0

표 : address_types (ID, 이름, 활성)

표 2 : 고객 (ID, 이름, 활성, 등)

표 3 : 주소 (아이디, address_type_id, CUSTOMER_ID, 국가, 도시, 거리 등)

고객은 원하는만큼 주소를 보유 할 수 있습니다. 새 주소 유형을 추가해야하는 경우 고객 또는 주소 테이블을 변경하면 안됩니다.

+0

현재 사용중인 주소를 나타내는 활성 열이 있습니까? – Ryan

+0

선택적 '활성'열은 현재 유효 (폐기 됨) 인 주소 유형을 나타내는 부울 값입니다. F.ex., 응용 프로그램에서 더 이상 '직장 주소'유형을 사용하지 않으려는 경우 데이터베이스에서 삭제하지 않으려는 해당 주소 유형에 해당하는 레코드가 있습니다. – bancer

1

당신이 자리에 있습니다. 데이터베이스를 어느 정도 정규화 할 것인지에 따라 둘 중 하나를 수행 할 수 있습니다. 개인적으로 저에게 AddressType 모델을 사용하면 원하는대로 주소 유형을 추가하고 제거 할 수있는 유연성을 얻을 수 있습니다.

더 간단하게하려면 주소 모델에 ENUM() 필드를 입력하면됩니다.

1

저는 실제 관계 유형으로 hasOne, hasMany 및 hasAndBelongsToMany를 선호합니다.

belongsTo 관계는 단순히 이전 2 개 (hasOne/Many)의 역순을 수행하는 것입니다.

this diagram을 보면 hasOne/belongsTo와 hasMany/belongsTo의 조합을 알 수 있습니다.

또한 "belongsTo"는 외래 키를 저장하는 모델입니다 (예 : address_type_id).

따라서 AddressType hasMany Address (즉, 많은 홈 주소를 가질 수 있음) 이후 Address belongsTo AddressType (즉, 각 주소는 address_type_id이 필요함).

관련 문제