[英]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_order
與pizza
表之間以及Customer
與pizza_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.