Что такое главная и подчиненная таблица
Главные и подчиненные таблицы
Типы отношений
Любая база данных состоит из таблиц, которые связаны между собой определенными зависимостями (см. рис.11 из лабораторной работы №1), или как еще их называют отношениями.
Отношения – это связи между таблицами.
Таблица 1. Типы отношений
Тип отношения | Пояснения | Пример |
«ОДИН-К-ОДНОМУ» | каждая запись одной таблицы соответствует одной записи в другой таблице | |
«ОДИН-КО-МНОГИМ» или «МНОГИЕ-К-ОДНОМУ» | каждой записи в одной таблице соответствует несколько записей в другой таблице | |
«МНОГИЕ-КО-МНОГИМ» | нескольким записям в одной таблице соответствуют несколько записей в другой таблице |
Главные и подчиненные таблицы
Пусть имеются отношение между двумя таблицами. Одна из таблиц будет являться главной (родительской), а вторая подчиненной (дочерней или связанной).
При отношениях «ОДИН-КО-МНОГИМ» или «МНОГИЕ-К-ОДНОМУ» таблица с отношением «ОДИН» всегда будет главной. Поле, по которому происходит связь в подчиненной таблицей, называется внешним ключом. Для связи «ОДИН-К-ОДНОМУ» главной считается та таблица, от которой вы начали проводить связь (рис.1).
Рисунок 1. Главные и подчиненные таблицы
Установление связей между таблицами
Связь устанавливается между двумя общими полями из двух таблиц. Связываемые поля должны иметь одинаковый тип и формат данных, за исключением случая, когда поле первичного ключа является полем типа Счетчик. Поле счетчика связывается с числовым полем, если значения свойства Размер поля обоих полей совпадают (рис.2).
Рисунок 2. Пример связи между таблицами «Группа авто» и «Производители авто»
Рисунок 3. Пример связанных таблиц с разными именами полей
При создании связи между таблицами связываемые поля могут иметь разные имена,например, как в случае двух таблиц «Авто страховые копании» и «Участники ДТП» (рис.3). Для установления связи между такими таблицами необходимо изменить тип у поля из подчиненной таблицы, в нашем случае, у поля «НазванКомпан» в таблице «Участники ДТП» с Текстового на Числовое, так как связываемые поля должны иметь одинаковый тип данных, за исключением случая, когда поле первичного ключа является полем типа Счетчик. После чего в свойствах Подстановки у поля «НазванКомпан» в подчиненной таблице «Участники ДТП» ввести данные как показано на рисунке 4.
Рисунок 4. Пример уточнения свойств Подстановки для поля «НазванКомпан» из подчиненной таблицы «Участники ДТП»
Аналогично создается связь между таблицами «Авто участников ДТП» и «Производители авто» (см. рис.5).
Рисунок 5. Примеры связанных таблиц с разными именами полей
Для создания связей между таблицами MS Access имеется специальное диалоговое окно, которое называется «Схема данных».
Создание связей между таблицами:
1 ЭТАП. Добавление таблиц:
Сервис → Схема данных … →в окне «Добавление таблицы» выделяем имена таблиц, добавляемых в схему данных→
кнопка на Панели инструментов Базы данных
2 ЭТАП. Создание (изменение связей):
зажимаем л.к.м. ключевое поле в главной таблице → перетаскиваем курсор на аналогичное поле в подчиненной таблице, после чего кнопку мыши отпускаем
Связи → Изменить связи
п.к.м.по связи→ Изменить связи
После установки всех связей между таблицами в нашей БД в окне «Схема данных» должны установиться связи, как это показано на рисунке 6.
Рисунок 6. Схема БД «Общая картотека ДТП по г. Чита»
Ввод данных и работа с записями в таблицах
До сих пор рассматривали вопросы, связанные с созданием таблиц, определением и изменением их структуры, созданием связей между таблицами. Теперь перейдем к основным возможностям, которые предоставляет MS Access при работе с записями в таблице.
Таблица 2. Работа с записями
Действие | Команды |
Новая запись | Вставка → |
Перемещение по записям | |
Сохранить запись | Запись → Сохранить запись ИЛИ SHIFT+ENTER |
Удалить запись | выделяем нужную (нужные) записи → Правка → Удалить ИЛИ кнопка на Панели инструментов |
В таблицы можно вводить не только числовые и текстовые данные, но графические.
Вставка рисунков в поле данных таблицы:
п.к.м. по рисунку, который необходимо вставить в поле данных таблицы → Открыть с помощью → → выделяем нужную часть рисунка и копируем ее → переходим в БД в режим таблицы → помещаем курсор мыши в поле, куда необходимо поместить рисунок → Правка → Специальная вставка → выбираем тип Picture (Рисунок)
Работа с подчиненными таблицами
В MS Access есть возможность отображения нескольких связанных таблиц в окне главной таблицы, что упрощает процесс ввода данных таблицы. Рассмотрим возможности отображения на примере таблиц «Авто страховые компании», «Участники ДТП» и «Авто участников ДТП» созданной БД (см. рис.7).
Рисунок 7. Пример трех связанных таблиц
Рисунок 8. Пример трех связанных таблиц в режиме Таблица
На рисунке 7 видно, что таблица «Авто страховые компании» имеет подчиненную таблицу «Участники ДТП». В данном случае между областью выделения и первым столбцом таблицы (рис.8) существует узкий столбец, в котором для каждой записи отображается значок плюс (+). Если щелкнуть на нем левой кнопкой мыши, откроется часть подчиненной таблицы, содержащая только те записи, которые связаны с записью в главной таблице. Значок плюс при этом меняется на минус (–).
Если таблица, открытая в режиме Таблицы, не имеет подчиненных таблиц, то столбец со знаками плюс и минус отсутствует (см. рис.9).
Рисунок 9. Пример таблицы в режиме Таблицы, которая не имеет подчиненной таблицы
Не нашли, что искали? Воспользуйтесь поиском:
BestProg
Реляционные базы данных. Понятие ключа. Виды ключей. Отношения. Главная и подчиненная таблицы
В данной теме, на примере двух таблиц, определяются основные понятия реляционных баз данных, а именно:
Содержание
Поиск на других ресурсах:
Входные данные
Пусть задана база данных работников предприятия, которая состоит из двух таблиц. Первая таблица содержит данные о работнике. Вторая таблица содержит сведения о заработной плате работника.
Таблицы имеют следующую структуру.
Таблица «Работник». Содержит данные о работнике
Таблица «Зарплата». Содержит сведения о заработной плате работников.
Вопрос/ответ
1. Что такое первичный ключ в таблице базы данных? Для чего используются первичные ключи?
При работе с таблицами в реляционных базах данных, желательно (необходимо), чтобы каждая таблица имела так называемый первичный ключ.
Первичный ключ – это поле, которое используется для обеспечения уникальности данных в таблице. Это означает, что значение (информация) в поле первичного ключа в каждой строке (записи) таблицы может быть уникальным.
Уникальность необходима во избежание неоднозначности, когда неизвестно к какой записи таблицы можно обратиться, если в таблице есть повторяющиеся записи (две записи имеют одинаковые значения во всех полях таблицы).
Пример. Для таблицы «Работник» можно ввести дополнительное поле, которое будет первичным ключом. Однако, поле (атрибут) «Табельный номер» также обеспечивает уникальность. Так как, теоретически, не может быть двух одинаковых табельных номеров. На практике могут быть случаи, что один и тот же табельный номер будет введен по ошибке и совпадут значения всех полей таблицы. В результате возникнут два одинаковых записи в таблице. Во избежание такой ошибки, лучше создать в таблице дополнительное поле-счетчик, которое обеспечит уникальность.
Также для таблицы «Зарплата» можно ввести дополнительное поле, которое будет первичным ключом.
2. Что такое отношение (связь) между таблицами (relationship)? Пример
Таблицы в реляционной модели данных могут иметь связи между собой. Такие связи называются отношениями. Для таблиц «Работник» и «Зарплата» можно установить связь по полю «Табельный номер».
Пример. Проанализируем таблицы «Работник» и «Зарплата». В этих таблицах можно установить отношение между таблицами на основе поля «Табельный номер». То есть, связь между таблицами происходит на основе поля (атрибуту) «Табельный номер».
Это означает следующее. Если нужно найти начисленную заработную плату в таблице «Зарплата» для работника Иванов И.И., то нужно выполнить следующие действия:
Рис. 1. Иллюстрация связи между таблицами. Табельный номер 2145 таблицы «Работник» отображается в таблице «Зарплата»
Рис. 2. Связь (отношение) между полями таблиц
3. Что такое внешний ключ (foreign key)? Пример
Понятие «внешний ключ» есть важным при рассмотрении связанных таблиц.
Внешний ключ – это одно или несколько полей (атрибутов), которые являются первичными в другой таблице и значение которых заменяется значениями первичного ключа другой таблицы.
Пример. Пусть между таблицами «Работник» и «Зарплата» существует взаимосвязь по полю «Табельный номер». В этом случае, поле «Табельный номер» таблицы «Работник» может быть первичным ключом, а поле «Табельный номер» таблицы «Зарплата» внешним ключом. Это означает, что значения поля «Табельный номер» таблицы «Зарплата» заменяются значениями поля «Табельный номер» таблицы «Работник».
4. Что такое рекурсивный внешний ключ?
Рекурсивный внешний ключ – это внешний ключ, который ссылается на одну и ту же таблицу, к которой он принадлежит. В этом случае поле (атрибут), которое соответствует внешнему ключу, есть ключом одного и того же отношения (связи).
5. Могут ли первичный и внешний ключи быть простыми или составными (сложными)?
Первичный, вторичный и внешний ключи могут быть как простыми так и составными (сложными). Простые ключи – это ключи, которые содержат только одно поле (один атрибут). Составные (сложные) ключи – это ключи, которые содержат несколько полей (атрибутов).
6. Какое отличие между искусственным и естественным ключом? Пример
Естественной ключ обеспечивает уникальность из самой сущности предметной области. Бывают случаи, когда значения записей некоторого поля (полей) таблицы есть уникальными. Это поле может быть естественным ключом.
Искусственный ключ вводится дополнительно для обеспечения уникальных значений. Чаще всего искусственный ключ есть полем типа счетчик (counter). В таком поле, при добавлении новой записи (строки) в таблицу, значение счетчика увеличивается на 1 (или другую величину). Если запись удалить из таблицы, то максимальное значение счетчика строк уже не уменьшается, а остается как есть. Как правило, за этим все следит система управления базами данных.
Пример. В таблице «Работник» естественном ключом есть поле (атрибут) «Табельный номер». Поле «Табельный номер» есть само по себе уникальным, так как не может быть двух работников с одинаковым табельным номером.
В таблице «Зарплата» значение во всех четырех полях могут случайно повториться. Поэтому, здесь целесообразно добавить дополнительное поле-счетчик, которое будет искусственным ключом. В этом случае таблица «Зарплата» с дополнительным полем может иметь приблизительно следующий вид:
где поле «Номер» есть искусственным ключом, который обеспечивает уникальность.
7. Какие существуют способы выбора первичного ключа?
Существует 3 способа выбора первичного ключа:
8. Что означают термины «главная таблица» (master) и «подчиненная таблица» (detail)?
Если между таблицами есть связь, то одна из них может быть главной (master), а другая подчиненной (detail). Главная таблица отображает все записи, которые помещаются в ней. Подчиненная таблица отображает только те записи, которые соответствуют значению ключа главной таблицы, который на данный момент есть активным (текущим). Если изменяется текущая запись главной таблицы, то изменяется множество доступных записей подчиненной таблицы.
Пример. Если рассмотреть таблицы «Работник» и «Зарплата», то таблица «Работник» есть главной, а таблица «Зарплата» есть подчиненной.
9. Какие существуют типы отношений (связей) между таблицами?
Существует 4 основных типа отношений между таблицами:
Пример. Если рассмотреть отношение между таблицами «Работник» и «Зарплата», то это отношения есть типа «один ко многим». Таблица «Работник» есть главной. Таблица «Зарплата» есть подчиненной.
Связывание главной и подчиненной таблиц для обычных форм описано в публикации infostart.ru/public/186522/. Для использования на управляемых формах код нужно изменить.
Ниже привожу работоспособный код для управляемого приложения:
чтобы не выдавало ошибки при добавлении строки в подчиненную таблицу при пустой основной таблице надо добавить :
В файле пример для Управляемого приложения. Работоспособность обработки тестировалась на версии платформы 8.3.4+. Будет работать на всех конфигурациях управляемых форм.
Скачать файлы
Специальные предложения
Обновление 14.08.20 15:34
См. также
FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы «Режим сравнения форм») на примере ERP 2.5 Промо
Данная публикация является продолжением описания функционирования обработки «FormCodeGenerator » в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.
21.12.2020 10839 27 huxuxuya 11
Интерактивная справка по объектам 1С (подключаемое расширение)
База знаний, подключаемая к объектам основной базы. Пополняется интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.
29.09.2020 16684 93 sapervodichka 48
Альтернативный способ добавления элементов и реквизитов на формы
Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.
09.09.2019 18634 36 bmk74 8
[Механизм интерфейса] Свой флажок (чекбокс)
Создадим свой флажок для интерфейса, используем простой универсальный алгоритм.
09.08.2019 23179 21 rpgshnik 43
Расширенная настройка динамического списка УФ Промо
Открывая управляемую форму выбора и не увидев там видимых в форме списка элементов, часто хочется узнать причину их отсутствия там, т. е. какой наложен отбор. Но стандартная настройка списка управляемой формы показывает только пользовательские настройки, скрывая от пользователя фиксированный отбор. Предлагаю вам расширение конфигурации с расширенной настройкой динамического списка, отображающей пользователю кроме пользовательских настроек еще фиксированные.
31.05.2017 39914 162 tormozit 25
Вам нравятся запросы в 1С?
Речь не только о том, что простейший запрос с «легальным» оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать «в нагрузку» к тексту запроса. Все эти «Новый Запрос», «УстановитьПараметр» и последующие пляски с обработкой результата. Пора с этим заканчивать!
03.07.2019 29152 7 m-rv 91
Открывашка ячеек таблиц
Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм
27.10.2018 23201 13 tormozit 38
Работа с публикациями «Инфостарт»
Работа с рублевыми публикациями на сайте «Инфостарт»: ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.
13.09.2018 30016 15 RocKeR_13 16
(Толстый клиент) Подарите бухгалтеру счеты, и он(а) Вас никогда не забудет.
13.05.2011 45390 924 Tatitutu 45
Визуализация событий на временной шкале средствами «Поле HTML документа»
Интересный способ наглядно отобразить события на временной шкале. Например, может быть применен для красивого вывода документов по клиенту. Тестировалось на платформе 8.3.12.1469
31.07.2018 29960 147 Plotks2017 27
Работа с данными выбора
17.07.2018 70840 25 kalyaka 17
ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ («001», «Новый товар»)
Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.
01.06.2018 38132 97 m-rv 58
Нечеткий поиск одним запросом Промо
Использование механизма полнотекстового поиска в 1С не всегда оправдано, т.к. построение индекса и поддержание его в актуальном состоянии может значительно нагружать систему. Предлагаемая реализация нечеткого поиска методом N-грамм выполняется одним запросом, что позволяет производить поиск в любой таблице и не требует предварительного построения индекса.
28.12.2015 35857 75 vasvl123 9
Полезные примеры составления схемы компоновки данных #2
Еще один набор примеров как решить частные задачи в СКД
22.05.2018 42332 11 SITR-utyos 13
Заполняем по шаблону (по умолчанию)
Простой в подключении, универсальный и достаточно удобный механизм заполнения реквизитов произвольных документов/справочников значениями по умолчанию. Реализован в расширении, но может быть и непосредственно включен практически в любую конфигурацию на управляемых формах простым копированием одной формы и двух команд. Весь код в статье.
08.02.2018 36043 20 mvxyz 17
Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП
Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.
06.12.2017 34465 60 kwazi 6
Паузы при исполнении кода (Sleep для 1С)
Решил проверить все найденные варианты паузы для 1С. В результате получилась обработка для тестирования и небольшая статья с итогом.
28.11.2017 71664 19 swimdog 55
Умный дом на 1С + ардуино
Конфигурация для автоматизации быта программиста 1C и не только. В данной статье будет рассказано, как можно использовать 1С для задач, не входящих в стандартные рамки этой платформы. Например, управление домом. В качестве периферии для подключения будет использован микроконтроллер (МК) Ардуино, но на нём не будет никакой логической нагрузки, весь процесс будет проходить на сервере 1С. Работа с пинами ввода/вывода происходит напрямую из 1С.
07.08.2017 29083 21 sasha777666 64
Расширения конфигураций 1С: учимся перехватывать методы
В этой статье я на примерах разберу некоторые механизмы расширений конфигураций 1С. А именно «перехваты» методов модуля объекта и «перехваты» событий формы и элементов формы. Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки.
30.05.2017 171857 13 signum2009 49
Распознавание текста с помощью нейросетей Google Cloud Vision и 1С
Возможности Google Cloud Vision в распознавании текста.
08.02.2017 40154 153 kiv1c 19
Графическая схема. Управление при помощи XDTO.
В статье описывается методика программного управления элементами графической схемы при помощи механизма XDTO. Приложена готовая к использованию библиотека функций для создания и удаления графических объектов, а также для связи элементов схемы соединительными линиями.
16.01.2017 30755 132 Alxby 25
HTTP-сервис: отчеты [Расширение]
Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+
30.08.2016 35217 156 Stepa86 16
1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут
Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании
14.08.2016 56269 36 Demanoidos 60
Недокументированное использование стандартных форм Upd.
Вам не хватает возможностей в платформе 1С или у Вас нет времени на углубленное изучение платформы 1С? Рассмотрены возможности использования стандартных форм, вызываемых из платформы.
26.07.2016 35040 102 ZhokhovM 69
Хранение файлов в томах на диске (для УПП 1.3)
Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных
05.06.2016 69715 13 wowik 32
Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии
Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)
22.03.2016 98170 173 igo1 62
Количество дней недели (понедельников/вторников/. ) в заданном диапазоне одним запросом
При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать «Небольшой» запрос.
03.03.2016 24076 2 Alexander.Shvets 5
Простые радости жизни программиста 1С: выбор типа значения
Предлагаемая в работе обработка включает обычную и управляемую формы, которые максимально точно реализуют функциональность системного диалога выбора типа в толстом клиенте обычное приложение (включая оформление диалога). Эти формы имеют дополнительные интерфейсные удобства и могут быть использованы в качестве альтернативных диалогов выбора типа.
17.02.2016 60881 56 yuraos 18
Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.
В статье описан способ исполнения длительных операций в конфигурациях, в которых используется библиотека стандартных подсистем, с визуализацией прогресса исполнения и отображения хода обработки данных. Также дается краткое описание процесса отладки длительных операций в текущем сеансе.
17.02.2016 71986 220 balanton 23
Мастер рассылки e-mail 2.2 для управляемых форм
Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.
29.12.2015 48187 23 milkers 4
Передача больших пакетов через веб-сервисы
Реализация механизма передачи больших пакетов через веб-сервисы. С его помощью передать файл размером в несколько гигабайт не составит проблем.
06.12.2015 67731 56 YPermitin 19
Быстрое определение интервалов в запросе
В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.
01.10.2015 62424 35 ildarovich 41
Полезные приемы при работе с Excel из 1С (Версия 3.1)
Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.
22.09.2015 258466 525 Zerocl 81
Javascript и 1С. Кросс-платформенное взаимодействие
Что делать, если необходим богатый интерфейс, а управляемые формы нам его не могут обеспечить? Использовать HTML и JavaScript. В статье рассмотрено взаимодействие кода 1С и JavaScript, работающее на любой платформе: толстый, тонкий и веб-клиент, под Windows и Linux.
14.09.2015 82900 224 VitaliyCeban 64
Code First и Linq to EF на примере 1С версии 7.7 и 8.3 часть I
28.08.2015 26618 3 Serginio 2
NativeDraw: Компонента рисования для 1С [V2.6.2]
Рисуйте в формах 1С, также предлагается небольшое количество нерисовальных функций
13.07.2015 54158 474 ПерваяСистема 147
Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7
Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны «плоские данные». Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.
25.06.2015 33033 4 Serginio 1