在这种情况下,可以有外键复制值?或者最好只对列有索引?
下面是我的表结构:
CREATE TABLE customers(
id INT (10) NOT NULL,
name VARCHAR (50) NOT NULL,
city VARCHAR (50) NOT NULL
);
CREATE TABLE orders(
cus_id INT (10) NOT NULL ,
order_date DATETIME NOT NULL
);
CREATE TABLE products(
id INT (5) NOT NULL,
product_name VARCHAR(50) NOT NULL,
product_price INT(10) NOT NULL
);
但是在orderitems表中(我已经存储了订购的产品,客户可以订购多个产品,因此可以复制外键值(cus_id))
CREATE TABLE ordered_items(
id INT (10) NOT NULL,
cus_id INT (10) NOT NULL,
product_id INT(5) NOT NULL
);
ALTER TABLE customers ADD CONSTRAINT customer_id PRIMARY KEY ( id ) ;
ALTER TABLE orders ADD CONSTRAINT customers_id_fr FOREIGN KEY ( cus_id ) REFERENCES customers ( id );
ALTER TABLE ordered_items ADD CONSTRAINT ordered_items_fr FOREIGN KEY ( cus_id ) REFERENCES customers ( id );
编辑:对不起,ordered_items表也有一个唯一的ID列。
1条答案
按热度按时间3zwtqj6y1#
是的!您可以在
ordered_items
中有多个cus_id
值。但是,如果您将orders
替换为order_id
,则可以更好地满足您的目的。因此,您的关系听起来像这样:您的sql将如下所示