Создание и обработка баз данных
Содержание:
- Понимание таблиц
- Показать все строки из обеих таблиц и присоединиться к ним, где есть общее значение
- Когда может быть использована связь многие-ко-многим?
- Отношение «один-к-одному»
- Типы соединений
- 2.4. Системы управления базами данных и экспертные системы
- Параметры форматирования таблиц
- Создание связи данных вручную в конструктор наборов данных
- Вставка записей в таблицу
- Создание и изменение отношений 1:N между сущностями
- В этой статье
- Таблицы в БД Access
Понимание таблиц
Все таблицы состоят из горизонтальных строк и вертикальных столбцов с небольшими прямоугольниками, называемыми ячейками в местах пересечения строк и столбцов. В Access строки и столбцы называются записями и полями.
Поле — это способ организации информации по типу. Подумайте о названии поля как о вопросе и каждой ячейке в этом поле в качестве ответа на этот вопрос.
Запись — это одна единица информации. Каждая ячейка в данной строке является частью записи этой строки. Каждая запись имеет свой идентификационный номер. В таблице каждый идентификационный номер уникален для своей записи и относится ко всей информации в этой записи. Идентификационный номер для записи не может быть изменен.
Каждая ячейка данных в вашей таблице является частью как поля, так и записи. Например, если у вас есть таблица имен и контактная информация, каждый человек будет представлен записью, и каждый фрагмент информации о каждом имени человека, номере телефона, адресе и т. Д. Будет содержаться в отдельном поле в строке этой записи.
Показать все строки из обеих таблиц и присоединиться к ним, где есть общее значение
Если вы хотите отобразить все строки из двух таблиц и присоединиться к ним на основе часто используемых значений, используйте полное внешнее соединение. Приложение Access явно не поддерживает полные внешние соединения, но вы можете добиться того же эффекта с помощью запроса на объединение. В приведенной ниже процедуре объясняется, как это сделать, но если вам нужны дополнительные сведения о запросах на объединение, ознакомьтесь с разделом » см .
Использование запроса на объединение для выполнения полного внешнего соединения:
Создайте запрос, который содержит левое внешнее соединение в поле, которое вы хотите использовать для полного внешнего объединения.
На вкладке Главная в группе Режимы выберите команду Режим, а затем — Режим SQL.
Нажмите клавиши CTRL + C, чтобы скопировать код SQL.
Удалите точку с запятой в конце предложения FROM и нажмите клавишу ВВОД.
Введите слово UNION и нажмите клавишу ВВОД.
Примечание: Не используйте ключевое слово ALL при выполнении полного внешнего соединения с помощью запроса на объединение.
Нажмите клавиши CTRL + V, чтобы вставить код SQL, скопированный в действии 3.
В коде, который вы вставили, измените левое соединение на right.
Удалите точку с запятой в конце второго предложения FROM и нажмите клавишу ВВОД.
Добавьте предложение WHERE, которое указывает, что значение поля соединения равно NULL в первой таблице, указанной в предложении FROM (Левая таблица).
Например, если предложение FROM имеет следующее:
Вы добавите следующее предложение WHERE:
WHERE Products.ID IS NULL
Введите точку с запятой (;) в конце предложения WHERE, чтобы обозначить конец запроса на объединение.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Когда может быть использована связь многие-ко-многим?
Пример связи многие-ко-многим – это студенческая группа и группа преподавателей. Каждый из студентов учится сразу у нескольких профессоров, которые, в свою очередь, читают лекции нескольким ученикам. На картинке показана разница между связью один-к-многим и многие-ко-многим.
Связь многие-ко-многим нередко необходима при составлении масштабных баз данных, мелкие показательные примеры обычно используются только в учебных целях, в реальной же практике получается так, что, чем больше сущностей в БД и больше взаимосвязей между ними – тем более вероятность частого обращения к отношению многие-ко-многим.
Отношение «один-к-одному»
Отношение или связь «один-к-одному» связывает одну запись таблицы с одной или не связывает ни с одной записью другой таблицы. Иногда этот тип отношения применяется для разбиения таблицы с большим количеством полей на две или несколько меньших таблиц.
Таблица Products (изделия) может содержать подробную информацию, описывающую изделие и его цену, и дополнительные сведения об особенностях его производства.
Эти сведения интересны только сотрудникам инженерно-технических подразделений, поэтому их можно перенести в отдельную таблицу (названную, например, ProductsEngineering (технические характеристики изделия). Это та информация, которая не должна интересовать продавцов при оформлении заказов.
В другой ситуации можно разбить таблицу на две, просто потому что она слишком велика. (Программа Access не разрешает таблице иметь более 255 полей.)
Рис. 5.15. Когда связываются два поля, в которых не допускаются дублирующиеся данные (и флажок Обеспечение целостности данных установлен), Access считает, что создается связь «один-к-одному».
Программа помещает цифру 1 на концах линии связи для того, чтобы отличать ее от других типов связей.
В этом примере столбец ID в таблице Products и столбец ID в таблице ProductsEngineering — первичные ключи соответствующих таблиц, поэтому невозможно связать несколько записей таблицы ProductsEngineering с одной и той же записью таблицы Products
создается так же, как отношение «один-ко-многим» — перетаскиванием с помощью мыши полей на вкладке Схема данных (рис. 5.15). Единственная
разница состоит в том, что всвязанных полях обеих таблиц нужно задать запрет совпадений. В этом случае запись одной таблицы может (как максимум) быть связана с единственной записью в другой таблице.
Примечание
В поле запрещены совпадения, если оно является первичным ключом таблицы (см. разд. «Первичный ключ» главы 2) или если у поля есть индекс, препятствующий появлению дублирующейся информации (см. разд. «Предотвращение дублирования значений с помощью индексов» главы 4).
Применяйте связи «один-к-одному» с осторожностью
Отношения «один-к-одному» крайне редко применяются в программе Access. Обычно гораздо удобнее использовать скрытие столбцов (см. разд. «Скрытие столбцов» главы 3) и запросы (см. главу 6), если вы хотите видеть только отдельные поля таблицы.
• Две части таблицы необходимо поместить в отдельные БД (см. разд. «Что такое разделенная БД» главы 18) для того, чтобы разные люди могли копировать их на разные компьютеры и редактировать независимо.
• Вы хотите защитить от любопытных глаз уязвимые данные. Один из возможных способов — поместить информацию, которую нужно защитить, в отдельную таблицу и сохранить эту таблицу в другой, более защищенный файл БД.
• У вас есть таблица с огромным объемом данных, таких как поля типа Вложение (см. разд. «Вложение» главы 2) с большими документами. В этом случае можно повысить производительность, если разделить таблицу. Вы даже можете решить, что лучше поместить половину таблицы в отдельную БД (см, разд. «Что такое разделенная БД» главы 18).
• Некоторые данные вашей таблицы необязательны. Вместо того чтобы включать большое количество незаполненных полей, можно выделить их в отдельную таблицу. Когда не нужно включать эту информацию, вам не придется добавлять запись в связанную таблицу.
Если у вас нет таких ситуаций, вы больше выиграете от создания одной большой таблицы.
Отношение «многие-ко-многим»
Отношение или связь «многие-ко-многим»связывает одну или несколько записей одной таблицы с одной или несколькими записями в другой таблице. Рассмотрим БД, в которой в отдельных таблицах хранятся данные об авторах и книгах.
Авторы бестселлеров не останавливаются на одной книге (поэтому вы должны иметь возможность связать одного автора с несколькими книгами).
Однако иногда авторы объединяются в команду под одним заглавием (поэтому вы должны иметь возможность связать одну книгу с несколькими авторами).
Аналогичная ситуация возникает, если нужно распределить студентов по курсам, сотрудников по комитетам или ингредиенты по рецептам. Можно даже представить подобную ситуацию и в случае БД с куклами-болванчиками, если несколько изготовителей решат объединиться для изготовления одной куклы-болванчика.
Связи «многие-ко-многим» довольно распространены, и программа Access предоставляет два способа их обработки.
Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.
Типы соединений
Существует четыре основных типа соединений: внутренние соединения, внешние соединения, перекрестные соединения и неодинаковые соединения. Перекрестные соединения и неодинаковые соединения — это сложные типы объединений, которые редко используются, но вам следует знать, чтобы они могли понять, как работают соединения.
Внутренние соединения: объединены только связанные данные из обеих таблиц.
Внутреннее соединение — это один из них, в котором Access включает только данные из таблицы, если есть соответствующие данные в связанной таблице, и наоборот. В большинстве случаев вы будете использовать внутреннее соединение. Если вы создаете соединение и не указали тип соединения, то Access считает, что вы хотите использовать внутреннее соединение. Внутренние соединения удобны, так как они позволяют объединять данные из двух источников на основе общих значений, так что вы видите данные только при полном рисунке.
Полные внешние соединения: все данные, в сочетании с возможными возможностями
В некоторых системах внешнее соединение может включать все строки из обеих таблиц с объединением строк, в которых они совпадают. Это называется полным внешним соединением, и Access не поддерживает их явным образом. Однако вы можете использовать перекрестное соединение и условия, чтобы добиться того же эффекта.
Перекрестные соединения: все данные объединены каждый из возможных способов
В большинстве случаев перекрестное соединение является побочным эффектом добавления двух таблиц в запрос и последующего их присоединения. Access считает это таким образом, что вы хотите, чтобы все записи из одной таблицы отображались вместе с каждой записью из другой таблицы — каждое из возможных сочетаний записей. Поскольку никакие данные нельзя объединять, этот вариант соединения редко дает полезные результаты. Однако существует несколько случаев, когда перекрестное соединение является именно тем, что вам нужно.
2.4. Системы управления базами данных и экспертные системы
2.4.3.2. Установка связей между таблицами в СУБД Access
После создания структуры таблиц (Студенты, Группы студентов, Дисциплины, Успеваемость) для сущностей базы данных «Деканат» необходимо установить связи между таблицами. Связи между таблицами в БД используются при формировании запросов, разработке форм, при создании отчетов.
Для создания связей необходимо закрыть все таблицы и выбрать команду «Схема данных» из меню Сервис, появится активное диалоговое окно «Добавление таблицы» на фоне неактивного окна Схема данных.
В появившемся диалоговом окне Добавление таблиц необходимо выделить имена таблиц и нажать кнопку Добавить, при этом в окне «Схема данных» добавляются таблицы. После появления всех таблиц в окне Схема данных необходимо закрыть окно Добавление таблицы, щелкнув левой кнопкой мыши на кнопке Закрыть.
Следующий шаг — это установка связей между таблицами в окне Схема данных. Для этого в окне Схема данных необходимо отбуксировать (переместить) поле КодГруппы из таблицы Группы на соответствующее поле таблицы Студенты, в результате этой операции появится окно «Изменение связей».
В появившемся окне диалога «Изменение связей» необходимо активизировать флажки: «Обеспечить целостность данных», «каскадное обновление связанных полей» и «каскадное удаление связанных записей», убедиться в том, что установлен тип отношений один-ко-многим и нажать кнопку Создать.
В окне Схема данных появится связь один-ко-многим между таблицами Группы студентов и Студенты. Аналогичным образом надо связать поля КодСтудента в таблицах Студенты и Успеваемость, а затем поля КодДисциплины в таблицах Успеваемость и Дисциплины. В итоге получим Схему данных, представленную на рисунке.
После установки связей между таблицами, окно Схема данных необходимо закрыть.
Далее необходимо осуществить заполнение всех таблиц. Заполнение таблиц целесообразно начинать с таблицы Группы студентов, так как поле Код группы таблицы Студенты используется в качестве столбца подстановки для заполнения соответствующего поля таблицы Студенты.
2.4.3.3. Заполнение таблиц
Заполнение таблиц можно начать и с заполнения таблицы Студенты. В окне Базы данных выделяем нужную таблицу, затем выполняем щелчок на кнопке Открыть.
На экране появится структура таблицы БД в режиме таблицы. Новая таблица состоит из одной пустой строки.
Заполнение производится по записям, т.е. вводится информация для всей строки целиком. Поле счетчика заполняется автоматически. После ввода первой записи пустая запись смещается в конец таблицы. Переход к следующему полю осуществляется нажатием клавиши ТаЬ.
Для заполнения поля MEMO в таблице (колонка Место рождения) нажимаем комбинацию клавиш , предварительно установив курсор в поле MEMO. Открывается диалоговое окно Область ввода, после ввода или редактирования данных в этом окне щелкаем на кнопке ОК.
После заполнения таблица Студенты имеет следующий вид.
Аналогичным образом заполняются остальные таблицы: Группы Студентов, Успеваемость, Дисциплины.
В приложении Access применяются различные методы перемещения по таблице. Переходить от записи к записи можно с помощью: клавиш управления курсором; кнопки из области Запись, расположенной внизу таблицы в режиме таблицы; команды Правка — Перейти.. Для перемещения от поля к полю (слева направо) применяются клавиши Tab и Enter, а в обратном направлении Shift+Tab.
Поиск данных в таблице большого объема, который выполняется с помощью кнопок перехода, может занять много времени, поэтому для поиска и замены данных в полях необходимо использовать команду Правка — Найти. Откроется окно диалога. В поле Образец диалогового окна поиска указывается искомый объект и осуществляется поиск. Для замены данных в полях необходимо перейти на вкладку Замена.
После создания структуры таблиц, их заполнении и установки связей между таблицами можно приступать к построению запросов.
Обучение в интернет, . Обратная связь
Параметры форматирования таблиц
Цвет чередующихся строк
По умолчанию фон любой другой строки в таблице Access представляет собой несколько оттенков, более темных, чем фон остальной части таблицы. Этот более темный цвет чередующихся строк упрощает чтение вашей таблицы, предлагая визуальное различие между каждой записью и записями непосредственно выше и ниже нее.
Чтобы изменить цвет другой строки:
- 1. Выберите вкладку «Главная» и найдите группу форматирования текста.
- 2. Нажмите стрелку раскрывающегося списка «Альтернативный ряд».
- 3. Выберите цвет в раскрывающемся меню или выберите «Нет цвета», чтобы удалить цвет другой строки.
- 4. Цвет вашей альтернативной строки будет обновлен.
Создание связи данных вручную в конструктор наборов данных
при создании таблиц данных с помощью средств проектирования данных в Visual Studio связи создаются автоматически, если данные могут быть собраны из источника данных. При добавлении вручную таблиц данных из вкладки набор данных панели элементов может потребоваться создать связь вручную. Сведения о создании DataRelation объектов программным путем см. в разделе Добавление связейданных.
Связи между таблицами данных отображаются в виде линий в Конструктор наборов данных с глифом «один ко многим». По умолчанию имя связи не отображается в области конструктора.
Observação
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в этой статье. Возможно, вы используете другой выпуск Visual Studio или другие параметры среды. Дополнительные сведения см. в разделе Персонализация среды IDE.
Создание связи между двумя таблицами данных
-
Откройте свой набор данных в Конструкторе наборов данных. Дополнительные сведения см. в разделе Пошаговое руководство. Создание набора данных в конструктор наборов данных.
-
Перетащите объект связи с панели элементов набора данных на дочернюю таблицу данных в связи.
Откроется диалоговое окно связь с заполнением поля дочерней таблицы таблицей, в которую перетаскивается объект связи .
-
Выберите родительскую таблицу из поля Родительская таблица . Родительская таблица содержит записи на стороне «один» связи «один ко многим».
-
Убедитесь, что в поле дочерняя таблица отображается правильная дочерняя таблица. Дочерняя таблица содержит записи на стороне «многие» связи «один ко многим».
-
Введите имя связи в поле имя или оставьте имя по умолчанию на основе выбранных таблиц. Это имя фактического DataRelation объекта в коде.
-
Выберите столбцы, которые объединяют таблицы в списках Ключевые столбцы и Внешние ключевые столбцы .
-
Выберите, следует ли создать связь, ограничение или и то, и другое.
-
Установите или снимите флажок Вложенная связь . При выборе этого параметра свойству присваивается значение Nested , после чего дочерние строки отношения вкладываются в родительский столбец, когда эти строки записываются в виде XML-данных или синхронизируются с XmlDataDocument . Дополнительные сведения см. в разделе вложенность связейданных.
-
Задайте правила, которые должны применяться при внесении изменений в записи в этих таблицах. Дополнительные сведения см. в разделе Rule.
-
Нажмите кнопку ОК , чтобы создать связь. Линия связи появится в конструкторе между двумя таблицами.
Отображение имени отношения в конструктор наборов данных
-
Откройте свой набор данных в Конструкторе наборов данных. Дополнительные сведения см. в разделе Пошаговое руководство. Создание набора данных в конструктор наборов данных.
-
В меню данные выберите команду Показать связи меток , чтобы отобразить имя связи. Очистите эту команду, чтобы скрыть имя связи.
Вставка записей в таблицу
По существу, существует два метода добавления записей в таблицу. Первый — добавление по одной записи за раз, второй — одновременное добавление нескольких записей. В обоих случаях для выполнения задачи необходимо использовать инструкцию SQL INSERT INTO. Инструкции INSERT INTO обычно называют запросами на добавление.
Чтобы добавить одну запись в таблицу, с помощью списка полей определите, в какие поля следует поместить данные, а затем разместите данные в списке значений. Для определения списка значений используйте выражение VALUES. Например, указанная ниже инструкция вставляет значения 1, Kelly и Jill в поля CustomerID, Last Name и First Name соответственно.
Вы можете опустить список полей, но только в том случае, если вы передаете все значения, которые должна содержать запись.
Чтобы добавить одновременно несколько записей в таблицу, используйте инструкцию INSERT INTO совместно с инструкцией SELECT. Если вы вставляете записи из другой таблицы, тип каждого вставляемого значения должен быть совместим с типом поля, принимающего данные.
Указанная ниже инструкция INSERT INTO вставляет все значения полей CustomerID, Last Name и First Name таблицы tblOldCustomers в соответствующие поля таблицы tblCustomers.
Если таблицы определены совершенно одинаково, можно не использовать списки полей.
Создание и изменение отношений 1:N между сущностями
Откройте обозреватель решений.
В разделе Компоненты раскройте узел Сущности, затем раскройте сущность, с которой требуется работать.
Выберите Отношения 1:N.
Чтобы изменить отношение или просмотреть сведения для отношения, выберите отношение и нажмите на панели инструментов «Действия» кнопку Другие действия, затем выберите Изменить.
— ИЛИ —
Чтобы добавить новое отношение, выберите Создать отношение «один ко многим».
Важно!
Если кнопка Создать отношение «один ко многим» не отображается на панели инструментов «Действия», то создать отношение 1:N для этой сущности невозможно.
Для нового отношения в разделе Определение отношения выберите в списке Связанная сущность сущность для связывания.
Примечание
При указании связанной сущности задается значение по умолчанию в поле Имя. Если изменить связанную сущность перед ее сохранением, соответственно изменится и значение поля Имя.
Выберите, будет ли это поле доступно для поиска или нет.
В разделе Поле поиска укажите значение для поля в поле Отображаемое имя.
Важно!
При указании значения Отображаемое имя задается значение по умолчанию в поле Имя
Если изменить Отображаемое имя поля поиска перед сохранением данных, значение в поле Имя не изменится. Поэтому необходимо ввести в поле Имя информативное значение перед сохранением данных.
В списке Требование поля выберите вариант, чтобы указать требования к данным для поля перед сохранением записи.
В разделе Элемент области переходов для основной сущности в списке Параметры отображения выберите вариант отображения связанных представлений для пользовательской метки.
В разделе Поведение отношений выберите в списке Тип отношений один из следующих вариантов.
Родительское. В родительском отношении между двумя сущностями любое действие, выполняемое над записью основной (родительской) сущности, также выполняется над всеми связанными с ней записями дочерних сущностей.
Ссылочное. При ссылочном отношении между двумя сущностями можно переходить к любым связанным записям, но действия, выполняемые над одной записью, не применяются к другим.
Ссылочное с ограниченным удалением. В ссылоном отношении с ограничением удаления можно переходить к любым связанным записям. Действия, выполняемые над родительской записью, не будут выполняться над дочерней, но пока она существует, удалить родительскую запись будет невозможно. Учтите, что запись нельзя удалить, если имеются связанные с ней записи.
Настраиваемое каскадное. В настраиваемом каскадном отношении между двумя сущностями выбирается поведение, связанное с каждым из наборов возможных действий.
Важно!
Если выбрать поведения для действий, совпадающие с поведениями для действий, связанными с другим Типом поведения, то при сохранении отношения значение Тип поведения будет автоматически установлено равным такому совпадающему типу.
Дополнительные сведения:
-
Выберите Сохранить и закрыть, чтобы закрыть форму Отношение.
-
Выполнив настройки, опубликуйте их:
-
Чтобы опубликовать настройки только для компонента, изменяемого в данный момент, на панели инструментов «Действия» выберите Опубликовать.
-
Чтобы опубликовать настройки для всех неопубликованных компонентов одновременно, на панели навигации или в области переходов выберите Сущности, затем на панели инструментов «Действия» выберите Опубликовать все настройки.
-
Примечание
- Настраиваемая сущность не может быть основной в каскадном отношении со связанной системной сущностью. Это означает, что между основной настраиваемой сущностью и связанной системной сущностью не может быть отношений с каким-либо из действий, установленным в «Передавать всем», «Передавать активным» или «Передавать владельцу».
- У новых отношений действие не может иметь значение Передавать всем, Передавать активным или Передавать владельцу, если связанная сущность в этом отношении уже является связанной сущностью в любом другом отношении, действие которого имеет значение Передавать всем, Передавать активным или Передавать владельцу. Это позволяет избежать создания отношений с несколькими родительскими сущностями.
- После каждого изменения элементов пользовательского интерфейса или внедрения скриптов формы для сущности необходима публикация изменений. Все изменения в схеме данных приложения, таких как настраиваемые сущности, связи или поля, применяются сразу.
- Если отношение является частью управляемого решения, разработчик решения может ограничить настройку отношения пользователями.
- Установка решения или публикация настроек может помешать нормальной работе системы. Рекомендуется запланировать импорт решения в оптимальный для пользователей период.
В этой статье
После создания таблицы для каждой темы в базе данных нужно предоставить приложению Accessсредства, с помощью которых можно будет при необходимости объединять сведения. Это делается путем создания общих полей в связанных таблицах и настройки связей между таблицами. После этого можно создавать запросы, формы и отчеты, одновременно отображающие сведения из нескольких таблиц. Например, приведенная ниже форма содержит сведения из нескольких таблиц:
1. Эта форма содержит данные из таблицы клиентов,
4. и сведений о заказах.
Имя клиента в поле Плательщик получено из таблицы «Клиенты», значения кода заказа и даты заказа — из таблицы «Заказы», наименование товара — из таблицы «Товары», а цена и количество — из таблицы «Заказано». Чтобы можно было передать данные в форму, эти таблицы связаны друг с другом несколькими способами.
В приведенном примере поля в таблицах должны быть согласованы таким образом, чтобы отображать сведения об одном и том же заказе. Это согласование осуществляется путем установления связей между таблицами. Связь между таблицами устанавливает отношения между значениями в ключевых полях — часто между полями, имеющими одинаковые имена в обеих таблицах. В большинстве случаев с первичным ключом одной таблицы, являющимся уникальным идентификатором каждой записи, связывается внешний ключ другой таблицы. Например, для связывания сотрудников с заказами, за которые они отвечают, можно создать связь между полями «Код сотрудника» в таблицах «Сотрудники» и «Заказы».
1. Поле «Код сотрудника» отображается в двух таблицах: как первичный ключ.
2. и как внешний ключ.
Таблицы в БД Access
Таблицы в БД похожи на обычную электронную таблицу, ведь и там, и там мы видим информацию, расположенную в столбцах и строках. Разница лишь в том, что в базах данных информация структурирована. Кстати, выполнить импорт обычной электронной таблицы в таблицу БД, как правило, не вызывает затруднений.
Строки в таблице — это записи, содержащие блоки информации. Каждая запись состоит как минимум из одного поля, причём поля соответствуют столбцам.
Как правило, реляционная база данных, например Access, включает в себя несколько таблиц. Если база данных спроектирована хорошо, в каждой таблице есть сведения о конкретном объекте, к примеру о товарах либо сотрудниках. Как мы уже сказали, таблица состоит из строк (записей) и столбцов (полей). В свою очередь, поля содержат разные типы данных: числа, даты, текст, гиперссылки:
- Это запись, содержащая конкретные данные о конкретном работнике.
- Это поле (столбец), содержащее данные об одном из аспектов элемента нашей таблицы (у нас это имя).
- Тут мы видим значение поля.