Составной первичный ключ

Добрый день! Выполняю академическое задание - создание БД. Дата-логическая модель представлена на рисунке. В данной БД есть таблица в которой описываются некоторые классы - "name_general_classification" и таблица в которой описываются сущность из конкретного класса "name_detailed_classififaction". таким образом для того чтобы однозначно задать сущность в соответствие необходим составной первичный ключ определяющий класс сущности и тип сущности в этом классе.

Создаю скрипт по данной дата-логической модели в результате pqAdmin выдает ошибку. Подскажите пожалуйста, как в данном случае корректно создать составной первичный ключ?

Код создания таблиц:

CREATE TABLE "assembled_kk3" (
"id_kk3" bigserial NOT NULL,
"assembled_kk3" varchar NOT NULL,
"name_general_classification" smallint NOT NULL DEFAULT '0',
"name_detailed_classification" smallint NOT NULL DEFAULT '0',
....................................
CONSTRAINT assembled_kk3_pk PRIMARY KEY ("id_kk3")
) WITH (
OIDS=FALSE
);

CREATE TABLE "name_general_classification" (
"id_name_general_classification" smallint NOT NULL,
"name" varchar NOT NULL DEFAULT 'not name',
CONSTRAINT name_general_classification_pk PRIMARY KEY ("id_name_general_classification")
) WITH (
OIDS=FALSE
);

CREATE TABLE "name_detailed_classification" (
"id_name_general_classification" smallint NOT NULL,
"id_name_detalied_classification" smallint NOT NULL,
"name" varchar NOT NULL,
CONSTRAINT name_detailed_classification_pk PRIMARY KEY ("id_name_general_classification","id_name_detalied_classification")
) WITH (
OIDS=FALSE
);

ALTER TABLE "assembled_kk3" ADD CONSTRAINT "assembled_kk3_fk0" FOREIGN KEY (name_general_classification) REFERENCES name_general_classification(id_name_general_classification);
ALTER TABLE "assembled_kk3" ADD CONSTRAINT "assembled_kk3_fk1" FOREIGN KEY (name_detailed_classification) REFERENCES name_detailed_classification(id_name_detalied_classification);
ALTER TABLE "name_detailed_classification" ADD CONSTRAINT "name_detailed_classification_fk0" FOREIGN KEY (id_name_general_classification) REFERENCES name_general_classification(id_name_general_classification);

В результате получаю вот такую ошибку:

ВложениеРазмер
scheme.png281 kb
1.png66.12 kb

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Он составлен у вас

Он составлен у вас корректно.
Попробуйте весь данный список SQL-операторов прогрузить в БД не через pgAdmin, а через psql
Если будут ошибки - пишите сюда что выводит

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023