Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

12 Май 2021, 18:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Задание связей  (Прочитано 257 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Сергей
Участник
**
Offline Offline

Сообщений: 10


« Стартовое сообщение: 2 Май 2021, 04:57 »

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

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

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


* 2.png (8.16 Кб, 510x285 - просмотрено 11 раз.)
Записан
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 549



« Ответ #1: 2 Май 2021, 08:28 »

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

«Этот код показывает, какому полю второй таблицы соответствует данная запись».
Вообще-то, соответствие устанавливают между записями по полям при совпадении ключа, а не между записью одной таблицы и полем другой таблицы. Или что вы имели в виду?
« Последнее редактирование: 2 Май 2021, 09:04 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
Сергей
Участник
**
Offline Offline

Сообщений: 10


« Ответ #2: 2 Май 2021, 14:26 »

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

Пол: Мужской
Сообщений: 549



« Ответ #3: 2 Май 2021, 16:08 »

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

Upd
Обратите внимание: в посте "Сортировка в запросе исчезает" вы создается несколько копий этой таблицы (та, что справа), а надо создать настоящие таблицы... чтобы устранить противоречие.
« Последнее редактирование: 2 Май 2021, 16:52 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!