Создание базы данных
В этой статье рассматривается базовый процесс запуска Access и создания базы данных, которая будет использоваться на настольных компьютерах, а не через Интернет. В ней рассказано о том, как создать классическую базу данных на основе шаблона или с нуля с собственными таблицами, формами, отчетами и другими объектами. Кроме того, в статье рассмотрены способы импорта существующих данных в новую базу данных.
В этой статье
- Обзор
- Создание базы данных с помощью шаблона
- Создание базы данных без использования шаблона
- Копирование данных из другого источника в таблицу Access
- Импорт, добавление или связывание данных из другого источника
- Добавление части приложения
- Открытие существующей базы данных Access
Обзор
При первом запуске Access или при закрытии базы данных без закрытия Access отображается представление Microsoft Office Backstage.
Представление Backstage — это отправная точка, с которой можно создать новую базу данных, открыть существующую базу данных, просмотреть рекомендуемое содержимое из Office.com — все, что можно использовать access для работы с файлом базы данных или за ее пределами , а не в базе данных.
Создание базы данных
При открытии Access в представлении Backstage отображается вкладка Создать . На вкладке Создать можно создать базу данных несколькими способами:
- Пустая база данных Вы можете начать с нуля, если хотите. Это хороший вариант, если у вас есть очень конкретные требования к проектированию или есть существующие данные, которые необходимо разместить или включить.
- Шаблон, установленный вместе с Access Если вы запускаете новый проект и хотите начать работу, рассмотрите возможность использования шаблона. Access поставляется с несколькими шаблонами, установленными по умолчанию.
- Шаблон из Office.com В дополнение к шаблонам, поставляемым с Access, много других шаблонов доступно на сайте Office.com. Для их использования даже не нужно открывать браузер, потому что эти шаблоны доступны на вкладке Создать.
Добавление объектов в базу данных
При работе с базой данных в нее можно добавлять поля, таблицы и части приложения.
Части приложения — это функция, позволяющая использовать несколько связанных объектов базы данных как один объект. Например, часть приложения может состоять из таблицы и формы, основанной на ней. С помощью части приложения можно одновременно добавить в базу данных таблицу и форму.
Также можно создавать запросы, формы, отчеты, макросы — любые объекты базы данных, необходимые для работы.
Создание базы данных с помощью шаблона
В Access есть разнообразные шаблоны, которые можно использовать как есть или в качестве отправной точки. Шаблон — это готовая к использованию база данных, содержащая все таблицы, запросы, формы, макросы и отчеты, необходимые для выполнения определенной задачи. Например, существуют шаблоны, которые можно использовать для отслеживания вопросов, управления контактами или учета расходов. Некоторые шаблоны содержат примеры записей, демонстрирующие их использование.
Если один из этих шаблонов вам подходит, с его помощью обычно проще и быстрее всего создать необходимую базу данных. Однако если необходимо импортировать в Access данные из другой программы, возможно, будет проще создать базу данных без использования шаблона. Так как в шаблонах уже определена структура данных, на изменение существующих данных в соответствии с этой структурой может потребоваться много времени.
- Если база данных открыта, нажмите на вкладке Файл кнопку Закрыть. В представлении Backstage откроется вкладка Создать.
- На вкладке Создать доступно несколько наборов шаблонов. Некоторые из них встроены в Access, а другие шаблоны можно скачать с сайта Office.com. Дополнительные сведения см. в следующем разделе.
- Выберите шаблон, который вы хотите использовать.
- Access предлагает имя файла для вашей базы данных в поле Имя файла . При необходимости имя файла можно изменить. Чтобы сохранить базу данных в папке, отличной от папки, которая отображается под полем имени файла, щелкните , перейдите в папку, в которой вы хотите сохранить ее, и нажмите кнопку ОК. При необходимости можно создать базу данных и связать ее с сайтом SharePoint.
- Нажмите кнопку Создать. Access создаст базу данных на основе выбранного шаблона, а затем откроет ее. Для многих шаблонов при этом отображается форма, в которую можно начать вводить данные. Если шаблон содержит примеры данных, вы можете удалить каждую из этих записей, щелкнув область маркировки (затененное поле или полосу слева от записи) и выполнив действия, указанные ниже. На вкладке Главная в группе Записи нажмите кнопку Удалить.
- Щелкните первую пустую ячейку в форме и приступайте к вводу данных. Для открытия других необходимых форм или отчетов используйте область навигации. Некоторые шаблоны содержат форму навигации, которая позволяет перемещаться между разными объектами базы данных.
Дополнительные сведения о работе с шаблонами см. в статье Создание базы данных Access на компьютере с помощью шаблона.
Создание базы данных без использования шаблона
Если вы не заинтересованы в использовании шаблона, вы можете создать базу данных, создав собственные таблицы, формы, отчеты и другие объекты базы данных. В большинстве случаев это связано с одним или обоими из следующих действий:
- Ввести, вставить или импортировать данные в таблицу, которая создается вместе с базой данных, и повторить эту процедуру для новых таблиц, которые создаются с помощью команды Таблица на вкладке Создание.
- Импортировать данные из других источников, при этом создав таблицы.
Создание пустой базы данных
- На вкладке Файл щелкните Создать и выберите вариант Пустая база данных.
- В поле Имя файла введите имя файла. Чтобы изменить расположение файла по умолчанию, нажмите кнопку Обзор расположения, чтобы поместить базу данных (рядом с полем Имя файла ), перейдите к новому расположению и нажмите кнопку ОК.
- Щелкните Создать. Access создаст базу данных с пустой таблицей «Таблица1» и откроет ее в режиме таблицы. Курсор будет помещен в первую пустую ячейку столбца Щелкните для добавления.
- Чтобы добавить данные, начните вводить их или вставьте из другого источника (см. раздел Копирование данных из другого источника в таблицу Access).
Ввод данных в режиме таблицы очень похож на работу на листе Excel. Структура таблицы создается при вводе данных. При добавлении нового столбца в таблицу в таблице определяется новое поле. Access автоматически задает тип данных каждого поля на основе введенных данных.
Если вы не хотите вводить данные в таблицу Table1 в настоящее время, нажмите кнопку Закрыть . Если вы внесли изменения в таблицу, будет предложено сохранить их. Нажмите кнопку Да, чтобы сохранить изменения, кнопку Нет, чтобы не сохранять их, или кнопку Отмена, чтобы оставить таблицу открытой.
Совет: Access ищет файл с именем Blank.accdb в папке [диск установки]:\Program Files\Microsoft Office\Templates\1049\Access\. Если он существует, Blank.accdb — это шаблон для всех новых пустых баз данных. Все новые базы данных наследуют содержимое этого файла. Это отличный способ распространения содержимого по умолчанию, например номеров компонентов или заявлений об отказе от ответственности и политик компании.
Важно: Если хотя бы один раз закрыть таблицу «Таблица1» без сохранения, она будет удалена полностью, даже если в нее введены данные.
Добавление таблицы
Добавление таблиц к существующей базе данных осуществляется командами группы Таблицы на вкладке Создать.
Создание таблицы в режиме таблицы. В режиме таблицы можно начать ввод данных сразу, структура таблицы при этом будет создаваться автоматически. Полям присваиваются имена с последовательными номерами («Поле1», «Поле2» и т. д.), а тип данных автоматически задается с учетом вводимых данных.
- на вкладке Создание в группе Таблицы нажмите кнопку Таблица. Access создаст таблицу и выделит первую пустую ячейку в столбце Щелкните для добавления.
- На вкладке Поля таблицы в группе Добавить & удалить выберите тип поля, которое нужно добавить. Если вы не видите нужный тип, щелкните Дополнительные поля .
- Откроется список часто используемых типов полей. Выберите необходимый тип поля, и Access добавит в таблицу новое поле в точке вставки. Поле можно переместить путем перетаскивания. При этом в таблице появляется вертикальная полоса вставки, указывающая место, где будет расположено поле.
- Чтобы добавить данные, начните вводить их в первую пустую ячейку или вставьте из другого источника (см. раздел Копирование данных из другого источника в таблицу Access).
- Для переименования столбца (поля) дважды щелкните его заголовок и введите новое название. Присвойте полям значимые имена, чтобы при просмотре области Список полей было понятно, что содержится в каждом поле.
- Чтобы переместить столбец, щелкните его заголовок для выделения столбца и перетащите столбец в нужное место. Можно выделить несколько смежных столбцов и перетащить их одновременно. Чтобы выделить несколько смежных столбцов, щелкните заголовок первого столбца, а затем, удерживая нажатой клавишу SHIFT, щелкните заголовок последнего столбца.
Создание таблицы в режиме конструктора. В режиме конструктора сначала следует создать структуру таблицы. Затем можно переключиться в режим таблицы для ввода данных или ввести данные, используя другой способ, например вставить данные из буфера обмена или импортировать их.
- На вкладке Создание в группе Таблицы нажмите кнопку Конструктор таблиц.
- Для каждого поля в таблице введите имя в столбце Имя поля, а затем в списке Тип данных выберите тип данных.
- При желании можно ввести описание для каждого поля в столбце Описание. Это описание будет отображаться в строке состояния, когда в режиме таблицы курсор будет находиться в данном поле. Описание также отображается в строке состояния для любых элементов управления в форме или отчете, которые создаются путем перетаскивания этого поля из области списка полей, и любых элементов управления, которые создаются для этого поля при использовании мастера отчетов или мастера форм.
- Когда все необходимые поля будут добавлены, сохраните таблицу:
- На вкладке Файл щелкните Сохранить.
- Вы можете начать вводить данные в таблице в любое время, переключившись в режим таблицы и щелкнув первую пустую ячейку. Вы также можете вставить данные из другого источника, как описано в разделе Копирование данных из другого источника в таблицу Access.
Задание свойств полей в режиме конструктора. Независимо от способа создания таблицы рекомендуется проверить и задать свойства полей. Хотя некоторые свойства доступны в режиме таблицы, другие можно настроить только в режиме конструктора. Чтобы перейти в режим конструктора, в области навигации щелкните таблицу правой кнопкой мыши и выберите пункт Конструктор. Чтобы отобразить свойства поля, щелкните его в сетке конструктора. Свойства отображаются под сеткой конструктора в области Свойства поля.
Щелкните свойство поля, чтобы просмотреть его описание рядом со списком Свойства поля. Более подробные сведения можно получить, нажав кнопку справки.
В следующей таблице описаны некоторые наиболее часто изменяемые свойства полей.
Размер поля
Для текстовых полей это свойство указывает максимально допустимое количество знаков, сохраняемых в поле. Максимальное значение: 255. Для числовых полей это свойство определяет тип сохраняемых чисел («Длинное целое», «Двойное с плавающей точкой» и т. д.). Для более рационального хранения данных рекомендуется выделять для хранения данных наименьший необходимый размер памяти. Если потребуется, это значение позже можно изменить.
Формат поля
Это свойство определяет формат отображения данных. Оно не влияет на фактические данные, сохраняемые в этом поле. Вы можете выбрать встроенный формат или задать собственный.
Маска ввода
Это свойство используется для определения общего шаблона для ввода любых данных в поле. Это позволяет обеспечить правильный ввод и нужное количество знаков для всех данных. Для получения справки по созданию маски ввода нажмите кнопку справа от поля свойства.
Значение по умолчанию
Это свойство позволяет задать стандартное значение, которое будет отображаться в этом поле при добавлении новой записи. Например, для поля «Дата/время», в котором необходимо записывать дату добавления записи, в качестве значения по умолчанию можно ввести «Date()» (без кавычек).
Обязательное поле
Это свойство указывает, обязательно ли вводить значение в поле. Если для него задано значение Да, невозможно будет добавить запись, если в это поле не введено значение.
Копирование данных из другого источника в таблицу Access
Если ваши данные хранятся в другой программе, например Excel, их можно скопировать и вставить в таблицу Access. Как правило, этот метод работает лучше всего, если данные уже разделены на столбцы, как в таблице Excel. Если данные находятся в текстовом редакторе, перед копированием рекомендуется разделить столбцы данных с помощью табуляции или преобразовать данные в таблицу. Если необходимо изменить данные или выполнить с ними другие операции (например, разделить полное имя на имя и фамилию), рекомендуется сделать это перед копированием данных, особенно если вы не знакомы с Access.
При вставке данных в пустую таблицу приложение Access задает тип данных для каждого поля в зависимости от того, какие данные в нем находятся. Например, если во вставляемом поле содержатся только значения даты, для этого поля используется тип данных «Дата/время». Если же вставляемое поле содержит только слова «Да» и «Нет», для этого поля выбирается тип данных «Логический».
Access присваивает имена полям в зависимости от того, что он находит в первой строке вставленных данных. Если первая строка вставленных данных по типу похожа на следующие строки, Access определяет, что первая строка является частью данных, и назначает полям универсальные имена (F1, F2 и т. д.). Если первая строка вставленных данных не похожа на следующие строки, Access определяет, что первая строка состоит из имен полей. Access присваивает полям соответствующие имена и не включает первую строку в данные.
В Access имена присваиваются полям автоматически, поэтому во избежание путаницы поля следует переименовать. Это можно сделать следующим образом:
- Нажмите клавиши CTRL+S, чтобы сохранить таблицу.
- В режиме таблицы дважды щелкните заголовок каждого столбца и введите описательное имя поля для каждого столбца.
- Еще раз сохраните таблицу.
Примечание: Кроме того, для изменения имен полей можно переключиться в режим конструктора. Для этого в области навигации щелкните таблицу правой кнопкой мыши и выберите пункт Конструктор. Чтобы вернуться в режим таблицы, дважды щелкните таблицу в области навигации.
Импорт, добавление или связывание данных из другого источника
Возможно, у вас есть данные, хранящиеся в другой программе, которые вы хотите импортировать в новую таблицу Access или добавить в существующую. Кроме того, если ваши коллеги хранят данные в других программах, может потребоваться создать связь с такими данными. В обоих случаях работа с данными из других источников не представляет сложности. Вы можете импортировать данные из листа Excel, таблицы в другой базе данных Access, списка SharePoint и других источников. Процесс импорта для разных источников немного различается, однако всегда начинается так, как описано ниже.
-
В Access на вкладке Внешние данные в группе Импорт & link выберите Новый источник данных, а затем выберите команду для типа импортируемого файла. Например, если вы импортируете данные с листа Excel, щелкните Создать источник данных >из файла >Excel.
Примечание: Если не удается найти нужный тип формата в группе Импорт и связи, может потребоваться запустить программу, в которой созданы эти данные, а затем сохранить в ней данные в файле общего формата (например, как текстовый файл с разделителями) перед импортом данных в Access.
Если вы решили импортировать таблицу, Access импортирует данные в новую таблицу и отображает ее в группе Таблицы в области навигации. Если выбрано добавление данных к существующей таблице, данные добавляются к ней. Если вы связываете данные, в группе Таблицы в области навигации создается связанная таблица.
Добавление части приложения
Части приложения можно использовать для расширения функциональности баз данных. Часть приложения может быть просто отдельной таблицей, а может включать несколько объектов, таких как таблицы и связанные формы.
Например, часть приложения «Примечания» состоит из таблицы с полем идентификатора, имеющим тип «Счетчик», поля даты и поля MEMO. Ее можно добавить в базу данных и использовать как есть или с минимальными изменениями.
- Откройте базу данных, в которую вы хотите добавить часть приложения.
- Откройте вкладку Создание.
- В группе Шаблоны нажмите кнопку Части приложения. Появится список доступных частей.
- Щелкните часть приложения, которую вы хотите добавить.
Открытие существующей базы данных Access
- На вкладке Файл нажмите кнопку Открыть.
- В диалоговом окне Открытие файла базы данных найдите базу данных, которую нужно открыть.
- Выполните одно из следующих действий.
- Чтобы открыть базу данных в режиме по умолчанию, дважды щелкните ее (режим по умолчанию может быть указан в диалоговом окне Параметры Access или установлен административной политикой).
- Нажмите кнопку Открыть, чтобы открыть базу данных для общего доступа в многопользовательской среде и предоставить другим пользователям возможность выполнять в ней чтение и запись.
- Щелкните стрелку рядом с кнопкой Открыть и выберите вариант Открыть для чтения, чтобы открыть базу данных только для чтения, то есть для просмотра без возможности внесения изменений. При этом другие пользователи смогут выполнять запись в базу данных.
- Щелкните стрелку рядом с кнопкой Открыть и выберите вариант Монопольно, чтобы открыть базу данных в монопольном режиме. Если ее затем попытается открыть другой пользователь, он получит сообщение «Файл уже используется».
- Щелкните стрелку рядом с кнопкой Открыть и выберите вариант Монопольно для чтения, чтобы открыть базу данных только для чтения. Другие пользователи при этом смогут открывать базу данных только для чтения.
Примечание: Вы можете напрямую открывать файлы данных внешних форматов, например dBASE, Microsoft Exchange или Excel. Кроме того, можно открыть напрямую любой источник данных ODBC, например Microsoft SQL Server. Access автоматически создаст базу данных Access в одной папке с файлом данных и добавит ссылки на все таблицы внешней базы данных.
Советы
- Чтобы открыть одну из недавно использовавшихся баз данных, щелкните Последние на вкладке Файл и выберите имя файла базы данных. Access откроет базу данных, используя параметры, которые применялись при ее открытии в прошлый раз. Если список последних использовавшихся файлов не отображается, щелкните Параметры на вкладке Файл. В диалоговом окне Параметры Access нажмите кнопку Параметры клиента. В разделе Вывод на экран укажите количество документов, которые необходимо отобразить в списке «Последние документы» (не больше 50). Вы также можете отобразить последние базы данных на панели навигации в представлении Backstage для доступа двумя щелчками: 1) вкладка Файл , 2) последняя база данных, которую вы хотите открыть. В нижней части вкладки Последние выберите поле Быстрый доступ к этому количеству последних баз данных проверка, а затем настройте количество баз данных для отображения.
- При открытии базы данных с помощью команды Открыть на вкладке Файл можно просмотреть список ярлыков недавно открывавшихся баз данных, нажав в диалоговом окне Открыть кнопку Последние.
Урок 1. Создание объектов базы данных и отправка запросов к ним
Схема обучения Начало работы с запросами с помощью Transact-SQL содержит более подробные материалы, а также практические примеры.
На этом занятии вы узнаете, как создать базу данных, создать таблицу в базе данных и получить доступ к данным таблицы и изменить их. Поскольку это занятие представляет собой введение в использование Transact-SQL, в нем не используются и не описываются многие параметры, доступные для этих инструкций.
Инструкции Transact-SQL могут быть написаны и пересланы ядру СУБД следующими способами:
- При помощи среды SQL Server Management Studio. Предполагается, что вы используете среду Среда Management Studio, но можно также использовать среду Среда Management Studio Express, которая может быть загружена бесплатно с веб-узла центра загрузки Майкрософт.
- С помощью служебной программы sqlcmd .
- Соединившись из создаваемого приложения.
Исходный код исполняется в компоненте Компонент Database Engine таким же образом и с теми же разрешениями, независимо от того, как был передан исходный код инструкций.
Чтобы выполнить инструкцию языка Transact-SQL в Management Studio, откройте Management Studio и подключитесь к экземпляру ядра СУБД SQL Server.
Предварительные требования
Для работы с этим руководством необходима среда SQL Server Management Studio и доступ к экземпляру SQL Server.
- Установите SQL Server Management Studio.
Если у вас нет экземпляра SQL Server, создайте его. Чтобы создать экземпляр, выберите свою платформу по следующим ссылкам. При выборе проверки подлинности SQL используйте учетные данные SQL Server.
- Windows: скачайте SQL Server 2022 Developer Edition.
- Linux: скачайте SQL Server 2022 в контейнер.
Создание базы данных
Как и многие инструкции Transact-SQL, инструкция CREATE DATABASE имеет обязательный параметр: имя базы данных. Кроме этого, у инструкции CREATE DATABASE имеется ряд необязательных параметров, таких как расположение на диске, где требуется хранить файлы базы данных. При выполнении инструкции CREATE DATABASE без дополнительных параметров для многих из них SQL Server использует значения по умолчанию.
-
В окне Редактор запросов введите, но не выполняйте следующий код:
CREATE DATABASE TestData GO
При создании базы данных SQL Server создает копию model базы данных и переименовывает ее в имя базы данных. Эта операция обычно занимает несколько секунд, если только с помощью дополнительного параметра не указан большой исходный размер базы данных.
Когда в одном пакете представлено несколько инструкций, они разделяются с помощью ключевого слова GO. Ключевое слово GO является необязательным, если в пакете содержится только одна инструкция.
Создание таблицы
Чтобы создать таблицу, нужно указать имя таблицы, имена и типы данных для каждого столбца таблицы. Также рекомендуется указывать, допускаются ли значения NULL для каждого из столбцов. Для создания таблицы необходимо иметь разрешение CREATE TABLE и разрешение ALTER SCHEMA для схемы, которая будет содержать таблицу. Предопределинная роль базы данных db_ddladmin имеет эти разрешения.
Большинство таблиц имеют первичный ключ, состоящий из одной или нескольких столбцов таблицы. Первичный ключ всегда уникален. Компонент Компонент Database Engine применяет ограничение на то, что любое значение первичного ключа не может повторяться в таблице.
Список типов данных и ссылки на их описание см. в разделе Типы данных (Transact-SQL).
Компонент Компонент Database Engine может быть установлен с учетом регистра и без учета регистра. Если компонент Компонент Database Engine установлен с учетом регистра, имена объектов должны иметь одно и тоже имя. Например, таблица с именем OrderData будет отличаться от таблицы ORDERDATA. Если компонент Компонент Database Engine установлен без учета регистра, эти два имени таблицы будут рассматриваться как одна таблица, то есть имя может быть использовано только один раз.
Переключение соединения редактора запросов на базу данных TestData
В окне редактора запросов введите и выполните следующий код, чтобы изменить соединение на базу данных TestData .
USE TestData GO
Создание таблицы
В окне редактора запросов введите и выполните следующий код, чтобы создать таблицу Products . Столбцы таблицы имеют имена ProductID , ProductName , Price и ProductDescription . Столбец ProductID является первичным ключом таблицы. int , varchar(25) , money и varchar(max) . Только столбцы Price и ProductionDescription могут быть пустыми при вставке или изменении строки. Данная инструкция содержит необязательный элемент ( dbo. ), называемый схемой. Схема — это объект базы данных, к которому принадлежит таблица. Если вы являетесь администратором, схемой по умолчанию будет схема dbo . dbo означает владельца базы данных.
CREATE TABLE dbo.Products (ProductID int PRIMARY KEY NOT NULL, ProductName varchar(25) NOT NULL, Price money NULL, ProductDescription varchar(max) NULL) GO
Вставка данных в таблицу и их обновление
Теперь, когда таблица создана Products , можно приступать к вставке данных в нее с помощью инструкции INSERT. После вставки данных содержимое строки изменяется с помощью инструкции UPDATE. Используйте предложение WHERE инструкции UPDATE, чтобы ограничить обновление одной строкой. Четыре оператора вводит следующие данные.
| ProductID | ProductName | Цена | ProductDescription |
|---|---|---|---|
| 1 | Clamp | 12,48 | Workbench clamp |
| 50 | Screwdriver | 3,17 | Flat head |
| 75 | Tire Bar | Tool for changing tires. | |
| 3000 | 3 mm Bracket | 0,52 |
Базовый синтаксис: INSERT, имя таблицы, список столбцов, VALUES, а затем список добавляемых значений. Два дефиса перед строкой указывают, что строка является комментарием, а текст игнорируется компилятором. В этом случае примечание описывает возможные варианты синтаксиса.
Вставка данных в таблицу
- Выполните следующую инструкцию, чтобы добавить строку в таблицу Products , которая была создана в предыдущей задаче.
-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GO
Если вставка выполнена, перейдите к следующему шагу. Если вставка завершается сбоем, это может быть вызвано тем, что в таблице Product уже есть строка с таким ИД продукта. Чтобы продолжить, удалите все строки в таблице и повторите предыдущий шаг. TRUNCATE TABLE удаляет все строки в таблице. Выполните следующую команду, чтобы удалить все строки в таблице:
TRUNCATE TABLE TestData.dbo.Products; GO
-- Changing the order of the columns INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription) VALUES ('Screwdriver', 50, 3.17, 'Flat head') GO
-- Skipping the column list, but keeping the values in order INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.') GO
-- Dropping the optional dbo and dropping the ProductDescription column INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3 mm Bracket', 0.52) GO
Обновление таблицы продуктов
Введите и выполните следующую инструкцию UPDATE , чтобы изменить значение ProductName второго продукта со значения Screwdriver на значение Flat Head Screwdriver .
UPDATE dbo.Products SET ProductName = 'Flat Head Screwdriver' WHERE ProductID = 50 GO
Чтение данных из таблицы
Для чтения данных в таблице используется инструкция SELECT. Инструкция SELECT является одной из наиболее важных инструкций Transact-SQL, и для нее существует много разновидностей синтаксиса. В этом руководстве вы будете работать с пятью базовыми версиями.
Чтение данных в таблице
- Чтобы прочитать данные из таблицы Products , введите и выполните следующие инструкции.
-- The basic syntax for reading data from a single table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products GO
-- Returns all columns in the table -- Does not use the optional schema, dbo SELECT * FROM Products GO
-- Returns only two of the columns from the table SELECT ProductName, Price FROM dbo.Products GO
-- Returns only two of the records in the table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products WHERE ProductID < 60 GO
-- Returns ProductName and the Price including a 7% tax -- Provides the name CustomerPays for the calculated column SELECT ProductName, Price * 1.07 AS CustomerPays FROM dbo.Products GO
Полезные функции в инструкции SELECT
Сведения о некоторых функциях, которые можно использовать для работы с данными в инструкциях SELECT, см. в следующих статьях:
Создание представлений и хранимых процедур
Представление является хранимой инструкцией SELECT, а хранимая процедура представляет собой одну или более инструкций Transact-SQL, выполняемых в виде пакета.
Представления запрашиваются как таблицы и не принимают параметры. Хранимые процедуры сложнее, чем представления. Хранимые процедуры содержат как входные, так и выходные параметры и могут содержать инструкции, которые управляют потоком кода, например IF и WHILE. Использование хранимых процедур для всех повторяющихся действий в базе данных является хорошим стилем программирования.
В этом примере используется инструкция CREATE VIEW для создания представления, которое выбирает только два столбца в Products таблице. Затем с помощью инструкции CREATE PROCEDURE создайте хранимую процедуру, которая принимает параметр price и возвращает только те продукты, стоимость которых меньше указанного значения параметра.
Создание представления
Выполните следующую инструкцию, создающую представление, которое выполняет инструкцию select и возвращает названия и цены продуктов пользователю.
CREATE VIEW vw_Names AS SELECT ProductName, Price FROM Products; GO
Тестирование представления
С представлениями обращаются так же, как с таблицами. Используйте инструкцию SELECT , чтобы получить доступ к представлению.
SELECT * FROM vw_Names; GO
Создание хранимой процедуры
В следующем примере создается хранимая процедура pr_Names с входным параметром @VarPrice типа money . Эта хранимая процедура печатает инструкцию Products less than , соединенную операцией сцепления с входным параметром, тип которого преобразуется из money в varchar(10) . Затем процедура выполняет инструкцию SELECT на представлении, передавая входной параметр в предложение WHERE . Возвращаются все продукты, цена которых меньше значения входного параметра.
CREATE PROCEDURE pr_Names @VarPrice money AS BEGIN -- The print statement returns text to the user PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10)); -- A second statement starts here SELECT ProductName, Price FROM vw_Names WHERE Price < @VarPrice; END GO
Тестирование хранимой процедуры
Чтобы выполнить хранимую процедуру, введите и выполните следующую инструкцию. Эта процедура должна возвратить названия двух продуктов, введенных в таблицу Products на занятии 1, цена которых меньше 10.00 .
EXECUTE pr_Names 10.00; GO
Дальнейшие действия
В следующей статье вы узнаете, как настроить разрешения в объектах базы данных. Объекты, созданные в уроке 1, также будут использоваться в уроке 2.
Дополнительные сведения см. в следующей статье:
Основные сведения о создании баз данных
База данных с правильной структурой обеспечит вам доступ к актуальным и точным сведениям. Поскольку правильная структура важна для выполнения поставленных задач при работе с базой данных, имеет смысл изучить принципы создания баз данных. Это поможет вам создать базу данных, отвечающую вашим потребностям и позволяющую быстро вносить в нее изменения.
В этой статье приведены рекомендации по планированию базы данных для настольного компьютера. Вы узнаете, как выбирать необходимые сведения, как распределять данные по таблицам и столбцам и как таблицы связаны друг с другом. Прежде чем создавать свою первую базу данных, прочитайте эту статью.
В этой статье
- Некоторые термины, связанные с базами данных
- Что такое правильная структура базы данных?
- Процесс проектирования
- Определение назначения базы данных
- Поиск и упорядочение необходимых сведений
- Распределение данных по таблицам
- Преобразование элементов данных в столбцы
- Задание первичных ключей
- Создание связей между таблицами
- Усовершенствование структуры
- Применение правил нормализации
Некоторые термины, связанные с базами данных
В Access данные упорядочиваются в таблицах, которые представляют собой списки строк и столбцов, напоминающие бухгалтерский блокнот или электронную таблицу. В простой базе данных может быть всего одна таблица. Для большинства баз данных их потребуется несколько. Например, в одной таблице можно хранить сведения о товарах, в другой — о заказах, а в третьей — о клиентах.
Каждую строку правильнее называть записью, а каждый столбец — полем. Запись — это эффективный и согласованный способ объединения сведений о чем-либо. Поле — это отдельный элемент сведений (элементы такого типа есть в каждой записи). Например, в таблице "Товары" каждая строка или запись может содержать сведения об одном товаре. Каждые столбец или поле содержат сведения определенного типа об этом товаре, например название или цену.
Что такое правильная структура базы данных?
В основе процесса создания базы данных лежат определенные принципы. Первый принцип состоит в том, чтобы избегать повторяющихся сведений (также называемых избыточными данными), поскольку они занимают много места и повышают вероятность появления ошибок и несоответствий. Второй принцип провозглашает важность правильности и полноты сведений. Если база данных содержит неправильные сведения, то все отчеты, созданные на основе сведений из этой базы данных, будут содержать неправильные сведения. В итоге решения, которые принимаются на основе этих отчетов, могут оказаться неверными.
Правильная структура базы данных подразумевает:
- распределение сведений по тематическим таблицам для уменьшения количества повторяющихся данных;
- предоставление приложению Access данных, необходимых для объединения сведений в таблицах при необходимости;
- обеспечение точности и целостности сведений;
- соответствие требованиям к обработке данных и созданию отчетов.
Процесс проектирования
Процесс проектирования включает следующие этапы:
- Определение назначения базы данных Помогает подготовиться к остальным этапам.
- Поиск и упорядочение необходимых сведений Соберите сведения всех типов, которые потребуется внести в базу данных, например названия товаров и номера заказов.
- Разделение данных по таблицам Разделите элементы данных по основным темам или группам, например "Товары" и "Заказы". Затем для каждой темы создается таблица.
- Преобразование элементов данных в столбцы Решите, какие сведения будут храниться в каждой таблице. Каждый элемент становится полем и отображается в виде столбца в таблице. Например, таблица "Сотрудники" может содержать такие поля, как "Фамилия" и "Дата найма".
- Задание первичных ключей Выберите первичный ключ для каждой таблицы. Первичный ключ — это столбец, однозначно определяющий каждую строку. Примеры: "Код товара" и "Код заказа".
- Настройка связей между таблицами Проанализируйте все таблицы и определите, как данные одной таблицы связаны с данными других таблиц. Добавьте в таблицы поля или создайте новые таблицы для формирования необходимых связей.
- Усовершенствование структуры Проверьте структуру базы данных на наличие ошибок. Создайте таблицы и добавьте несколько записей с образцами данных. Посмотрите, можно ли получить нужные результаты из таблиц. При необходимости внесите изменения в структуру.
- Применение правил нормализации Примените правила нормализации, чтобы проверить правильность структуры таблиц. При необходимости внесите изменения в таблицы.
Определение назначения базы данных
Рекомендуется записать на бумаге назначение базы данных: ее цель, предполагаемое применение и список пользователей, которые будут с ней работать. Небольшой базе данных для домашнего бизнеса можно дать простое определение, например: "База данных содержит сведения о клиентах и используется для почтовой рассылки и создания отчетов". Для более сложной базы данных, с которой будет работать множество людей, как это часто бывает в больших организациях, определение может состоять из нескольких абзацев, включая время и способы использования ее разными людьми. Идея состоит в том, чтобы детально сформулировать определение, к которому затем можно обращаться в процессе проектирования. Такое определение поможет сосредоточиться на целях и задачах при принятии решений.
Поиск и упорядочение необходимых сведений
Чтобы найти и упорядочить необходимые сведения, начните с имеющейся информации. Например, вы можете записывать заказы на покупку в реестр или хранить сведения о клиентах в бумажных формах в файловом шкафу. Соберите эти документы и выведите список всех типов отображаемых сведений (например, каждое поле, которое вы заполняете в форме). Если у вас нет существующих форм, представьте, что вам нужно создать форму для записи сведений о клиенте. Какую информацию вы бы поместили в форму? Какие поля заполнения вы создадите? Определите и перечислите каждый из этих элементов. Например, предположим, что в настоящее время вы храните список клиентов на карточках индекса. Изучение этих карточек может показать, что каждый карта содержит имя клиента, адрес, город, штат, почтовый индекс и номер телефона. Каждый из этих элементов представляет потенциальный столбец в таблице.
При подготовке списка не старайтесь придать ему законченный вид с первого раза. Записывайте все элементы, которые приходят в голову. Если с базой данных будет работать кто-то еще, попросите их внести свои предложения. Позднее вы сможете скорректировать список.
Теперь подумайте, какие типы отчетов или почтовых рассылок будут выполняться на основе сведений из базы данных. Например, это может быть отчет о продажах товаров по регионам или сводный отчет о складских запасах товаров. Возможно, вы также будете отправлять клиентам стандартные письма, содержащие сведения о продажах или специальных предложениях. Продумайте структуру отчета и представьте себе его внешний вид. Какие сведения нужно включить в отчет? Составьте список. То же сделайте для писем и других отчетов, которые предполагается создавать.
Продумывая структуру предполагаемых отчетов и почтовых рассылок, вы определите те элементы, которые нужно включить в базу данных. Предположим, вы даете клиентам возможность подписаться на периодическую рассылку обновлений (или отказаться от нее) и хотите распечатать список тех, кто подписался. Для записи этих сведений вы добавляете в таблицу клиентов столбец "Отправка почты". В этом поле для каждого клиента можно выбрать значение "Да" или "Нет".
Для отправки клиентам почтовых сообщений требуется записать еще один элемент данных. Если клиент захочет получать почтовые сообщения, вам потребуется его адрес электронной почты. Следовательно, для каждого клиента нужно записать этот адрес.
Имеет смысл создать прототип каждого отчета или списка выходных данных и рассмотреть, какие элементы потребуются для создания отчета. Например, при изучении письма-формы на ум может прийти несколько вещей. Если вы хотите включить правильное приветствие, например строку "Mr.", "Mrs." или "Ms.", которая начинает приветствие, необходимо создать элемент приветствия. Кроме того, обычно вы можете начать письмо с "Уважаемый мистер Смит", а не "Дорогой. Г-н Сильвестр Смит". Это означает, что вы, как правило, хотите хранить фамилию отдельно от имени.
Важно помнить, что каждый фрагмент сведений целесообразно разделить на минимальные элементы. Например, лучше разделить имя и фамилию, чтобы их удобнее было использовать. В частности, чтобы отсортировать отчет по фамилиям, фамилия должна храниться отдельно. Вообще, если вы хотите выполнять сортировку, поиск, вычисления или отчет на основе элемента данных, следует поместить этот элемент в отдельное поле.
Подумайте о тех вопросах, ответы на которые вам поможет получать база данных. Например, каков объем продаж отдельного товара за последний месяц? Где находятся самые перспективные клиенты? Кто поставляет самый продаваемый товар? Список возможных вопросов поможет вам определить дополнительные элементы данных для записи.
Собрав все нужные сведения, вы можете переходить к следующему этапу.
Распределение данных по таблицам
Чтобы распределить данные по таблицам, выделите основные группы или темы. Например, после поиска и упорядочения сведений для базы данных продаж товаров вы можете получить предварительный список такого вида:
Основные группы здесь — товары, поставщики, клиенты и заказы. Поэтому имеет смысл использовать четыре таблицы: по одной для сведений о товарах, поставщиках, клиентах и заказах. Это не окончательный список, но неплохое начало. Вы можете уточнять список, пока не получите наиболее эффективную структуру.
При первом просмотре предварительной таблицы вам может показаться, что удобнее было бы поместить все сведения в одну таблицу, а не в четыре, как показано на предыдущей иллюстрации. Сейчас вы поймете, почему это плохая идея. Посмотрите на эту таблицу:
В этом случае каждая строка содержит сведения как о продукте, так и о его поставщике. Так как у вас может быть много продуктов от одного поставщика, имя поставщика и сведения об адресе должны повторяться много раз. Это пустая трата места на диске. Запись сведений о поставщике только один раз в отдельную таблицу Поставщики, а затем связывание этой таблицы с таблицей Products — это гораздо лучшее решение.
Вторая проблема с этой структурой возникает тогда, когда нужно изменить сведения о поставщике. Предположим, вам нужно изменить адрес поставщика. Но поскольку адрес указан во многих полях, можно случайно изменить его только в одном поле, забыв о других. Эту проблему можно решить, записав адрес поставщика только в одном поле.
При проектировании базы данных всегда старайтесь записать каждый факт только один раз. Если вы обнаружите, что сведения повторяются (например, адрес конкретного поставщика), поместите их в отдельную таблицу.
Наконец, предположим, что у вас есть только один товар, поставляемый компанией Coho Winery, и вы хотите удалить этот товар, но сохранить имя и адрес поставщика. Как удалить запись о товаре, не потеряв сведений о поставщике? Это невозможно. Поскольку каждая запись содержит сведения и о товаре, и о поставщике, вы не можете удалить их по отдельности. Чтобы разделить эти сведения, необходимо сделать из одной таблицы две: одну — для сведений о товаре, другую —для сведений о поставщике. Тогда удаление записи о товаре не приведет к удалению записи о поставщике.
Выбрав тему для таблицы, проследите, чтобы столбцы в ней содержали сведения только по этой теме. Например, в таблице товаров должны храниться сведения только о товарах. Поскольку адрес поставщика относится к сведениям о поставщиках, а не о товарах, он должен храниться в таблице поставщиков.
Преобразование элементов данных в столбцы
Чтобы определить столбцы таблицы, решите, какие сведения по теме таблицы вам нужно отслеживать. Например, в таблицу клиентов можно включить столбцы "Имя", "Адрес", "Город, область, почтовый индекс", "Отправка почты", "Обращение" и "Адрес электронной почты". Набор столбцов одинаков для всех записей в таблице, поэтому для каждой записи можно хранить одни и те же сведения. Например, столбец "Адрес" содержит адреса клиентов. Каждая запись содержит сведения только об одном клиенте, а поле адреса — его адрес.
После определения первоначального набора столбцов для каждой таблицы вы можете затем уточнять и дополнять их. Например, удобно хранить имя и фамилию клиента в разных столбцах, чтобы проще было выполнять сортировку, поиск и индексирование только по этим столбцам. Адрес также состоит из нескольких компонентов (собственно адреса, города, области, почтового индекса и страны), которые лучше хранить в отдельных столбцах. Например, если вы захотите выполнить поиск, фильтрацию или сортировку по областям, вам потребуется, чтобы сведения об областях хранились в отдельном столбце.
Вам также нужно определить, какого рода данные будут храниться в базе данных: отечественные или международные. Например, если вы планируете хранить в базе данных международные адреса, лучше использовать столбец "Регион", а не "Страна", потому что в таком столбце можно указывать области внутри своей страны и регионы других стран. Точно так же в поле "Почтовый индекс" можно будет хранить почтовые индексы разных стран.
В списке ниже приведены некоторые советы по определению столбцов.
- Не включайте вычисляемые данные Не следует хранить в таблицах результаты вычислений. Лучше пусть Access выполняет вычисления всякий раз, как вы захотите увидеть результат. Предположим, что в отчете о заказанных товарах отображаются промежуточные итоги для заказанных товаров каждой категории. Но в таблице нет столбца для промежуточных итогов. Вместо этого в таблице есть столбец для заказанных товаров, в котором хранится количество единиц каждого товара. Используя эти данные, Access вычисляет промежуточные итоги каждый раз при печати отчета. Сами промежуточные итоги не требуется хранить в таблице.
- Разбивайте информацию на минимальные логические компоненты У вас может возникнуть соблазн иметь одно поле для полных названий или названий продуктов вместе с описаниями продуктов. Если вы объединяете несколько видов информации в поле, получить отдельные факты позже будет трудно. Попробуйте разбить информацию на логические части; например, создайте отдельные поля для имени и фамилии или для названия продукта, категории и описания.
Доработав столбцы с данными во всех таблицах, вы можете перейти к выбору первичного ключа для каждой из них.
Задание первичных ключей
Каждая таблица должна содержать столбец или набор столбцов для однозначного определения каждой строки таблицы. Часто для этого используется уникальный идентификационный номер, например код сотрудника или серийный номер. В базах данных эти сведения называются первичным ключом таблицы. Используя поля первичных ключей, Access быстро связывает данные из нескольких таблиц и сводит их для вас воедино.
Если у вас уже есть уникальный идентификатор для таблицы, например код товара, однозначно определяющий товар в каталоге, вы можете использовать его в качестве первичного ключа таблицы, но только при условии, что значения в этом столбце будут разными для всех записей. В первичном ключе не должно быть повторяющихся значений. Например, не следует использовать в качестве первичного ключа имена людей, поскольку они не уникальны. С большой долей вероятности в одной таблице могут оказаться двое людей с одинаковыми именами.
У первичного ключа всегда должно быть значение. Если в какой-то момент столбец может содержать неназначенное или неизвестное (отсутствующее) значение, его нельзя использовать в качестве компонента первичного ключа.
Всегда выбирайте первичный ключ, значение которого не изменится. В базе данных с несколькими таблицами первичный ключ одной таблицы может использоваться в качестве ссылки в других таблицах. Если первичный ключ изменяется, это изменение необходимо применить ко всем ссылкам на этот ключ. Используя неизменяемый первичный ключ, вы снижаете вероятность нарушения синхронизации с другими таблицами.
Часто в качестве первичного ключа используется произвольный уникальный номер. Например, можно присвоить каждому заказу уникальный номер заказа. Единственное назначение номера заказа — идентифицировать заказ. После назначения он никогда не меняется.
Если вы не имеете в виду столбец или набор столбцов, которые могут стать хорошим первичным ключом, рассмотрите возможность использования столбца с типом данных AutoNumber. При использовании типа данных AutoNumber Access автоматически присваивает вам значение. Такой идентификатор не является фактом; он не содержит фактических сведений, описывающих строку, которую он представляет. Идентификаторы без фактов идеально подходят для использования в качестве первичного ключа, так как они не изменяются. Первичный ключ, содержащий факты о строке, например номер телефона или имя клиента, скорее всего, изменится, так как сама фактическая информация может измениться.
1. Столбец с типом данных "Счетчик" — отличный первичный ключ. Коды товаров никогда не совпадают.
В некоторых случаях первичный ключ таблицы составляется из несколько полей. Например, в таблице "Сведения о заказах", которая содержит элементы строк заказов, первичный ключ может включать два столбца: "Код заказа" и "Код товара". Первичный ключ из нескольких столбцов называется составным.
В базе данных продаж вы можете создать столбец типа "Счетчик" для первичного ключа каждой из таблиц: "Код товара" для таблицы товаров, "Код заказа" для таблицы заказов, "Код клиента" для таблицы клиентов и "Код поставщика" для таблицы поставщиков.
Создание связей между таблицами
Теперь, когда вы распределили сведения по таблицам, вам нужен способ их осмысленного объединения. Например, показанная ниже форма содержит сведения из нескольких таблиц.
1. Эта форма содержит данные из таблиц клиентов,
5. и сведений о заказах.
Access — это система управления реляционными базами данных. В реляционной базе данных сведения распределяются по отдельным тематическим таблицам. Для последующего объединения данных используются связи между таблицами.
Создание связи "один ко многим"
Рассмотрим следующий пример: таблицы Поставщики и продукты в базе данных заказов на продукты. Поставщик может поставлять любое количество продуктов. Из этого следует, что для любого поставщика, представленного в таблице Поставщики, в таблице Products может быть много продуктов. Таким образом, связь между таблицей "Поставщики" и таблицей "Продукты" является связью "один ко многим".
Чтобы создать связь "один ко многим" в структуре базы данных, добавьте первичный ключ на стороне "один" в таблицу на стороне "многие" в виде дополнительного столбца или столбцов. Например, в данном случае вы добавляете столбец "Код поставщика" из таблицы "Поставщики" в таблицу "Товары". Затем Access сможет с помощью кода поставщика в таблице "Товары" найти поставщика для каждого товара.
Столбец "Код поставщика" в таблице "Товары" называется внешним ключом. Внешний ключ — это первичный ключ другой таблицы. Столбец "Код поставщика" в таблице "Товары" является внешним ключом, потому что он также является первичным ключом в таблице "Поставщики".
Создавая пары первичных и внешних ключей, вы создаете основу для объединения сведений из связанных таблиц. Если вы не знаете точно, в каких таблицах должен быть общий столбец, определение связи "один ко многим" обеспечивает необходимость общего столбца для двух таблиц.
Создание связи "многие ко многим"
Рассмотрим связь между таблицами "Товары" и "Заказы".
Отдельный заказ может включать несколько товаров. С другой стороны, один товар может входить в несколько заказов. Таким образом, для каждой записи в таблице "Заказы" может существовать несколько записей в таблицы "Товары". Для каждой записи в таблице Products может быть много записей в таблице Orders. Этот тип отношений называется отношением "многие ко многим", так как для любого продукта может быть много заказов; и для любого заказа, может быть много продуктов. Обратите внимание, что для обнаружения связей "многие ко многим" между таблицами важно учитывать обе стороны связи.
Связь между темами двух таблиц (заказов и товаров) относится к типу "многие ко многим". Это проблема. Представьте, что произойдет, если для создания связи между двумя таблицами вы попытаетесь добавить поле "Код товара" в таблицу "Заказы". Чтобы заказ мог включать несколько товаров, вам потребуется несколько записей для каждого заказа в таблице "Заказы". В этом случае сведения о заказе придется повторять в каждой строке заказа, что может привести к неэффективности структуры таблицы и потере точности данных. Та же проблема возникает при создании поля "Код заказа" в таблице "Товары" — для каждого товара в таблице потребуется несколько записей. Как решить эту проблему?
Ответ заключается в создании третьей таблицы, часто называемой таблицей соединения, которая разбивает связь "многие ко многим" на две связи "один ко многим". Первичные ключи двух таблиц вставляются в третью таблицу. В результате третья таблица записывает каждое вхождение или экземпляр связи.
Каждая запись в таблице "Сведения о заказах" представляет собой отдельный элемент строки заказа. Первичный ключ этой таблицы состоит из двух полей — внешних ключей таблиц "Заказы" и "Товары". Использовать только поле "Код заказа" в качестве первичного ключа для этой таблицы нельзя, поскольку в одном заказе может быть несколько элементов строки. Код заказа повторяется для каждого элемента строки, так что это поле не содержит уникальные значения. Использовать только поле "Код товара" также нельзя, поскольку один товар может входить в разные заказы. Но вместе эти два поля всегда обеспечивают уникальное значение для каждой записи.
В базе данных продаж товаров между таблицами "Заказы" и "Товары" нет прямой связи. Но они связаны опосредованно через таблицу "Сведения о заказах". Связь "многие ко многим" между заказами и товарами представлена в базе данных двумя связями "один ко многим".
- Связь "один ко многим" между таблицами "Заказы" и "Сведения о заказах". В каждом заказе может быть несколько элементов строк, но каждый элемент строки связан только с одним заказом.
- Связь "один ко многим" между таблицами "Товары" и "Сведения о заказах". Каждый товар может быть связан с несколькими элементами строк, но каждый элемент строки связан только с одним товаром.
В таблице Сведения о заказе можно определить все продукты для определенного заказа. Вы также можете определить все заказы для конкретного продукта.
После создания таблицы "Сведения о заказах" список таблиц и полей может выглядеть так:
Создание связи "один к одному"
Еще бывает связь "один к одному". Предположим, вам нужно записать дополнительные сведения о товаре, которые редко используются или применяются к небольшому количеству товаров. Поскольку эти сведения используются редко и в результате их хранения в таблице "Товары" образуются пустые поля для всех товаров, к которым они неприменимы, вам лучше поместить эти сведения в отдельную таблицу. Как и в таблице товаров, в качестве первичного ключа используется код товара. Связь между этой дополнительной таблицей и таблицей "Товары" относится к типу "один к одному". Каждой записи таблицы товаров соответствует одна запись в дополнительной таблице. При определении такой связи у обеих таблиц должно быть общее поле.
Если оказывается, что в базе данных нужно создать связь "один к одному", подумайте, можно ли поместить сведения из двух таблиц в одну таблицу. Если вы этого не хотите по какой-либо причине, например из-за возникновения пустых полей, посмотрите в приведенном ниже списке, как представлять связь в структуре базы данных.
- Если две таблицы объединены одной тематикой, для создания связи можно использовать один и тот же первичный ключ в обеих.
- Если тематика и первичные ключи таблиц различаются, выберите любую из таблиц и вставьте ее первичный ключ в другую таблицу в качестве внешнего ключа.
Определяя связи между таблицами, вы обеспечиваете правильность таблиц и столбцов. При наличии связи "один к одному" или "один ко многим" в таблицах необходимы общие столбцы. При наличии связи "многие ко многим" необходима третья таблица, представляющая связь.
Усовершенствование структуры
После получения необходимых таблиц, полей и связей следует создать и заполнить таблицы примерами данных и попробовать работать с информацией: создавать запросы, добавлять новые записи и т. д. Это помогает выявить потенциальные проблемы, например, может потребоваться добавить столбец, который вы забыли вставить на этапе разработки, или таблица, которую следует разделить на две таблицы, чтобы удалить дублирование.
Проверьте, можно ли использовать базу данных для получения ответов на ваши вопросы. Создайте черновые формы и отчеты и посмотрите, отображаются ли в них нужные данные. Проверьте, нет ли в базе данных повторяющихся данных и при необходимости измените ее структуру.
При внимательном изучении первоначальной базы данных вы наверняка увидите, где ее можно улучшить. Вот некоторые моменты, которые нужно проверить:
- Не забыли ли вы какие-то столбцы? Если да, относятся ли эти сведения к имеющимся таблицам? Если это сведения по другой теме, возможно, потребуется создать еще одну таблицу. Создайте столбец для каждого элемента данных, который нужно отслеживать. Если данные невозможно получить из других столбцов путем вычислений, скорее всего, для них нужен новый столбец.
- Есть ли ненужные столбцы, значения которых получаются из других полей с помощью вычислений? Если элемент данных можно получить из других столбцов с помощью вычислений (например, цену со скидкой можно вычислять на основе розничной цены), лучше не создавать для него новый столбец.
- Приходится ли вам неоднократно вводить одни и те же сведения в одной из таблиц? Если да, вам нужно разделить одну таблицу на две и установить между ними связь "один ко многим".
- У вас есть таблицы с большим количеством полей, ограниченным количеством записей и множеством пустых полей в отдельных записях? Если да, подумайте о том, как изменить структуру таблицы, чтобы в ней было меньше полей и больше записей.
- Каждый элемент данных разделен на минимальные полезные фрагменты? Поместите в отдельный столбец каждый элемент данных, который необходимо использовать для отчетов, сортировки, поиска или вычислений.
- Данные в каждом столбце соответствуют теме таблицы? Если столбец содержит данные, которые не относятся к теме таблицы, их нужно поместить в другую таблицу.
- Представлены ли все связи между таблицами, либо общими полями, либо третьей таблицей? Для связей "один к одному" и "один ко многим" требуются общие столбцы. Для связей "многие ко многим" требуется третья таблица.
Усовершенствование таблицы "Товары"
Допустим, все товары в базе данных продаж можно отнести к общим категориям: напитки, приправы и морепродукты. В таблице "Товары" может быть поле, в котором показана категория каждого товара.
Предположим, что после изучения и уточнения структуры базы данных вы решили сохранить описание категории вместе с ее именем. Если добавить поле "Описание категории" в таблицу Products, необходимо повторить описание каждой категории для каждого продукта, попадающего в категорию. Это не является хорошим решением.
Лучше выделить категории в качестве отдельной темы для отслеживания в базе данных и создать для них отдельную таблицу с собственным первичным ключом. Затем первичный ключ таблицы "Категории" можно добавить в таблицу "Товары" в качестве внешнего ключа.
Связь между таблицами "Категории" и "Товары" относится к типу "один ко многим": категория может включать несколько товаров, но при этом каждый товар может входить лишь в одну категорию.
Анализируя структуры таблиц, обращайте внимание на повторяющиеся группы. Рассмотрим таблицу со следующими столбцами:
- Код товара
- Название
- Код товара1
- Название1
- Код товара2
- Название2
- Код товара3
- Название3
Здесь каждый товар представлен повторяющейся группой столбцов, которые различаются только номерами в конце имени столбца. Если столбцы пронумерованы таким образом, вам следует пересмотреть структуру таблицы.
У такой структуры есть несколько недостатков. Во-первых, вам придется установить ограничение на количество товаров. После превышения этого ограничения вам потребуется добавить в структуру таблицы новую группу столбцов, а это задача не на пять минут.
Еще одна проблема состоит в том, что для поставщиков, у которых количество товаров меньше максимального, дополнительные столбцы будут оставаться пустыми, занимая лишнее место. Но самый серьезный недостаток такой структуры — усложнение многих задач, таких как сортировка или индексирование таблицы по кодам или названиям товаров.
Если вы видите повторяющиеся группы, посмотрите внимательно, можно ли разделить одну таблицу на две. В приведенном выше примере лучше использовать две таблицы (одну для поставщиков, другую для товаров), связанные с помощью кода поставщика.
Применение правил нормализации
Теперь вы можете применить к структуре своей базы данных правила нормализации данных (иногда их называют просто правила нормализации). Эти правила позволяют проверить правильность структуры таблиц. Процесс применения этих правил к структуре базы данных называется нормализацией базы данных или просто нормализацией.
Нормализацию лучше всего выполнять после внесения в базу данных всех элементов данных и получения предварительной структуры. Цель этого процесса — убедиться в том, что элементы данных распределены по соответствующим таблицам. Правильность самих элементов данных при нормализации не проверяется.
Правила нормализации нужно применять последовательно, проверяя на каждом этапе соответствие структуры базы данных одной из так называемых "нормальных форм". Обычно применяются пять нормальных форм — с первой по пятую. В этой статье рассматриваются первые три формы, поскольку их достаточно для большинства структур баз данных.
Первая нормальная форма
Согласно первой нормальной форме на пересечении строки и столбца в таблице должно находиться одно значение, а не список значений. Например, у вас не может быть поля "Цена" с несколькими ценами. Если представить каждое пересечение строки и столбца как ячейку, эта ячейка должна содержать лишь одно значение.
Вторая нормальная форма
Согласно второй нормальной форме каждый столбец, не являющийся ключевым, должен зависеть от всего ключевого столбца, а не от его части. Это правило применяется, если первичный ключ состоит из нескольких столбцов. Допустим, ваша таблица содержит следующие столбцы, причем столбцы "Код заказа" и "Код товара" образуют первичный ключ:
- Код заказа (первичный ключ)
- Код товара (первичный ключ)
- Название товара
Эта структура не соответствует второй нормальной форме, поскольку название товара зависит от кода товара, но не зависит от кода заказа, то есть этот столбец зависит не от всего первичного ключа. Из этой таблицы нужно удалить столбец "Название товара". Он относится к другой таблице ("Товары").
Третья нормальная форма
Согласно третьей нормальной форме столбцы, не являющиеся ключевыми, должны не только зависеть от всего первичного ключа, но и быть независимыми друг от друга.
Иначе говоря, каждый столбец, не являющийся ключевым, должен зависеть только от первичного ключа. Допустим, у вас есть таблица со следующими столбцами:
- Код товара (первичный ключ)
- Название
- Рекомендуемая розничная цена
- Скидка
Предположим, что скидка зависит от рекомендуемой розничной цены. В этом случае таблица не соответствует третьей нормальной форме, поскольку столбец "Скидка", не являющийся ключевым, зависит от столбца "Рекомендуемая розничная цена", который тоже не является ключевым. Независимость столбцов друг от друга означает, что изменение любого неключевого столбца не должно влиять на другие столбцы. Если вы измените значение в поле "Рекомендуемая розничная цена", соответствующим образом изменится и значение скидки, тем самым нарушая правило. В данном случае столбец "Скидка" следует перенести в другую таблицу, в которой столбец "Рекомендуемая розничная цена" является ключевым.
Лекция 10 создание базы данных. Модификация структуры базы данных
Изложение материала основано на диалекте, который принят в Microsoft SQL сервере 2008. Но, чтобы действительно изучить SQL, надо обратиться к документации той системы, с которой вы работаете.
Часть 1. Создание базы данных
Процесс создания базы данных в системе SQL-сервера состоит из двух этапов:
- сначала организуется сама база данных, а затем
- принадлежащий ей журнал транзакций.
Информация размещается в соответствующих файлах, имеющих расширения
* .mdf (для базы данных) и *. ldf (для журнала транзакций).
В файле базы данных записываются сведения об основных объектах (таблицах, индексах, просмотрах и т.д.), а в файле журнала транзакций - сведения о процессе работы с транзакциями (проводится контроль целостности данных и состояния базы данных до и после выполнения транзакций).
Создание базы данных в системе SQL-сервер осуществляется командой CREATE DATABASE.
Отметим, что процедура создания базы данных в SQL-сервере требует наличия прав администратора сервера.
CREATE DATABASE имя_базы данных
[PRIMARY]
[ FOR LOAD | FOR ATTACH ] ]
Рассмотрим параметры приведенного оператора.
При выборе имени базы данных следует руководствоваться общими правилами именования объектов. Если имя базы данных содержит пробелы или любые другие недопустимые символы, оно заключается в ограничители (двойные кавычки или квадратные скобки).
Имя базы данных должно быть уникальным в пределах сервера и не может превышать 128 символов.
При создании и модификации базы данных можно указать или изменить имя файла, путь и исходный размер этого файла.
Подход, используемый в SQL-сервере, позволяет распределять содержимое базы данных по нескольким дисковым томам.
- Параметр ON определяет список файлов на диске для размещения информации, хранящейся в базе данных (это имена физически размещенных файлов).
- Параметр PRIMARY определяет первичный файл. Если он опущен, то первичным является первый файл в списке.
- Параметр LOGON определяет список файлов на диске для размещения журнала транзакций. Имя файла для журнала транзакций генерируется на основе имени базы данных, и в конце к нему добавляются символы _log.
Если в процессе использования базы данных планируется ее размещение на нескольких дисках, то можно создать так называемые вторичные файлы базы данных с расширением *.ndf.
В этом случае основная информация о базе данных располагается в первичном (PRIMARY) файле, а при нехватке для него свободного места добавляемая информация будет размещаться во вторичном файле.
Параметр означает следующее:
( [ NAME = логическое _имя_файла, ]
FILENAME = ' физическое_имя_файла '
[, SIZE = размер_файла ]
[,FILEGROWTH = вeличинa_пpиpocтa_размера_файла ] ) [ , . . .n]
Здесь логическое имя файла - это имя файла, под которым он будет опознаваться при выполнении различных SQL-команд.
Физическое имя файла предназначено для указания полного пути и названия соответствующего физического файла, который будет создан на жестком диске. Это имя останется за файлом на уровне операционной системы.
Параметр SIZE определяет первоначальный размер файла; минимальный размер параметра = 512 Кб, если он не указан, по умолчанию принимается 1 Мб.
Параметр MAXSIZE определяет максимальный размер файла базы данных.
При значении параметра MAXSIZE = UNLIMITED максимальный размер файла ограничивается свободным местом на диске.
При создании базы данных можно разрешить или запретить автоматический рост ее размера (это определяется параметром FILEGROWTH). Можно указать приращение по абсолютной величине в Мб или процентным соотношением.
Дополнительные файлы могут быть включены в группу так:
FILEGROUP имя_группы_файлов
Пример 1. Требуется создать базу данных, причем для данных определить три файла на диске С:, для журнала транзакций - два файла на диске С.
CREATE DATABASE Archive
( NAME = Archl, FILENAME =' c:\user\data\archdatl.mdf ‘,
SIZE = 100MB, MAXSIZE=200, FILEGROWTH=20),
(NAME - Arch2, FILENAME = ' с:\user\data\archdat2.mdf ',
SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20),
(NAME - Arch3, FlLENAME='c:\user\data\archdat3.mdf,
SIZE=100MB, MAXSIZE=200, FILEGROWTH=20)
(NAME - Archlogl, FILENAME = 'с:\user\data\archiogl.ldf ',
SIZE = 100MB, MAXSISE = 200, FILEGROWTH = 20),
(NAME-Archlog2, FILENAME = ' с:\user\data\archlog2.ldf ',
SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20)