SQL。唯一键和主键

时间:2016-02-05 13:46:08

标签: mysql primary-key unique-key

我的要求是拥有一张产品表,这些产品不能同时拥有类似的供应商,产品和版本。

但是,我还希望通过其主键在另一个表上引用此表,就像我使用unique的不同供应商产品版本一样。

create table Products
    (
    vendor varchar(100),
    product varchar(100),
    version varchar(30),
    unique (vendor, product, version, cve)        
);

但是这样我就不能通过product_id来引用它了,正如我想要的那样:

create table Product_cve(

    product_id int,
    cve varchar(14),
    foreign key (product_id) references Products(product_id),
    foreign key (cve) references VulnerabilitiesCVE(cve)
);

,我能做的另一件事是

   create table Products
    (
    product_id int NOT NULL AUTO_INCREMENT,
    vendor varchar(100),
    product varchar(100),
    version varchar(30),
    primary key (product_id)

    );

这样,我最终会有重复的产品...

1 个答案:

答案 0 :(得分:0)

解决方案很简单:

create table Products
    (
    product_id int AUTO_INCREMENT
    vendor varchar(100),
    product varchar(100),
    version varchar(30),
    UNIQUE(vendor, product, version, cve),
    PRIMARY KEY (product_id)        
);