SQL。唯一主键

SQL. Unique and Primary Key

我的要求是 table 的产品不能同时具有相似的供应商、产品和版本。

但是,我还希望这个 table 通过它的主键在另一个 table 上被引用,至于不同的供应商,我使用的产品版本 unique.

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

但是这样我就无法通过它的 product_id 来引用它,因为我想在另一个 table:

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)

    );

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

解决方法很简单:

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)        
);