Задание связей

Автор Сергей, 2 мая 2021, 04:57

0 Пользователи и 1 гость просматривают эту тему.

Сергей

Есть две таблицы. В одной из них хранится строковое наименование и целочисленный код в поле "Тип".
Этот код показывает, какому полю второй таблицы соответствует данная запись.

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

Как задать схему связей для такого случая?

eeigor

#1
Замените «веер» связей одной единственной и обеспечьте совпадение типов данных первичного и внешнего ключей, как и смысловую связь между полями. Из вашей схемы неясно, что вы хотите заполучить.
Если вы создаёте связи с разными полями (код должности, код места работы, код учёного звания и т.д., то почему справа одна таблица, а слева нет вразумительных имён полей внешних ключей?

«Этот код показывает, какому полю второй таблицы соответствует данная запись».
Вообще-то, соответствие устанавливают между записями по полям при совпадении ключа, а не между записью одной таблицы и полем другой таблицы. Или что вы имели в виду?
Ubuntu 18.04 LTS • LibreOffice 7.4.3.2 Community

Сергей

Поля левой таблицы являются внешними ключами, но при этом все они ссылаются на разные записи одной и той же правой таблицы.

eeigor

#3
Увы, так я не делал, и это против теории реляционных БД. Сомневаюсь, однако... См. книгу. ЧАСТЬ III. ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ (Нормальные формы, с. 459)
Цитата: Сергей от  2 мая 2021, 14:26Поля левой таблицы являются внешними ключами, но при этом все они ссылаются на разные записи одной и той же правой таблицы.
Две таблицы при таком подходе невозможно синхронизировать. Поэтому у вас и не получается. Вот сколько у вас внешних ключей слева, столько и должно быть таблиц с первичным ключом справа. Не мудрите. И имена у таблиц д.б. соответствующие: Должность, Место работы, Ученая степень, Ученое звание... и пр. (или в мн. числе, как вам удобно). То есть каждая сущность (entity) с более чем одной характеристикой д.б. представлена отдельной таблицей или, как минимум, таблицей подстановки (lookup table -> в этом случае отсутствует связь). А вы их все поместили в одной таблице справа... Это не есть реляционная модель. BASE - реляционная СУБД.
Цитата: Сергей от  2 мая 2021, 04:57Как задать схему связей для такого случая?
Никак.

Upd
Обратите внимание: в посте "Сортировка в запросе исчезает" вы создается несколько копий этой таблицы (та, что справа), а надо создать настоящие таблицы... чтобы устранить противоречие.
Ubuntu 18.04 LTS • LibreOffice 7.4.3.2 Community