Для моего школьного проекта мне нужно было создать базу данных. Это моя ERD.Иностранный ключ на двух столбцах
В SQL я создать таблицу Категория:
CREATE table "Category" (
"Id" NUMBER(5) NOT NULL,
"SubCategoryId" NUMBER(5) NULL,
"Name" VARCHAR2(32) NOT NULL,
CONSTRAINT "Category_pk" PRIMARY KEY ("Id")
);
ALTER TABLE "Category" ADD CONSTRAINT "Category_fk" FOREIGN KEY ("SubCategoryId") REFERENCES "Category" ("Id");
стол Продукт
CREATE table "Product" (
"Id" NUMBER(5) NOT NULL,
"CategoryId" NUMBER(5) NOT NULL, /* Category.Id or Category.SubCategoryId */
"Name" VARCHAR2(32) NOT NULL,
"Brand" VARCHAR2(32),
"Type" VARCHAR2(32),
"Year" NUMBER(4),
CONSTRAINT "Product_pk" PRIMARY KEY ("Id")
);
таблица продукт имеет CategoryId (иностранный ключ) на Category.Id, но Product.CategoryId также нужен внешний ключ для Category.SubCategoryId.
Возможно ли это, или я должен создать дополнительную таблицу под названием «SubCategory», а затем добавить внешние ключи в Category.Id и SubCategory.Id?
Почему, по вашему мнению, для таблицы 'Product' нужен внешний ключ на' Category.SubCategory'? В таблице 'Product' есть ссылка на' Category', а 'Category' имеет ссылку на' SubCategory'. Я думаю, что текущий 'DDL' в порядке, если' product' имеет ссылку на 'category', но не на подкатегорию –
Подкатегории нужен родитель. Но вы можете присвоить товар категории без подкатегории. Так что мне нужно назначить продукт Category.Id или Category.SubCategoryId. – yooouuri
SubCatagory - это категория, у которой есть родительский элемент, поэтому вам требуется ссылка на какую-либо категорию, независимо от того, имеет ли она родительский или нет, поэтому текущий DDL в порядке. Я прав? –