2013-12-03 3 views
0

나는 대학 프로젝트를 가지고 있으며, 플랜트 샵을위한 DB를 만들어야합니다.쇼핑 데이터베이스, 주문 테이블을위한 SQL

주문 표에 문제가 있습니다. 현재 고객은 한 번에 하나의 제품 만 구입할 수 있지만 실제 생활에서는 한 번에 많은 제품을 구매할 수 있습니다.

예 : 고객에게 John Doe가 있고 제품 ​​테이블에 두 개의 제품이 있습니다. 이 두 가지 이상의 제품을 가져 와서 하나의 주문 테이블에 추가하려면 어떻게합니까?

CREATE TABLE customer(
    customer_id INT(3), 
    customer_fname VARCHAR(20), 
    customer_lname VARCHAR(20), 
    customer_gender CHAR(1), 
    customer_tel VARCHAR(20), 
    customer_email VARCHAR(30), 
    customer_dateJoined DATE, 
    address_id INT(3), 

    PRIMARY KEY(customer_id), 
    INDEX(customer_id), 
    FOREIGN KEY(customer_id) REFERENCES address); 


CREATE TABLE address(
    adress_id INT(3), 
    customer_street VARCHAR(30), 
    customer_town VARCHAR(30), 
    customer_postcode CHAR(7), 

    PRIMARY KEY(address_id), 
    INDEX(address_id), 
    FOREIGN KEY(address_id) REFERENCES customer(address_id), 
    FOREIGN KEY(address_id) REFERENCES employee(address_id)); 


CREATE TABLE product(
    product_id INT(5), 
    product_name VARCHAR(20), 
    product_season VARCHAR(15), 
    product_price NUMERIC(4,2), 
    product_origin VARCHAR(15), 
    product_type VARCHAR(15), 
    product_inStock BOOLEAN, 

    PRIMARY KEY(product_id), 
    INDEX(product_id)); 


CREATE TABLE orders(
    order_id INT(3), 
    customer_id INT(3), 
    employee_id INT(3), 
    product_name VARCHAR(20), 
    quantity INT(4), 
    order_date TIMESTAMP, 

    PRIMARY KEY(order_id), 
    INDEX(order_id)); 


CREATE TABLE employee(
    employee_id INT(3), 
    employee_fname VARCHAR(20), 
    employee_lname VARCHAR(20), 
    address_id INT (3), 
    employee_pay NUMERIC(2,2), 
    employee_daysOff INT(2), 
    employee_hoursWorked INT(3), 

    PRIMARY KEY(staff_id), 
    INDEX(staff_id)); 
+2

당신이이 문제를 해결하려는 시도를 만들어 본 적이 – Milen

+0

여러 주문 라인을 추가하는'OrderDetails' 테이블을 만들? 당신이해야 할 일에 대해 알고 있습니까? – bendataclear

+0

예,이 문제를 해결하기위한 노력을 기울였습니다. 작성한 SQL 코드입니다. 나는 그것을 풀 수있는 방법을 모른다. 그러므로 나는이 질문을했다. –

답변

1

당신은 주전자 표 customer_orders을 만들 필요가이 테이블에 당신이 CUSTOMER_ID 및 ORDER_ID를 저장하고 외국 테이블 고객에게 키와 주문

로 연결 : 아래

내가 쓴 SQL 코드

처럼 :

CREATE TABLE customer_orders(
customer_id INT(3), 
order_id INT(3), 
PRIMARY KEY(customer_id,order_id), 
FOREIGN KEY(customer_id) REFERENCES customer(customer_id), 
FOREIGN KEY(order_id) REFERENCES orders(order_id); 
+0

그래서 나는 모든 주문을 담고있는 테이블을 가지고있을 것인가? ORDERS_CUSTOMER 테이블에 2 개의 행을 추가 할 고객이 2 개의 제품을 주문한다고 가정 해 보겠습니다. 하지만 나중에 ORDERS_CUSTOMER 테이블에 3 개의 행을 추가하여 3 개의 제품을 주문하는 두 번째 고객이 있습니까? 그래서 결국 테이블에는 5 개의 행이 포함됩니까? –

+0

예. 또한 모든 테이블의 PK를 크게 만들고 OrderID의 기본 키에서 고객 ID를 제거해야합니다. – NoChance

+0

네, customer_id가 반복 될 것이라고 생각합니다 (한 고객이 두 제품을 주문했지만 두 행으로 표시됩니까?) 그래서이를 제거해야합니다. 기본 키를 크게 설정하면 무슨 뜻인지 알 수 있습니까? –