|
|
|
Составной первичный ключ
|
|||
|---|---|---|---|
|
#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: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+
Дениска как быть, Либо не делай составной ключ - на "логичность" схемы он не влияет. Либо ссылайся двумя полями, благо они определены в основной таблице - но не позволит иметь несогласованные черезтабличные данные. В логической схеме ошибка нормализации или предполагается несогласованность черезтабличной связи (вот разработчику радость каждый раз гадать, какая из связей нужна в конкретном случае). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2015, 19:51 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39117763&tid=1997595]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
196ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 525ms |

| 0 / 0 |
