powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Составной первичный ключ
3 сообщений из 3, страница 1 из 1
Составной первичный ключ
    #39117734
Добрый день! Выполняю академическое задание - создание БД. Дата-логическая модель представлена на рисунке. В данной БД есть таблица в которой описываются некоторые классы - "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
);[/SRC]


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

В результате получаю вот такую ошибку:
...
Рейтинг: 0 / 0
Составной первичный ключ
    #39117753
Sting_NapaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Выполняю академическое задание - создание БД. Дата-логическая модель представлена на рисунке. В данной БД есть таблица в которой описываются некоторые классы - "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
);[/SRC]


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

В результате получаю вот такую ошибку:
...
Рейтинг: 0 / 0
Составной первичный ключ
    #39117763
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дениска как быть,

Либо не делай составной ключ - на "логичность" схемы он не влияет.
Либо ссылайся двумя полями, благо они определены в основной таблице - но не позволит иметь несогласованные черезтабличные данные. В логической схеме ошибка нормализации или предполагается несогласованность черезтабличной связи (вот разработчику радость каждый раз гадать, какая из связей нужна в конкретном случае).
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Составной первичный ключ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]