
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.12.2015, 19:10
|
|||
|---|---|---|---|
|
|||
Составной первичный ключ |
|||
|
#18+
Добрый день! Выполняю академическое задание - создание БД. Дата-логическая модель представлена на рисунке. В данной БД есть таблица в которой описываются некоторые классы - "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); В результате получаю вот такую ошибку: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2015, 19:34
|
|||
|---|---|---|---|
|
|||
Составной первичный ключ |
|||
|
#18+
Добрый день! Выполняю академическое задание - создание БД. Дата-логическая модель представлена на рисунке. В данной БД есть таблица в которой описываются некоторые классы - "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); В результате получаю вот такую ошибку: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2015, 19:51
|
|||
|---|---|---|---|
Составной первичный ключ |
|||
|
#18+
Дениска как быть, Либо не делай составной ключ - на "логичность" схемы он не влияет. Либо ссылайся двумя полями, благо они определены в основной таблице - но не позволит иметь несогласованные черезтабличные данные. В логической схеме ошибка нормализации или предполагается несогласованность черезтабличной связи (вот разработчику радость каждый раз гадать, какая из связей нужна в конкретном случае). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=1997595]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 521ms |

| 0 / 0 |
