家庭作业帮助(单位约束)

时间:2014-01-10 08:17:47

标签: mysql sql constraints unique

enter code here我的家庭作业有些麻烦,我需要了解。

好的我有4张桌子, 1:costumer 2:order 3:orderedproduct 4. product。 它们由外键链接。

我需要制定一个独特的约束条件,以便客户每天只能下1个独特的订单。如果同一客户想要在同一天订购更多,则必须在现有订单上写明。


TABLES

负荷消费

CREATE TABLE COSTUMER (COSTUMERNR INT NOT NULL,
                     NAME VARCHAR(256), 
      CITY VARCHAR(256),
       PRIMARY KEY (COSTUMERNR)) ENGINE=INNODB;   

顺序

CREATE TABLE ORDER (ORDERNR INT NOT NULL,
                   ORDERDATE DATETIME,
                   PRIMARY KEY (ORDERNR)),
                   FOREIGN KEY (COSTUMERNR) REFERENCES COSTUMER(COSTUMERNR)
                   ON DELETE CASCADE) ENGINE=INNODB;

orderedproduct

CREATE TABLE ORDEREDPRODUCT (OPNR INT NOT NULL,
                       AMOUNT INT,
                       FOREIGN KEY (ORDERNR) REFERENCES ORDER(ORDERNR),
FOREIGN KEY (PRODUCTCODE) REFERENCES PRODUCT (PRODUCTCODE)
                       ON DELETE CASCADE,
                        CHECK (AMOUNT=>0)) ENGINE=INNODB;

产品

CREATE TABLE PRODUCT (PRODUCTCODE INT NOT NULL,
                   NAME VARCHAR(256),
           TYPE VARCHAR(256),
                   PRICE FLOAT,
           STOCK INT,
                   PRIMARY KEY (PRODUCTCODE),
CHECK (AMOUNT=>0)) ENGINE=INNODB;

2 个答案:

答案 0 :(得分:1)

alter table order add unique index(orderdate, COSTUMERNR);

答案 1 :(得分:0)

如果您能够将日期时间列拆分为日期列和时间列,则可以使用简单约束:

CREATE TABLE ORDER (
   ORDERNR INT NOT NULL,
   ORDERDATE DATE,
   ORDERTIME TIME,
    ...
CONSTRAINT [UniqueOrder] UNIQUE NONCLUSTERED
(
   COSTUMERNR, ORDERDATE
)