В следующих разделах показано, как были разработаны связи таблиц базы данных. Имена объектов предоставляются, чтобы их можно было легко изучить в базе данных Northwind 2.0 Starter Edition.
Чтобы открыть схему связей с шестью таблицами и связями между ними, выберите Инструменты баз данных > связи.
На этой схеме показаны все шесть таблиц. На схеме линии между таблицами определяют связи между ними. 1 и символ бесконечности (∞) в концах линий представляют одну сторону отношения (например, одного клиента) и многостороннее отношение. Например, один клиент отправляет много заказов. Дополнительные сведения см. в разделе Руководство по связям с таблицами.
Следующие принципы применяются к таблицам в Northwind 2.0 Starter Edition, а также к таблицам в целом.
Первичные ключи Уникальное определение каждой записи в таблице. Все таблицы имеют первичный ключ. На схеме связей символы ключей идентифицируют эти первичные ключи. Соглашения об именовании первичных ключей именуются для таблицы, в ней они находятся, например TableNameID.
Добавление поля autoNumber в качестве первичного ключа.
Эффективность Для повышения производительности и более эффективного хранения первичные ключи должны быть числовыми. Кроме того, удобнее, чтобы Access автоматически создавал новое уникальное значение для первичного ключа каждой новой записи. Тип данных AutoNumber имеет обе характеристики. В противном случае значения autoNumber являются неосмысленными числами и не служат другим целям. Дополнительные сведения см. в разделеВнешние ключи Таблица также может содержать один или несколько внешних ключей в зависимости от того, связана ли она с другими таблицами в базе данных. Внешний ключ содержит значения, соответствующие значениям в первичном ключе связанной таблицы.
Уникальные индексы Другие поля в таблицах также могут иметь собственные уникальные индексы, например OrderStatus.StatusCode. Нелогично иметь два состояния заказа в таблице OrderStatus с одинаковым кодом, хотя StatusCode сам по себе не является первичным ключом. Уникальный индекс указывает Access, чтобы предотвратить дублирование значений в этом поле.
Неуниковые индексы Таблицы также могут иметь индексы для ускорения поиска и сортировки по этим полям, например Orders.OrderDate. Многие заказы могут быть размещены в один день, и часто требуется выполнить поиск и сортировку по датам заказа. Для ускорения поиска и сортировки в этом поле есть неуникальный индекс.
Имена таблиц и полей Вы можете назвать вещи любым способом, но согласованность важна. Рекомендуется, чтобы имена таблиц и полей были одним или несколькими словами без пробелов между ними и без специальных символов, таких как косая черта (/), знак фунта (#) или процент (%). Например, используйте OrderDate, но не Order Date; используйте OrderNumber или OrderNo, но не Order#.
CamelCase Прописные буквы выделяют отдельные части имени, например OrderDate, но не Orderdate или orderDate.
Обязательное значение Этот принцип определяет важность бизнес-правил для приложения. В некоторых ситуациях требуются значения или даже определенные значения в некоторых полях. Например, что такое заказ, не зная клиента, который его разместил? Это означает, что CustomerID является обязательным полем для таблицы Orders.
Вычисляемые поля Access поддерживает вычисляемые поля в таблицах, например поле Employees.FullName. Вы можете предпочесть создавать вычисляемые поля в запросе, а не в таблице.
Поля вложений Access поддерживает поля вложений, например Employees.Picture, в котором хранится изображение сотрудника. Вложения могут хранить изображения, документы, сообщения электронной почты и другую двоичную информацию. Вложения занимают много места в базе данных. Вместо этого более эффективно хранить вложения на файловом сервере.
Многозначные поля Как следует из названия, многозначные поля хранят одно или несколько значений в одном поле, например Employees.Title. Мы рекомендуем использовать их с осторожностью, особенно если вы хотите обновить базу данных. Большинство других систем баз данных не имеют их, поэтому для этого потребуется много повторной работы.
Дополнительные сведения о типах данных см. в статье Общие сведения о типах данных и свойствах полей.
В этом разделе рассматриваются наиболее важные функции каждой таблицы. Чтобы просмотреть структуру таблицы, выберите ее в области навигации, щелкните ее правой кнопкой мыши, выберите Конструктор или Выберите Пункты "Инструменты базы данных > связи", а затем щелкните правой кнопкой мыши объект таблицы. Дополнительные сведения см. в статье Общие сведения о таблицах.
Важно: Избегайте использования зарезервированных слов, которые могут вызвать конфликты именования. Дополнительные сведения см. в статье Сведения о зарезервированных словах и символах Access.
Таблица "Сотрудники"
В этой таблице хранятся сведения о сотрудниках Northwind.
Поля |
Описание |
FirstName, LastName |
Оба имени являются обязательными, и в Northwind они должны быть уникальным сочетанием. В структуре таблицы при открытии диалогового окна Индексы вы увидите, что firstName + LastName имеют уникальный индекс. Так как FirstName и LastName индексируются уникальным образом, в таблице Northwind не могут храниться два сотрудника с одинаковыми именами. В других ситуациях можно использовать другое бизнес-правило. |
FullNameFNLN, FullNameLNFN |
Просмотрите свойство expression вычисляемых полей, чтобы узнать, как Access объединяет значения в вычисляемых полях. Чтобы включить средний инициал, добавьте его в существующее выражение с соответствующим интервалом между компонентами. |
Поля телефона |
Бизнес-правило для телефонов заключается в том, что предпочтения сотрудников более актуальны, чем тип службы. Поэтому используются первичные и вторичные номера телефонов, а не мобильные, офисные, домашние и т. д. |
Приветствие |
Приветствие — это поле "Короткий текст". Чтобы проиллюстрировать функцию многозначных полей в Access, это поле со списком с редактируемым списком предварительно определенных значений. Короткие статические списки часто являются кандидатами на многозначные поля, так как они не сильно изменяются, если когда-либо. |
JobTitle |
JobTitle — это еще одно обязательное поле. |
Таблица Customers
В этой таблице хранятся сведения о клиентах Northwind.
Поля |
Описание |
CustomerName |
Клиенты Northwind — это предприятия, и требуется имя клиента. Однако, в отличие от имен сотрудников, он не однозначно индексируется, что позволяет двум или более клиентам иметь одно и то же имя. |
PrimaryContactFirstName, PrimaryContactLastName, PrimaryContactJobTitle |
Имена и фамилии и должность основного контакта не требуются, так как клиенты могут не иметь одного человека в качестве основного контакта. Контакты могут не указывать свою должность для заказа. |
BusinessPhone |
Northwind требует только один номер телефона для каждого клиента, хотя это исключает возможность записи нескольких номеров телефонов для клиентов или контактов от клиентов. В реальных ситуациях к контактным данным обычно применяются более сложные бизнес-правила. |
Адрес, город State, ZIP |
Northwind требует адрес для доставки заказов клиентам. Существует только один универсальный адрес для клиента. В реальных ситуациях клиенты часто имеют отдельные адреса для выставления счетов, доставки или других адресов. Другое бизнес-правило для вашей организации потребует дополнительных полей. |
Примечания |
Поле "Заметки" — это тип данных "Длинный текст", в котором хранится до 1 ГБ текста. Это позволяет вводить подробные комментарии о клиентах для использования в последующих ситуациях заказа. |
Таблица Orders
В этой таблице хранятся сведения о заказах Northwind.
Поля |
Описание |
OrderDate, ShippedDate, PaidDate |
Для заказов требуется три даты. Все они имеют тип данных даты и времени, но имеют два формата. OrderDate содержит дату и время, так как вы можете быть заинтересованы в анализе объема заказов для разных частей дня. Для двух других дат требуется только дата. Правило проверки таблицы для ShippedDate и PaidDate гарантирует, что эти даты не находятся перед OrderDate. |
OrderStatusID |
Состояние заказа указывает, где находится заказ в рабочем процессе Northwind. Заказы проходят четыре этапа: новое — > выставлено — > отправлено — > закрыто.Внешний ключ для текущего Объекта OrderStatus использует OrderStatusID из таблицы подстановки OrderStatus. Использование таблицы подстановки состояния гарантирует, что заказу могут быть назначены только четыре предварительно определенных состояния. |
Таблица сведений о заказах
В этой таблице хранятся сведения о заказе Northwind.
Поля |
Описание |
Orderid |
Каждый элемент строки в таблице OrderDetails должен принадлежать одному заказу в таблице Orders. OrderID — это внешний ключ, определяющий этот заказ. Как отмечалось ранее, один порядок, содержащий один или несколько строк, иллюстрирует связь "один ко многим". |
Productid |
Каждая запись в таблице OrderDetails содержит ProductID для заказанного продукта. ProductID — это внешний ключ в таблице OrderDetails, определяющий продукт в этом порядке. Это также отношение "один ко многим". |
OrderID+ ProductID |
Как вы видели в таблице Employees, несколько полей могут иметь уникальный индекс. Уникальный индекс orderID+ProductID в таблице OrderDetails гарантирует, что каждый заказ содержит продукт только один раз. При открытии страницы свойств Indexes на ленте вы увидите этот уникальный индекс. |
Таблица Products
В этой таблице хранятся сведения о продуктах Northwind.
Поля |
Описание |
ProductCode |
Помимо первичного ключа, ProductID, продукты Northwind имеют удобный для человека, уникально индексированный код продукта. Сотрудники обычно ссылаются на коды продуктов, а не на значения первичного ключа. Код продукта представляет собой составное значение, состоящее из обозначения Категории и числа, например B-1 для "Напиток", продукт 1. |
Название продукта, Описание продукта |
Помимо коротких текстовых названий продуктов, к продуктам применяется длинное текстовое описание. Это значение можно использовать в описании каталога или для ответа на вопросы клиентов. |
UnitPrice |
Все продукты продаются с ценой за единицу для каждого элемента, что упрощает базу данных в качестве демонстрации функций. В большинстве реальных ситуаций цены часто значительно сложнее. |
См. также