Добрый день! Выполняю академическое задание - создание БД. Дата-логическая модель представлена на рисунке. В данной БД есть таблица в которой описываются некоторые классы - "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.png | 281 kb |
1.png | 66.12 kb |
Он составлен у вас
Он составлен у вас корректно.
Попробуйте весь данный список SQL-операторов прогрузить в БД не через pgAdmin, а через psql
Если будут ошибки - пишите сюда что выводит