Диго С.М. Базы данных проектирование и использование (1084447), страница 37
Текст из файла (страница 37)
Кроме рассмотренных выше способов создать таблицу можно с использованием Мастера таблиц (Таблица/Создать/Мастер таблиц). В левой части окна Создание таблиц высвечивается перечень образцов таблиц, из которых можно выбрать подходящую по содержанию таблицу (рис. 5.22).
Из выбранной таблицы можно перенести все или некоторые поля во вновь создаваемую таблицу, можно изменить имя поля. Чтобы ввести какие-либо другие изменения в структуру создаваемой таблицы, следует завершить формирование таблицы с помощью Мастера, после чего откорректировать структуру в обычном порядке. Как видим, использование этой возможности не освобождает от понимания основ проектирования БД, так как нужно оценить, насколько предлагаемое в качестве образца решение соответствует вашим потребностям, и при необходимости изменить предлагаемую структуру БД.
Создать таблицу можно и путем импорта ее из других систем. Кроме того, в виде таблицы можно сохранить результат запроса (см. главу 6). В Access имеется еще возможность создавать таблицу в режиме таблицы, но этот способ не представляется интересным.
5.2.4. Связывание таблиц
После того как таблицы созданы, можно задать их связанность. Для этого надо выбрать позицию меню Сервис/Схема данных (либо щелкнуть по соответствующей кнопке на панели инструментов). Далее в открывшемся окне Схема данных следует добавить в окно те таблицы, между которыми будет определяться связь. Такие таблицы чаще всего связаны отношением 1:М. Для установления связи нужно позиционироваться на поле связи (обычно это первичный ключ) в основной таблице (та, которая стоит на стороне «1»), не отпуская клавишу мыши, перетащить появившийся значок на соответствующее поле в зависимом файле и отпустить клавишу мыши. После этого на экране появится окно Изменение связей (рис. 5.23). Далее следует определить, нужно ли задавать ограничения целостности связи, и если да, то выбрать режимы корректировок (обновления и удаления). Если вы задаете ограничения целостности, то поле связи основной записи должно быть проиндексировано.
В рассматриваемом в качестве примера случае при связывании таблиц «Кафедра» и «Сотрудник» ограничение целостности следует задать, чтобы в таблице «Сотрудник» не появлялись коды кафедр, которые отсутствуют в справочнике «Кафедра». Задавать «каскадное обновление связанных полей» в данном случае не имеет смысла. Каскадное обновление означает, что при изменении первичного ключа в основной таблице соответствующие поля в связанной таблице автоматически изменяются. В таблице «Кафедра» поле «Код_кафедры» имеет тип «Счетчик». Это означает, что изменять значение этого поля нельзя. Задавать каскадное удаление в данном случае тоже опасно, поскольку в случае ликвидации какой-то кафедры и удаления соответствующей записи из таблицы «Кафедра» окажутся удаленными из таблицы «Сотрудник» все записи сотрудников, работавших на этой кафедре.
Для связи же таблиц «Сотрудник» и «Дети» (рис. 5.24) каскадное удаление вполне уместно.
Существуют понятия внутреннего, левого и правого соединения. В окне Изменение связей, появляющемся при установлении связи между двумя таблицами, есть кнопка Объединение, щелкнув по которой пользователь попадает в окно Параметры объединения, в котором он может выбрать один из трех вариантов:
-
объединение только тех записей, в которых значения связанных полей обеих таблиц совпадают;
-
объединение всех записей первой таблицы и только тех записей из второй таблицы, в которых значения связанных полей обеих таблиц совпадают;
-
объединение всех записей второй таблицы и только тех записей из первой таблицы, в которых значения связанных полей обеих таблиц совпадают.
Первый из перечисленных вариантов обозначает внутреннее, второй - левое, третий - правое соединение.
Параметры объединения влияют на то, какие записи из связанных таблиц будут выводиться в ответ при просмотре базы данных. Поэтому при реализации запросов следует обязательно иметь в виду, как связаны таблицы, и при необходимости изменять параметры объединения. Более подробно эти аспекты будут изложены при рассмотрении языков запросов (см. главы 6 и 7).
5.2.5. Просмотр связанных таблиц
В Access 2000 и выше при работе с таблицей можно просматривать и корректировать данные не только текущей таблицы, но и связанных с ней таблиц (подтаблиц).
Предположим, что имеется база данных со схемой, представленной на рис. 5.25.
Если таблицы предварительно связаны, то при просмотре таблицы, имеющей подчиненные ей таблицы, между колонкой выделения и первым столбцом таблицы появляется столбец, в котором в каждой строке стоит знак «+» (рис. 5.26). Если щелкнуть по нему левой клавишей мыши, то высвечиваются те записи подчиненной таблицы, которые относятся к данной записи основной таблицы (рис. 5.27).
Если таблица имеет несколько непосредственно подчиненных ей таблиц, то одновременно в режиме таблицы можно просматривать только одну из них. Определить, какая это будет подтаблица, можно, если выбрать позицию меню Вставка/Подтаблица и в открывшемся окне Вставка подтаблицы - нужную подтаблицу (рис. 5.28).
В то же время можно просматривать цепочку иерархически связанных подтаблиц. Если имеется последовательность иерархически связанных таблиц (на рис. 5.25 это «Сотрудник»-«Зн_яз»-«Аттестации_яз»), то окна взаимосвязанных таблиц могут быть открыты для всей цепочки взаимосвязанных таблиц (рис. 5.29).
5.2.6. Задание ограничений целостности в Access
Обеспечение целостности БД - важнейшая задача при создании БнД, поскольку обеспечение адекватности базы данных отображаемой предметной области является одним из основных требований, предъявляемых к БнД.
При изложении вопросов создания и связывания таблиц мы уже касались некоторых аспектов обеспечения целостности БД. Рассмотрим другие возможности задания ограничений целостности.
В Access многие ограничения целостности могут задаваться при создании таблицы.
Ограничения, относящиеся к полю
Тип поля. Он определяет допустимые символы, которые могут быть использованы при его заполнении (в частности, не допускается ввод текста в числовые поля).
Для некоторых типов полей, например поля типа «дата», осуществляется и более сложная проверка. Если допущена ошибка в типе данных или неправильно введена дата, то пользователь должен обязательно исправить ошибку, так как СУБД не дает других возможностей продолжить работу.
Ряд свойств полей также позволяет обеспечивать контроль целостности:
-
размер поля;
-
формат поля;
-
маска ввода;
-
значение по умолчанию;
-
условия на значения;
-
сообщение об ошибке;
-
обязательное поле;
-
пустые строки;
-
индексированное поле.
Каждое из них в той или иной степени связано с ограничениями целостности.
Поясним использование некоторых из перечисленных выше свойств в целях обеспечения контроля целостности на отдельных примерах.
Размер поля. В поле нельзя ввести больше символов, чем это зафиксировано в свойстве «размер поля» или предопределено типом поля.
Условия на значения. Это одна из самых гибких возможностей определения ограничений целостности. Условия вводятся как выражения. Выражения могут быть простыми или сложными. Используя их, можно задавать и диапазоны. Например, условие: >#1.92#, заданное как «Условие на значения» для поля «Дата_приема_на_работу», будет означать, что допустим ввод дат только после 1992 г. Значения даты необходимо заключать в символы номера (#). Такое ограничение целостности может быть использовано, например, в случае, если организация, для которой ведется БД, была создана 1 января 1992 г. и все зачисления на работу были после этой даты. При задании такого ограничения целостности ввод значения в поле будет обязательным (даже если в свойстве поля «Обязательное поле» зафиксировано -«Нет»).
Условия на значения могут задаваться для полей или записей. Выражения, определяющие условия на значения, не должны содержать функции, определяемые пользователем, статистические функции или функции по подмножеству, функции CurrentUser или Eval, a также ссылки на формы, запросы и таблицы. Кроме того, выражение, указанное в качестве условия для поля, не должно содержать ссылки на другие поля.
Выражение, указанное в качестве условия на значение для записи, может содержать ссылки на поля той же таблицы. Условия на значения для записей задаются в окне свойств таблицы, вызываемом командой Свойства меню Вид в режиме Конструктор таблицы.
Если пользователь задает значение свойства «Условие на значение», но не определяет свойство «Сообщение об ошибке», то при нарушении условия на значение Microsoft Access выводит стандартное сообщение об ошибке. Если значение свойства «Сообщение об ошибке» задано (рис. 5.30), то в сообщении об ошибке выводится текст, указанный в качестве значения этого свойства.
В Access нет специального способа задания домена перечислением. Как было показано выше, этого можно достичь, используя «Мастер подстановки». Кроме того, это можно сделать и путем задания соответствующего выражения для свойства «Условие на значение». Например, для поля «Должность» в БД сотрудников вузов можно задать условие:
«ассистент» OR «старший преподаватель» OR
«доцент» OR «профессор».
На рис. 5.31 приведен пример задания ограничения на домен для поля «Пол». Кроме того, для этого поля задано и «Значение по умолчанию».
Приведенный на рис. 5.30 пример демонстрирует задание открытого диапазона. Закрытый диапазон для контроля введенных значений приведен на рис. 5.32.
Это же ограничение может быть задано и иначе (рис. 5.33), что более удобно.
Маска ввода. Она применяется для того, чтобы ограничить символы, которые будут использованы при заполнении значения поля, и это может рассматриваться как один из способов задания ограничений целостности.
Предположим, нужно ввести в таблицу имена сотрудников. Для соответствующего поля можно задать маску ввода, которая позволит использовать только буквы при вводе, обеспечит преобразование первого символа в верхний регистр, всех остальных - в нижний, и допускает использование не менее двух букв (считаем, что имен, состоящих из одной буквы, нет).