簡體   English   中英

外鍵關系沒有意義,是否有更好的方法?

[英]Foreign Key relationships are not making sense, is there a better way?

我在嘗試了解我的表應如何與數據庫關聯時遇到問題。 我是一個初學者,並嘗試過自己研究。 下表如下

    CREATE TABLE PIZZA
(
    pizza_id INT AUTO_INCREMENT PRIMARY KEY,
    pizza_name VARCHAR (255),
    pizza_desc VARCHAR (255),
    pizza_price DOUBLE
);

CREATE TABLE CUSTOMER
(
    cust_id INT AUTO_INCREMENT PRIMARY KEY,
    cust_first_name VARCHAR (255),
    cust_last_name VARCHAR (255),
    cust_street VARCHAR (255),
    cust_apt VARCHAR (255),
    cust_city VARCHAR (255),
    cust_state CHAR(2),
    cust_zip CHAR(5),
    cust_home_phone CHAR(10),
    cust_mobile_phone CHAR(10),
    cust_other_phone CHAR(10)
);

CREATE TABLE PIZZA_ORDER
(
    pizza_order_id INT AUTO_INCREMENT PRIMARY KEY,
    pizza_id INT,
    cust_id INT,
    order_date TIMESTAMP,
    order_quantity INT,
    order_notes VARCHAR (255),
    FOREIGN KEY (pizza_id) REFERENCES PIZZA(pizza_id),
    FOREIGN KEY (cust_id) REFERENCES CUSTOMER(cust_id)
);

我的問題是,如果PIZZA_ORDER表中的記錄有兩個不同的披薩,即兩個不同的pizza_id,那怎么辦? 我當時只是想讓PIZZA_ORDER的主鍵不是唯一的,並且每個實際訂單都有x條記錄。 但是我不確定這將如何工作。 再次感謝您為我們提供的幫助。

一個銷售訂單有許多銷售訂單行項目

create table orders (
  id int primary key,
  ...
);

create table order_items (
  order_id int references orders(id),
  line int,
  pizza_id int references pizza(id),
  ...
  primary key (order_id, line)
);

請參閱https://dba.stackexchange.com/questions/12991/ready-to-use-database-models-example/23831#23831以節省時間:)

您寧可在pizza_orderpizza表之間以及Customerpizza_order表之間建立關系。 就像每個披薩都與一個/多個披薩訂單有關。 而每個披薩訂單都與一個/多個客戶相關。

CREATE TABLE PIZZA_ORDER
(
    pizza_order_id INT AUTO_INCREMENT PRIMARY KEY,
    order_date TIMESTAMP,
    order_quantity INT,
    order_notes VARCHAR (255),
    cust_id int,
    FOREIGN KEY (cust_id) REFERENCES CUSTOMER(cust_id)
);

CREATE TABLE PIZZA
(
    pizza_id INT AUTO_INCREMENT PRIMARY KEY,
    pizza_name VARCHAR (255),
    pizza_desc VARCHAR (255),
    pizza_price DOUBLE,
    pizza_order_id INT,
    FOREIGN KEY (pizza_order_id) REFERENCES PIZZA_Order(pizza_order_id)
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM