商店数据库,SQL为订单表

时间:2013-12-03 13:25:39

标签: sql

我有一个大学项目,我必须为工厂商店创建一个数据库。

我的订单表有问题。目前,它只允许客户一次购买一种产品,但在现实生活中,客户可以同时购买许多产品。

例如, 我们有一个客户John Doe,他在产品表中总结了两种产品。如何提取这两个(或更多)产品并将其添加到一个订单表中?

以下是我写的SQL代码:

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));

3 个答案:

答案 0 :(得分:1)

您必须创建Kettle Table customer_orders,在此表中存储customer_id和order_id,并使用外键将它们连接到表customer和orders

喜欢:

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);

答案 1 :(得分:0)

CREATE TABLE sales.stores (
    store_id INT IDENTITY (1, 1) PRIMARY KEY,
    store_name VARCHAR (255) NOT NULL,
    phone VARCHAR (25),
    email VARCHAR (255),
    street VARCHAR (255),
    city VARCHAR (255),
    state VARCHAR (10),
    zip_code VARCHAR (5)
);

答案 2 :(得分:0)

设计这个的一种方法是有两个订单表。

  1. OrderHeader :- 这包含带有客户详细信息的订单 ID。
  2. OrderItem:- 包含每个订单的订单项。
<块引用>
    OrderHeader fields could be 
    order_id   //primary key
    customer_id 
    employee_id 
    order_date 

    OrderItem :- Fields could be 
    order_id    //composite key
    line_Item_id  //composite key
    product_id,
    product_quant