2017-02-22 1 views
0

간단한 소매 체인 유형 데이터베이스 모델의 ER 다이어그램을 만들려고합니다. 고객, 다양한 상점, 재고품 등이 있습니다.ER 및 DB에 저장되지 않은 엔터티를 나타내는 모델

첫 번째 질문은 매장에 주문하는 고객을 나타내는 방법입니다. 고객이 할인 카드 소지자 인 경우, 회사는 이름, 주소 등을 가지고 있으므로 cardHolder 엔티티를 주문 관계로 항목 및 상점에 연결할 수 있습니다. 그러나 실제로 데이터베이스의 엔티티가 아닌 고객이 내린 주문을 어떻게 표현합니까?

두 번째로 ER 다이어그램에 표현 된 조건부 항목은 어떻습니까? 자동차 판매점에서 고객은 자동차를 구입할 때 하나 이상의 선택 품목을 선택할 수 있습니다. 나는 거기에 관련 속성과 다중 값 속성으로 옵션을 가진 자동차 엔티티가 있다고 생각하지만, 당신은 사용자가 그 옵션을 선택 나타낼 수 있습니다 (즉, 주문 테이블은 차 주문, 엑스트라 선택 및 엑스트라의 추가 비용을 보여줍니다) 순서 관계에?

답변

0

먼저 고객을 별개의 개체로 모델링해야합니까? 아니면 주문, 지불 및 배송 세부 정보 만 필요합니까? 많은 소매 시스템은 개인 고객을 추적하지 않습니다. SSN이나 할인 카드 번호와 같은 속성을 식별 할 때 대리 키와 고유 한 제약 조건이있는 고객 테이블을 사용할 수 있습니다 (이러한 속성이 선택 사항 인 경우에도). 사람들에게 이상적인 자연 키가 없기 때문에 고객 테이블에서 중복을 방지하는 것이 일반적으로 어렵습니다. 따라서 이것이 정말로 필요한지 여부를 고려하십시오.

옵션 부가 기능을 모델하는 방법은 사용하는 기기에 따라 다릅니다. 일부 추가 기능은 제조업체 또는 모델에 따라 다를 수 있습니다 (예 : 특정 색상 또는 수동/자동 변속기의 선택. 연장 보증이 전면적으로 제공 될 수 있습니다.

여기에 자동차 관련 옵션 엑스트라의 예 : 사람들이 집계 쿼리를 통해 계산 될 수 있기 때문에

car (car_id PK, make, model, color, vin, price, ...) 
car_extras (extra_id PK, car_id FK, option_name, price) 
order (order_id PK, date_time, car_id FK, customer_id FK, payment_id FK, discount) 
order_extras (order_id PK/FK, car_id FK, extra_id PK/FK) 

내가 가격 합계를 제외. 내 예에서

, order_extras.car_idcar_optional_extras의 해당 열이 연결되는 잘못된 엑스트라를 방지하기 위해 (즉, (order_id, car_id) 참조 해당 열 order, 그리고 (car_id, extra_id) 참조 중복이지만, 복합 FK 제약의 사용을 통해 더 나은 무결성을 지원합니다 주문). 당신이 고객의 두 종류 확실히있을 수 있습니다 당신의 생각에 따라,

Car orders with optional extras ER diagram

0

첫째 :

다음은 위의 표에 대한 ER 다이어그램입니다. 회사와 관련된 세부 정보가있는 할인 카드 소지자 및 회사에서 세부 정보가 제공되지 않는 신규 고객.

당신이 시도하고있는 무슨 달성하기 위해 세 가지 방법, 1) 시스템의 두 개의 서로 다른 순서 표 (저는 개인적으로 제안하지 것이다) 2) 시스템에 하나의 주문 테이블을 가지고이 있고을 받고 있습니다 할인 카드 소지자의 세부 정보. 3) 시스템에 주문 테이블이 하나 뿐인 신규/미등록 고객을 위해 할인 카드 소지자 테이블에 행을 삽입하십시오.

단일 주문 표를 사용하면 시스템이 표준화되고 많은 다른 작업을 수행하는 동안보다 편리해질 것입니다.

둘째, 우려를 해결하려면 정규화를 수행해야합니다. 직면 한 현재 문제를 줄이고 시스템을 무상으로 만들 것이며 엔티티가 가벼워 져서 커질 때 성능에 직접 영향을 미칩니다.

외래 키를 사용하여 청구서를 생성 할 때 추가 항목을 고객에 대해 순서대로 나열 할 수 있습니다. 키를 처리하면 여러 위치에 중복/반복 세부 정보를 저장하는 대신 빠르고 강력하게 결과를 얻을 수 있습니다.

정규화를 수행하면 문제 또는 오류를 피하기 위해 데이터를 참조 할 때마다 외래 키를 적용하여 문제를 처리 할 수 ​​있습니다.

NF 4가 더 좋을 것입니다. 정규화를 시작하려면 다음 링크를 살펴보십시오.

http://www.w3schools.in/dbms/database-normalization/

관련 문제