Мое требование состоит из таблицы продуктов, которая не может иметь одинакового поставщика, продукта и версии одновременно.SQL. Уникальный и первичный ключ
Но я также хочу, чтобы эта таблица была указана в другой таблице по ее первичному ключу, так как для отдельного поставщика версия продукта я использую 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)
);
Таким образом, , Я собираюсь в конечном итоге иметь дублированные продукты ...
Вы должны идеально поддерживать только «product_id» и «product_name» в таблице «Продукты» и создавать другую таблицу сопоставления, которая имеет «продукт» и «поставщик», например 'product_vendor'. Затем вы можете использовать 'product_vendor_id' (PK таблицы' product_vendor') как внешний ключ в таблице 'Product_cve'. –