2017-09-17 4 views
0

나는 그것이 구매를위한 많은 서비스를 가지고 사이트를 만들고, 내 문제는이 구조에 대한 ERD를 만드는 가장 좋은 방법을 찾을 수 있습니다!외래 키에서 여러 서비스를 처리하는 데이터베이스 구조를 만드는 방법은 무엇입니까?

나는 이미지에서 보여주기 때문에 사용자를위한 계약을 맺기위한 일상적인 시스템을 가지고있다. 다른 말로하면 사용자와 회원을위한 계약과 관계 정보를 삽입하기위한 간단한 테이블이있다.

계약 테이블의 모든 관계는 접합부 테이블에 저장됩니다. 내 문제는 내가 다른 환경에서 계산 한 다른 가격의 서비스가 있다는 것입니다. (FirstServicePrice, SecoundServicePrice, ThirthServicePrice ...).

계약 용으로 각 서비스 기본을 유지하기 위해 JunctionForFindPrice라는 이름으로 junction을 사용하기로 결정했습니다. 누군가가 첫 번째 서비스를 구입하면 예를 들어, FirstServicePriceId 필드의 JunctionForFindPrice 테이블에서 FirstServicePrice ID 만 유지하고 다른 필드는 null로두고 JunctionForFindPrice의 ID를 정션 테이블 (그림의 회색 테이블)에 저장합니다.

이 구현을위한 최선의 방법은 무엇입니까? 그것은 길을 currect입니까?

figure

+0

Google의 stackoverflow 데이터베이스/sql/table 하위 유형 지정 (다형성/계층 구조) 및 re 테이블/열 유형 태그/변형이 포함 된 FK. 여러 개의 FK 열은 일반적으로 반 패턴입니다. Google은 여러/여러/2 개의 테이블 및 여러/많은/2 개의 독점 FK에 FK를 적용합니다. 이와 같이 이것은 자주 묻는 질문입니다. – philipxy

답변

1

이 모두가 조금 다르게 않기 때문에 응용 프로그램 수만큼의 가격 스키마, 그래서 걱정하지 마세요 : 우리는 모두 "오른쪽"방법이 작업을 수행하는 방법에 의해 혼동 한 . 일반적으로 [ClientID], [DateOrdered] 및 [OrderedBy]와 같은 필드와 [Order]와 같은 테이블을 만들고 주문 및 가격에 추가하는 각 [ServiceID]가 포함 된 다른 테이블 [OrderLineItems]을 만듭니다. 그 서비스는 숫자 ($ 23.99)로 저장됩니다. 가격 접합 테이블 대신 OrderLineItems 테이블에 추가 될 때 해당 서비스에 대한 클라이언트의 가격을 판별하는 함수 또는 저장 프로시 듀어가 있어야합니다.

내 기본 응용 프로그램에는 시작/종료 날짜가있는 각 서비스에 대한 "표준 가격"표가 있습니다. 그러면 향후 가격 인상을 설정할 수 있습니다. 그런 다음 세 가지 유형의 할인, 새 가격 설정, x % 할인 또는 x $ 할인을 허용하는 할인 가능한 표가 있습니다. '할인'은 고객에게 더 많은 비용을 청구하려는 경우 부정적 일 수 있습니다. 이것은 매우 유연한 가격 책정 구조를 만들지 만 모든 것을 파악하는 코드는 매우 복잡하고 부서지기 쉽습니다. enter image description here

+0

답변 해 주셔서 감사합니다. 그건 좋은 생각이야! 가격표를 분리하고 내 주문서에 최종 계산 된 가격을 삽입하는 것이 좋습니다 .LineItem? 이 솔루션을 사용하는 ERD를 보여 주시겠습니까? – Mohammad

+0

예, 그 당시 가격이 해당 인보이스에 불멸화 되었기 때문에 권하고 싶습니다. 그렇지 않으면 가격 모델이 변경되어 다시 되돌아 갈 필요가있는 경우 (인보이스 재 작성), 대량 할인, 쿠폰 조정과 함께 해당 시간의 정확한 가격을 가져야합니다 , 최초 사용자 크레디트, 등등. 내가 ERD가 주위에 거짓말을하면 볼 수 있습니다 ... –

+0

고마워요. :) – Mohammad