Содержание

Основные сведения о создании баз данных

База данных с правильной структурой обеспечит вам доступ к актуальным и точным сведениям. Поскольку правильная структура важна для выполнения поставленных задач при работе с базой данных, имеет смысл изучить принципы создания баз данных. Это поможет вам создать базу данных, отвечающую вашим потребностям и позволяющую быстро вносить в нее изменения.

В этой статье приведены рекомендации по планированию базы данных для настольного компьютера. Вы узнаете, как выбирать необходимые сведения, как распределять данные по таблицам и столбцам и как таблицы связаны друг с другом. Прежде чем создавать свою первую базу данных, прочитайте эту статью.

Важно:  Access возможности разработки, которые можно создавать приложения баз данных для Интернета. Многие аспекты проектирования отличаются при проектировании веб-страниц. В этой статье не обсуждается проектирование веб-баз данных. Дополнительные сведения см.

в статье Создание базы данных Access для публикации в Интернете.

В этой статье

  • Некоторые термины, связанные с базами данных

  • Что такое правильная структура базы данных?

  • Процесс проектирования

  • Определение назначения базы данных

  • Поиск и упорядочение необходимых сведений

  • Распределение данных по таблицам

  • Преобразование элементов данных в столбцы

  • Задание первичных ключей

  • Создание связей между таблицами

  • Усовершенствование структуры

  • Применение правил нормализации

Некоторые термины, связанные с базами данных

В Access данные упорядочиваются в таблицах, которые представляют собой списки строк и столбцов, напоминающие бухгалтерский блокнот или электронную таблицу. В простой базе данных может быть всего одна таблица. Для большинства баз данных их потребуется несколько. Например, в одной таблице можно хранить сведения о товарах, в другой — о заказах, а в третьей — о клиентах.

Каждую строку правильнее называть записью, а каждый столбец — полем. Запись — это эффективный и согласованный способ объединения сведений о чем-либо. Поле — это отдельный элемент сведений (элементы такого типа есть в каждой записи). Например, в таблице «Товары» каждая строка или запись может содержать сведения об одном товаре. Каждые столбец или поле содержат сведения определенного типа об этом товаре, например название или цену.

К началу страницы

Что такое правильная структура базы данных?

В основе процесса создания базы данных лежат определенные принципы. Первый принцип состоит в том, чтобы избегать повторяющихся сведений (также называемых избыточными данными), поскольку они занимают много места и повышают вероятность появления ошибок и несоответствий. Второй принцип провозглашает важность правильности и полноты сведений. Если база данных содержит неправильные сведения, то все отчеты, созданные на основе сведений из этой базы данных, будут содержать неправильные сведения. В итоге решения, которые принимаются на основе этих отчетов, могут оказаться неверными.

Правильная структура базы данных подразумевает:

  • распределение сведений по тематическим таблицам для уменьшения количества повторяющихся данных;

  • предоставление приложению Access данных, необходимых для объединения сведений в таблицах при необходимости;

  • обеспечение точности и целостности сведений;

  • org/ListItem»>

    соответствие требованиям к обработке данных и созданию отчетов.

К началу страницы

Процесс проектирования

Процесс проектирования включает следующие этапы:

  • Определение назначения базы данных    

    Помогает подготовиться к остальным этапам.

  • Поиск и упорядочение необходимых сведений     

    Соберите сведения всех типов, которые потребуется внести в базу данных, например названия товаров и номера заказов.

  • org/ListItem»>

    Разделение данных по таблицам    

    Разделите элементы данных по основным темам или группам, например «Товары» и «Заказы». Затем для каждой темы создается таблица.

  • Преобразование элементов данных в столбцы    

    Решите, какие сведения будут храниться в каждой таблице. Каждый элемент становится полем и отображается в виде столбца в таблице. Например, таблица «Сотрудники» может содержать такие поля, как «Фамилия» и «Дата найма».

  • Задание первичных ключей    

    Выберите первичный ключ для каждой таблицы. Первичный ключ — это столбец, однозначно определяющий каждую строку. Примеры: «Код товара» и «Код заказа».

  • Настройка связей между таблицами    

    Проанализируйте все таблицы и определите, как данные одной таблицы связаны с данными других таблиц. Добавьте в таблицы поля или создайте новые таблицы для формирования необходимых связей.

  • Усовершенствование структуры    

    Проверьте структуру базы данных на наличие ошибок. Создайте таблицы и добавьте несколько записей с образцами данных. Посмотрите, можно ли получить нужные результаты из таблиц. При необходимости внесите изменения в структуру.

  • org/ListItem»>

    Применение правил нормализации    

    Примените правила нормализации, чтобы проверить правильность структуры таблиц. При необходимости внесите изменения в таблицы.

К началу страницы

Определение назначения базы данных

Рекомендуется записать на бумаге назначение базы данных: ее цель, предполагаемое применение и список пользователей, которые будут с ней работать. Небольшой базе данных для домашнего бизнеса можно дать простое определение, например: «База данных содержит сведения о клиентах и используется для почтовой рассылки и создания отчетов». Для более сложной базы данных, с которой будет работать множество людей, как это часто бывает в больших организациях, определение может состоять из нескольких абзацев, включая время и способы использования ее разными людьми.

Идея состоит в том, чтобы детально сформулировать определение, к которому затем можно обращаться в процессе проектирования. Такое определение поможет сосредоточиться на целях и задачах при принятии решений.

К началу страницы

Поиск и упорядочение необходимых сведений

Чтобы найти и упорядоступить необходимую информацию, начните с имеющихся сведений. Например, вы можете записать заказы на покупку в записи книги или сохранить сведения о клиентах в бумажных формах в картотеке. Соберите эти документы и соберите в списке каждый тип показанной информации (например, каждое поле, заполненное в форме). Если у вас еще нет форм, представьте, что вам нужно создать форму для записи сведений о клиенте. Какие сведения нужно поместить в форму? Какие поля заливки нужно создать? Определите и перечислить каждый из этих элементов. Предположим, что в настоящее время список клиентов находится на индексных карточках. Изучив эти карточки, вы можете показать, что каждая карточка содержит имя клиента, адрес, город, штат, почтовый индекс и номер телефона. Каждый из этих элементов представляет потенциальный столбец в таблице.

При подготовке списка не старайтесь придать ему законченный вид с первого раза. Записывайте все элементы, которые приходят в голову. Если с базой данных будет работать кто-то еще, попросите их внести свои предложения. Позднее вы сможете скорректировать список.

Теперь подумайте, какие типы отчетов или почтовых рассылок будут выполняться на основе сведений из базы данных. Например, это может быть отчет о продажах товаров по регионам или сводный отчет о складских запасах товаров. Возможно, вы также будете отправлять клиентам стандартные письма, содержащие сведения о продажах или специальных предложениях. Продумайте структуру отчета и представьте себе его внешний вид. Какие сведения нужно включить в отчет? Составьте список. То же сделайте для писем и других отчетов, которые предполагается создавать.

Продумывая структуру предполагаемых отчетов и почтовых рассылок, вы определите те элементы, которые нужно включить в базу данных. Предположим, вы даете клиентам возможность подписаться на периодическую рассылку обновлений (или отказаться от нее) и хотите распечатать список тех, кто подписался. Для записи этих сведений вы добавляете в таблицу клиентов столбец «Отправка почты». В этом поле для каждого клиента можно выбрать значение «Да» или «Нет».

Для отправки клиентам почтовых сообщений требуется записать еще один элемент данных. Если клиент захочет получать почтовые сообщения, вам потребуется его адрес электронной почты. Следовательно, для каждого клиента нужно записать этот адрес.

Имеет смысл создать прототип каждого отчета или выходного списка и продумайте, какие элементы потребуется создать для этого отчета. Например, при проверке письма на бланке могут возникнуть некоторые моменты. Если вы хотите включить правильное приветствие, например строку «Г-н», «Г-жа» или «Ms», которая начинает приветствие, необходимо создать элемент приветствия. Кроме того, письма обычно начинаются с буквы «Уважаемый г-н Климов», а не «Уважаемый. Г-н Сильвстер Климов». Это позволяет сохранить фамилию отдельно от имени.

Важно помнить, что каждый фрагмент сведений целесообразно разделить на минимальные элементы. Например, лучше разделить имя и фамилию, чтобы их удобнее было использовать. В частности, чтобы отсортировать отчет по фамилиям, фамилия должна храниться отдельно. Вообще, если вы хотите выполнять сортировку, поиск, вычисления или отчет на основе элемента данных, следует поместить этот элемент в отдельное поле.

Подумайте о тех вопросах, ответы на которые вам поможет получать база данных. Например, каков объем продаж отдельного товара за последний месяц? Где находятся самые перспективные клиенты? Кто поставляет самый продаваемый товар? Список возможных вопросов поможет вам определить дополнительные элементы данных для записи.

Собрав все нужные сведения, вы можете переходить к следующему этапу.

К началу страницы

Распределение данных по таблицам

Чтобы распределить данные по таблицам, выделите основные группы или темы. Например, после поиска и упорядочения сведений для базы данных продаж товаров вы можете получить предварительный список такого вида:

Основные группы здесь — товары, поставщики, клиенты и заказы. Поэтому имеет смысл использовать четыре таблицы: по одной для сведений о товарах, поставщиках, клиентах и заказах. Это не окончательный список, но неплохое начало. Вы можете уточнять список, пока не получите наиболее эффективную структуру.

При первом просмотре предварительной таблицы вам может показаться, что удобнее было бы поместить все сведения в одну таблицу, а не в четыре, как показано на предыдущей иллюстрации. Сейчас вы поймете, почему это плохая идея. Посмотрите на эту таблицу:

В этом случае каждая строка содержит сведения о товаре и его поставщике. Так как у одного поставщика может быть несколько товаров, имя и адрес поставщика должны повторяться несколько раз. Это пустая трата места на диске. Гораздо лучше записать сведения о поставщике только один раз в отдельной таблице «Поставщики» и связать ее с таблицей «Товары».

Вторая проблема с этой структурой возникает тогда, когда нужно изменить сведения о поставщике. Предположим, вам нужно изменить адрес поставщика. Но поскольку адрес указан во многих полях, можно случайно изменить его только в одном поле, забыв о других. Эту проблему можно решить, записав адрес поставщика только в одном поле.

При проектировании базы данных всегда старайтесь записать каждый факт только один раз. Если вы обнаружите, что сведения повторяются (например, адрес конкретного поставщика), поместите их в отдельную таблицу.

Наконец, предположим, что у вас есть только один товар, поставляемый компанией Coho Winery, и вы хотите удалить этот товар, но сохранить имя и адрес поставщика. Как удалить запись о товаре, не потеряв сведений о поставщике? Это невозможно. Поскольку каждая запись содержит сведения и о товаре, и о поставщике, вы не можете удалить их по отдельности. Чтобы разделить эти сведения, необходимо сделать из одной таблицы две: одну — для сведений о товаре, другую —для сведений о поставщике. Тогда удаление записи о товаре не приведет к удалению записи о поставщике.

Выбрав тему для таблицы, проследите, чтобы столбцы в ней содержали сведения только по этой теме. Например, в таблице товаров должны храниться сведения только о товарах. Поскольку адрес поставщика относится к сведениям о поставщиках, а не о товарах, он должен храниться в таблице поставщиков.

К началу страницы

Преобразование элементов данных в столбцы

Чтобы определить столбцы таблицы, решите, какие сведения по теме таблицы вам нужно отслеживать. Например, в таблицу клиентов можно включить столбцы «Имя», «Адрес», «Город, область, почтовый индекс», «Отправка почты», «Обращение» и «Адрес электронной почты». Набор столбцов одинаков для всех записей в таблице, поэтому для каждой записи можно хранить одни и те же сведения. Например, столбец «Адрес» содержит адреса клиентов. Каждая запись содержит сведения только об одном клиенте, а поле адреса — его адрес.

После определения первоначального набора столбцов для каждой таблицы вы можете затем уточнять и дополнять их. Например, удобно хранить имя и фамилию клиента в разных столбцах, чтобы проще было выполнять сортировку, поиск и индексирование только по этим столбцам. Адрес также состоит из нескольких компонентов (собственно адреса, города, области, почтового индекса и страны), которые лучше хранить в отдельных столбцах. Например, если вы захотите выполнить поиск, фильтрацию или сортировку по областям, вам потребуется, чтобы сведения об областях хранились в отдельном столбце.

Вам также нужно определить, какого рода данные будут храниться в базе данных: отечественные или международные. Например, если вы планируете хранить в базе данных международные адреса, лучше использовать столбец «Регион», а не «Страна», потому что в таком столбце можно указывать области внутри своей страны и регионы других стран. Точно так же в поле «Почтовый индекс» можно будет хранить почтовые индексы разных стран.

В списке ниже приведены некоторые советы по определению столбцов.

  • Не включайте вычисляемые данные    

    Не следует хранить в таблицах результаты вычислений. Лучше пусть Access выполняет вычисления всякий раз, как вы захотите увидеть результат. Предположим, что в отчете о заказанных товарах отображаются промежуточные итоги для заказанных товаров каждой категории. Но в таблице нет столбца для промежуточных итогов. Вместо этого в таблице есть столбец для заказанных товаров, в котором хранится количество единиц каждого товара. Используя эти данные, Access вычисляет промежуточные итоги каждый раз при печати отчета. Сами промежуточные итоги не требуется хранить в таблице.

  • Разбивайте информацию на минимальные логические компоненты    

    Может возникнуть желание использовать одно поле для полных имен или названий продуктов вместе с описаниями продуктов. Если в поле объединится несколько разных сведений, позднее будет сложно получить отдельные факты. Попробуйте разбить данные на логические части; Например, можно создать отдельные поля для имени и фамилии или для названия продукта, категории и описания.

Доработав столбцы с данными во всех таблицах, вы можете перейти к выбору первичного ключа для каждой из них.

К началу страницы

Задание первичных ключей

Каждая таблица должна содержать столбец или набор столбцов для однозначного определения каждой строки таблицы. Часто для этого используется уникальный идентификационный номер, например код сотрудника или серийный номер. В базах данных эти сведения называются первичным ключом таблицы. Используя поля первичных ключей, Access быстро связывает данные из нескольких таблиц и сводит их для вас воедино.

Если у вас уже есть уникальный идентификатор для таблицы, например код товара, однозначно определяющий товар в каталоге, вы можете использовать его в качестве первичного ключа таблицы, но только при условии, что значения в этом столбце будут разными для всех записей. В первичном ключе не должно быть повторяющихся значений. Например, не следует использовать в качестве первичного ключа имена людей, поскольку они не уникальны. С большой долей вероятности в одной таблице могут оказаться двое людей с одинаковыми именами.

У первичного ключа всегда должно быть значение. Если в какой-то момент столбец может содержать неназначенное или неизвестное (отсутствующее) значение, его нельзя использовать в качестве компонента первичного ключа.

Всегда выбирайте первичный ключ, значение которого не изменится. В базе данных с несколькими таблицами первичный ключ одной таблицы может использоваться в качестве ссылки в других таблицах. Если первичный ключ изменяется, это изменение необходимо применить ко всем ссылкам на этот ключ. Используя неизменяемый первичный ключ, вы снижаете вероятность нарушения синхронизации с другими таблицами.

Часто в качестве первичного ключа используется произвольное уникальное число. Например, каждому заказу можно назначить уникальный номер. Целью номера заказа является определение заказа. После того как оно будет назначено, оно никогда не изменится.

Если вы не имеете в виду столбец или набор столбцов, которые могут стать хорошим первичным ключом, рассмотрите возможность использования столбца с типом данных «Автономер». При использовании типа данных «Тип данных», Access автоматически назначает значение. Такой идентификатор не имеет смысла; Оно не содержит фактических сведений, описывающих строку, которую она представляет. Идентификаторы factless идеально подходят для использования в качестве первичного ключа, так как они не изменяются. Первичный ключ, содержащий сведения о строке (например, номер телефона или имя клиента), может измениться, так как сами фактуальные данные могут измениться.

1. Столбец с типом данных «Счетчик» — отличный первичный ключ. Коды товаров никогда не совпадают.

В некоторых случаях первичный ключ таблицы составляется из несколько полей. Например, в таблице «Сведения о заказах», которая содержит элементы строк заказов, первичный ключ может включать два столбца: «Код заказа» и «Код товара». Первичный ключ из нескольких столбцов называется составным.

В базе данных продаж вы можете создать столбец типа «Счетчик» для первичного ключа каждой из таблиц: «Код товара» для таблицы товаров, «Код заказа» для таблицы заказов, «Код клиента» для таблицы клиентов и «Код поставщика» для таблицы поставщиков.

К началу страницы

Создание связей между таблицами

Теперь, когда вы распределили сведения по таблицам, вам нужен способ их осмысленного объединения. Например, показанная ниже форма содержит сведения из нескольких таблиц.

1. Эта форма содержит данные из таблиц клиентов,

2. сотрудников,

3. заказов,

4. товаров

5. и сведений о заказах.

Access — это система управления реляционными базами данных. В реляционной базе данных сведения распределяются по отдельным тематическим таблицам. Для последующего объединения данных используются связи между таблицами.

К началу страницы

Создание связи «один ко многим»

Рассмотрим пример таблиц «Поставщики» и «Товары» в базе данных «Заказы на товары». Поставщик может поставлять любое количество товаров. Следуют, что у любого поставщика, представленного в таблице «Поставщики», может быть много товаров, представленных в таблице «Товары». Поэтому связь между таблицами «Поставщики» и «Товары» является связью «один-к-многим».

Чтобы создать связь «один ко многим» в структуре базы данных, добавьте первичный ключ на стороне «один» в таблицу на стороне «многие» в виде дополнительного столбца или столбцов. Например, в данном случае вы добавляете столбец «Код поставщика» из таблицы «Поставщики» в таблицу «Товары». Затем Access сможет с помощью кода поставщика в таблице «Товары» найти поставщика для каждого товара.

Столбец «Код поставщика» в таблице «Товары» называется внешним ключом. Внешний ключ — это первичный ключ другой таблицы. Столбец «Код поставщика» в таблице «Товары» является внешним ключом, потому что он также является первичным ключом в таблице «Поставщики».

Создавая пары первичных и внешних ключей, вы создаете основу для объединения сведений из связанных таблиц. Если вы не знаете точно, в каких таблицах должен быть общий столбец, определение связи «один ко многим» обеспечивает необходимость общего столбца для двух таблиц.

К началу страницы

Создание связи «многие ко многим»

Рассмотрим связь между таблицами «Товары» и «Заказы».

Отдельный заказ может включать несколько товаров. С другой стороны, один товар может входить в несколько заказов. Таким образом, для каждой записи в таблице «Заказы» может существовать несколько записей в таблицы «Товары». Для каждой записи в таблице «Товары» может быть несколько записей в таблице «Заказы». Этот тип связи называется отношением «многие-к-многим», так как для любого товара может быть множество заказов. и для любого заказа может быть множество продуктов. Обратите внимание на то, что для обнаружения связей «многие-к-многим» между таблицами важно учитывать обе стороны связи.

Связь между темами двух таблиц (заказов и товаров) относится к типу «многие ко многим». Это проблема. Представьте, что произойдет, если для создания связи между двумя таблицами вы попытаетесь добавить поле «Код товара» в таблицу «Заказы». Чтобы заказ мог включать несколько товаров, вам потребуется несколько записей для каждого заказа в таблице «Заказы». В этом случае сведения о заказе придется повторять в каждой строке заказа, что может привести к неэффективности структуры таблицы и потере точности данных. Та же проблема возникает при создании поля «Код заказа» в таблице «Товары» — для каждого товара в таблице потребуется несколько записей. Как решить эту проблему?

Ответ на этот вопрос заключается в том, чтобы создать третью (связуемую) таблицу, которая разбивает связь «многие-к-многим» на две связи «один-к-многим». Первичные ключи двух таблиц вставляются в третью таблицу. В результате в третьей таблице записывают все экземпляры связи.

Каждая запись в таблице «Сведения о заказах» представляет собой отдельный элемент строки заказа. Первичный ключ этой таблицы состоит из двух полей — внешних ключей таблиц «Заказы» и «Товары». Использовать только поле «Код заказа» в качестве первичного ключа для этой таблицы нельзя, поскольку в одном заказе может быть несколько элементов строки. Код заказа повторяется для каждого элемента строки, так что это поле не содержит уникальные значения. Использовать только поле «Код товара» также нельзя, поскольку один товар может входить в разные заказы. Но вместе эти два поля всегда обеспечивают уникальное значение для каждой записи.

В базе данных продаж товаров между таблицами «Заказы» и «Товары» нет прямой связи. Но они связаны опосредованно через таблицу «Сведения о заказах». Связь «многие ко многим» между заказами и товарами представлена в базе данных двумя связями «один ко многим».

  • Связь «один ко многим» между таблицами «Заказы» и «Сведения о заказах». В каждом заказе может быть несколько элементов строк, но каждый элемент строки связан только с одним заказом.

  • org/ListItem»>

    Связь «один ко многим» между таблицами «Товары» и «Сведения о заказах». Каждый товар может быть связан с несколькими элементами строк, но каждый элемент строки связан только с одним товаром.

В таблице «Сведения о заказах» можно определить все продукты по определенному заказу. Вы также можете определить все заказы для определенного товара.

После создания таблицы «Сведения о заказах» список таблиц и полей может выглядеть так:

К началу страницы

Создание связи «один к одному»

Еще бывает связь «один к одному». Предположим, вам нужно записать дополнительные сведения о товаре, которые редко используются или применяются к небольшому количеству товаров. Поскольку эти сведения используются редко и в результате их хранения в таблице «Товары» образуются пустые поля для всех товаров, к которым они неприменимы, вам лучше поместить эти сведения в отдельную таблицу. Как и в таблице товаров, в качестве первичного ключа используется код товара. Связь между этой дополнительной таблицей и таблицей «Товары» относится к типу «один к одному». Каждой записи таблицы товаров соответствует одна запись в дополнительной таблице. При определении такой связи у обеих таблиц должно быть общее поле.

Если оказывается, что в базе данных нужно создать связь «один к одному», подумайте, можно ли поместить сведения из двух таблиц в одну таблицу. Если вы этого не хотите по какой-либо причине, например из-за возникновения пустых полей, посмотрите в приведенном ниже списке, как представлять связь в структуре базы данных.

  • Если две таблицы объединены одной тематикой, для создания связи можно использовать один и тот же первичный ключ в обеих.

  • Если тематика и первичные ключи таблиц различаются, выберите любую из таблиц и вставьте ее первичный ключ в другую таблицу в качестве внешнего ключа.

Определяя связи между таблицами, вы обеспечиваете правильность таблиц и столбцов. При наличии связи «один к одному» или «один ко многим» в таблицах необходимы общие столбцы. При наличии связи «многие ко многим» необходима третья таблица, представляющая связь.

К началу страницы

Усовершенствование структуры

После создания необходимых таблиц, полей и связей следует создать и заполнить таблицы образцами данных и поработайте с ними: создание запросов, добавление новых записей и так далее. Это поможет выделить потенциальные проблемы. Например, может потребоваться добавить столбец, который вы забыли вставить на этапе разработки, или разделить таблицу на две таблицы, чтобы удалить дублирование.

Проверьте, можно ли использовать базу данных для получения ответов на ваши вопросы. Создайте черновые формы и отчеты и посмотрите, отображаются ли в них нужные данные. Проверьте, нет ли в базе данных повторяющихся данных и при необходимости измените ее структуру.

При внимательном изучении первоначальной базы данных вы наверняка увидите, где ее можно улучшить. Вот некоторые моменты, которые нужно проверить:

  • Не забыли ли вы какие-то столбцы? Если да, относятся ли эти сведения к имеющимся таблицам? Если это сведения по другой теме, возможно, потребуется создать еще одну таблицу. Создайте столбец для каждого элемента данных, который нужно отслеживать. Если данные невозможно получить из других столбцов путем вычислений, скорее всего, для них нужен новый столбец.

  • Есть ли ненужные столбцы, значения которых получаются из других полей с помощью вычислений? Если элемент данных можно получить из других столбцов с помощью вычислений (например, цену со скидкой можно вычислять на основе розничной цены), лучше не создавать для него новый столбец.

  • Приходится ли вам неоднократно вводить одни и те же сведения в одной из таблиц? Если да, вам нужно разделить одну таблицу на две и установить между ними связь «один ко многим».

  • У вас есть таблицы с большим количеством полей, ограниченным количеством записей и множеством пустых полей в отдельных записях? Если да, подумайте о том, как изменить структуру таблицы, чтобы в ней было меньше полей и больше записей.

  • Каждый элемент данных разделен на минимальные полезные фрагменты? Поместите в отдельный столбец каждый элемент данных, который необходимо использовать для отчетов, сортировки, поиска или вычислений.

  • Данные в каждом столбце соответствуют теме таблицы? Если столбец содержит данные, которые не относятся к теме таблицы, их нужно поместить в другую таблицу.

  • Все связи между таблицами представлены общими полями или третьей таблицей? Для отношений «один к одному» и «один-к-многим» требуются общие столбцы. Для связей «многие-к-многим» требуется третья таблица.

Усовершенствование таблицы «Товары»

Допустим, все товары в базе данных продаж можно отнести к общим категориям: напитки, приправы и морепродукты. В таблице «Товары» может быть поле, в котором показана категория каждого товара.

Предположим, что после проверки и уточнения дизайна базы данных вы решили сохранить вместе с ее именем описание категории. При добавлении поля «Описание категории» в таблицу «Товары» необходимо повторить описание каждой категории для каждого товара, попадаемного в эту категорию, — это не лучшее решение.

Лучше выделить категории в качестве отдельной темы для отслеживания в базе данных и создать для них отдельную таблицу с собственным первичным ключом. Затем первичный ключ таблицы «Категории» можно добавить в таблицу «Товары» в качестве внешнего ключа.

Связь между таблицами «Категории» и «Товары» относится к типу «один ко многим»: категория может включать несколько товаров, но при этом каждый товар может входить лишь в одну категорию.

Анализируя структуры таблиц, обращайте внимание на повторяющиеся группы. Рассмотрим таблицу со следующими столбцами:

  • Код товара

  • Название

  • Код товара1

  • Название1

  • Код товара2

  • Название2

  • org/ListItem»>

    Код товара3

  • Название3

Здесь каждый товар представлен повторяющейся группой столбцов, которые различаются только номерами в конце имени столбца. Если столбцы пронумерованы таким образом, вам следует пересмотреть структуру таблицы.

У такой структуры есть несколько недостатков. Во-первых, вам придется установить ограничение на количество товаров. После превышения этого ограничения вам потребуется добавить в структуру таблицы новую группу столбцов, а это задача не на пять минут.

Еще одна проблема состоит в том, что для поставщиков, у которых количество товаров меньше максимального, дополнительные столбцы будут оставаться пустыми, занимая лишнее место. Но самый серьезный недостаток такой структуры — усложнение многих задач, таких как сортировка или индексирование таблицы по кодам или названиям товаров.

Если вы видите повторяющиеся группы, посмотрите внимательно, можно ли разделить одну таблицу на две. В приведенном выше примере лучше использовать две таблицы (одну для поставщиков, другую для товаров), связанные с помощью кода поставщика.

К началу страницы

Применение правил нормализации

Теперь вы можете применить к структуре своей базы данных правила нормализации данных (иногда их называют просто правила нормализации). Эти правила позволяют проверить правильность структуры таблиц. Процесс применения этих правил к структуре базы данных называется нормализацией базы данных или просто нормализацией.

Нормализацию лучше всего выполнять после внесения в базу данных всех элементов данных и получения предварительной структуры. Цель этого процесса — убедиться в том, что элементы данных распределены по соответствующим таблицам. Правильность самих элементов данных при нормализации не проверяется.

Правила нормализации нужно применять последовательно, проверяя на каждом этапе соответствие структуры базы данных одной из так называемых «нормальных форм». Обычно применяются пять нормальных форм — с первой по пятую. В этой статье рассматриваются первые три формы, поскольку их достаточно для большинства структур баз данных.

Первая нормальная форма

Согласно первой нормальной форме на пересечении строки и столбца в таблице должно находиться одно значение, а не список значений. Например, у вас не может быть поля «Цена» с несколькими ценами. Если представить каждое пересечение строки и столбца как ячейку, эта ячейка должна содержать лишь одно значение.

Вторая нормальная форма

Согласно второй нормальной форме каждый столбец, не являющийся ключевым, должен зависеть от всего ключевого столбца, а не от его части. Это правило применяется, если первичный ключ состоит из нескольких столбцов. Допустим, ваша таблица содержит следующие столбцы, причем столбцы «Код заказа» и «Код товара» образуют первичный ключ:

Эта структура не соответствует второй нормальной форме, поскольку название товара зависит от кода товара, но не зависит от кода заказа, то есть этот столбец зависит не от всего первичного ключа. Из этой таблицы нужно удалить столбец «Название товара». Он относится к другой таблице («Товары»).

Третья нормальная форма

Согласно третьей нормальной форме столбцы, не являющиеся ключевыми, должны не только зависеть от всего первичного ключа, но и быть независимыми друг от друга.

Иначе говоря, каждый столбец, не являющийся ключевым, должен зависеть только от первичного ключа. Допустим, у вас есть таблица со следующими столбцами:

Предположим, что скидка зависит от рекомендуемой розничной цены. В этом случае таблица не соответствует третьей нормальной форме, поскольку столбец «Скидка», не являющийся ключевым, зависит от столбца «Рекомендуемая розничная цена», который тоже не является ключевым. Независимость столбцов друг от друга означает, что изменение любого неключевого столбца не должно влиять на другие столбцы. Если вы измените значение в поле «Рекомендуемая розничная цена», соответствующим образом изменится и значение скидки, тем самым нарушая правило. В данном случае столбец «Скидка» следует перенести в другую таблицу, в которой столбец «Рекомендуемая розничная цена» является ключевым.

К началу страницы

Разработка структуры таблиц базы данных Access

База данных – это динамически обновляемая информационная модель некоторой предметной области. Современные базы данных создаются и эксплуатируются при помощи систем управления базами данных (СУБД).  База данных Access позволяет создавать реляционные базы данных, в которых данные хранятся в виде множества связанных между собой таблиц.

При создании структуры таблицы необходимо определить тип полей базы данных, которые будут в ней использоваться.

Основные типы полей баз данных Access

·Текстовый— В таком поле по умолчанию может храниться до 256 символов.

·Числовой— Содержит числовые данные различных форматов, используемые для проведения расчетов.

·Дата / время — Содержит значение даты и времени.

·Денежный— Включает денежные значения и числовые данные до пятнадцати знаков целой части и четырех знаков дробной части.

·Поле MEMO — Длительный текст, например, некоторое описание или примечание. Максимальная длина — 65 535 символов.

·Счетчик— Специальное числовое поле, в котором СУБД присваивает уникальный номер каждой записи.

·Логический.Логические данные, которые могут иметь одно из двух возможных значений: Да/Нет, Истина/Ложь, Вкл./Выкл. Длина поля 1 бит.

·Поле объекта OLE (Object Linking and Embedding — технология вставки и связывания объекта) — Это поле может содержать любой объект электронной таблицы, документ Microsoft word, рисунок, звукозапись или другие данные в двоичном формате, внедренные или связанные с СУБД.

·Гиперссылка— Может содержать строку, состоящую из букв и цифр, представляющую адрес сайта или web — страницы.

·Мастер подстановок — Создает поле, в котором предлагается выбор значений из списка или содержащего набор постоянных значений.

Разрабатываемая база данных в Access должна содержать сведения о следующих объектах:

·Информацию о территориях (населенных пунктах)

·Информацию о фирме и сотрудниках

·Информацию о поставщиках и заказчиках

·Информацию о наборах и их деталях

·Информацию об упаковке набора и торговой наценке

·Информацию об ингредиентах, входящих в состав

·Информацию о заказах

 

1.  Информация о территориях

Данные этой таблицы используются для указания населенного пункта, в котором расположена посредническая фирма, заказчик или поставщик.

Неразумно повторять для каждой записи о заказчике или о поставщике наименование населенного пункта, в котором он находится. Это вызовет множество ошибок при вводе данных. Гораздо рациональнее иметь отдельную таблицу, в которую однократно вводится название населенного пункта и ему присваивается код (первичный ключ).

Эта таблица может содержать, как минимум, три столбца:

·Код населенного пункта

·Название населенного пункта

·Междугородный телефонный код

 

2. Информация о фирме и сотрудниках

В этой таблице хранятся все реквизиты фирмы, в том числе банковские реквизиты, полный почтовый адрес, сведения о руководстве, контактная информация.

Таблица Сотрудники содержит следующие поля:

1.Код сотрудника

2.Фамилия, имя, отчество

3. ФИО (Фамилия с инициалами)

4.Должность

5.Код населенного пункта

6.Рабочий телефон

7.Факс

8.Адрес электронной почты

9.Кому подчиняется (код сотрудника-начальника)

10.Домашний телефон

11.Мобильный телефон

12.Почтовый индекс

13.Наименование улицы, номер дома, квартиры

14.Дата рождения

15.Дата приема на работу

16.Фотография

17.Примечания

Информация о фирме (таблица Посредническая фирма) будет содержать следующие поля:

1.Полное наименование фирмы

2.Краткое наименование фирмы

3.Юридический адрес

4.Город

5.Почтовый индекс

6.Фактический адрес

7.ИНН

8.КПП

9.Примечание

 

3. Информация о поставщиках и заказчиках

Информация хранится в двух отдельных таблицах Поставщики и Заказчики. Состоят из следующих полей:

1.Код (Поставщика или Заказчика)

2.Полное наименование фирмы

3. Сокращенное наименование фирмы

4.Почтовый индекс

5.Код населенного пункта

6.Наименование улицы, номер дома, корпуса, офиса

7.Фамилия и инициалы руководителя фирмы

8.Контактный телефон

9.Факс

10.Адрес электронной почты

11.Фамилия, имя, отчество сотрудника фирмы для контактов

12.Адрес сайта в интернете

13.ИНН

14.КПП

15.Примечания

 

4. Информация о наборах

Информация о наборах содержится в таблице Наборы, которая состоит из следующих полей:

1.Код набора

2.Наименование

3.Описание

4.Примечания

 

5.Информация об упаковке набора и торговой наценке

Эта информация содержится в таблице Виды упаковки.

Поля таблицы:

1.Наименование вида упаковки

2.Наценка за упаковку

3.Торговая наценка

4.Примечания

 

6. Информация об ингредиентах, входящих в состав конфет

Так как все конфеты входящие в набор шоколадные, появляется таблица Шоколад, состоящая из:

1. Код сорта шоколада

2.Наименование сорта шоколада

Шоколад является не единственным ингредиентом. Добавим в конфету еще орех и начинку.

Структура таблицы Орех:

1.Код сорта ореха

2.Наименование сорта ореха

Структура таблицы Начинка:

1.Код сорта начинки

2.Наименование сорта начинки

Структура таблицы Конфеты:

1.Код конфеты

2.Наименование

3.Сорт шоколада

4.Сорт ореха

5.Сорт начинки

6.Вес

7.Стоимость

8.Описание

9.Примечания

 

7. Информация о заказах

Таблица Заказы может иметь следующую структуру:

1.Код заказа

2.Код заказчика

3.Дата заказа

4.Дата оплаты

5.Номер платежного поручения

6.Код сотрудника, ведущего заказ

7.Примечания

После того как фирма примет заказы, они группируются в Заявки по поставщикам, видам наборов и видам упаковки.

 

Таблица Заявки состоит из:

1.Код заявки

2.Код поставщика

3.Начало периода

4.Окончание периода

5.Дата заявки

6.Номер платежного поручения

7.Код сотрудника, ведущего заявку

8.Примечания

 

Использование баз данных Access и информационных систем становится неотъемлемой составляющей деловой деятельности современного человека и функционирования преуспевающих организаций.Ни одна фирма не обходится без помощи компьютеров. Хранение данных, написание документов, составление графиков, таблиц, расписаний, создание презентаций во всем в этом нам помогает компьютер, и помогает успешно.

Данная база данных позволяет легко найти необходимого клиента, помочь ему в выборе страны, города. Удобный интерфейс программы, с оной стороны, позволяет легко ориентироваться в программе, не требуя от пользователя каких-либо специальных навыков работы с электронно-вычислительными машинами, с другой стороны представляет пользователю информацию о клиентах.

Разработка структуры базы данных. Компьютер на 100. Начинаем с Windows Vista

Разработка структуры базы данных. Компьютер на 100. Начинаем с Windows Vista

ВикиЧтение

Компьютер на 100. Начинаем с Windows Vista
Зозуля Юрий

Содержание

Разработка структуры базы данных

Начинающие пользователи для хранения всех данных обычно создают одну таблицу (по аналогии с Excel). Примерная структура такой таблицы для данной задачи может быть следующей (табл. 7.3).

Таблица 73. Предварительный проект таблицы учебной базы данных

Хранение всех данных в подобной таблице будет неудобным, поскольку в ней смешаны три разных понятия – Заказы, Клиенты и Автомобили, что приведет к повторению информации. Например, для регистрации вызова постоянного клиента придется каждый раз вводить его номер карточки, фамилию и другие данные. Если создать отдельную таблицу Клиенты, то сведения о клиентах будут заноситься только при первом вызове, а при последующих фамилия клиента будет выбираться из раскрывающегося списка. Исходя из аналогичных соображений, можно также создать отдельную таблицу Автомобили, и окончательная структура базы данных может быть такой (рис. 7.15).

Несколько замечаний по созданному проекту.

? В каждой таблице нужно определить ключевое поле. В таблице Клиенты это будет поле НомерКарточки, а в таблице Автомобили НомерАвтомобиля. В таблице Заказы нет подходящего поля для ключевого, поэтому было введено дополнительное поле КодЗаказа с типом данных Счетчик.

Рис. 7.15. Проект структуры базы данных диспетчерской службы такси

? Для регистрации исполнения заказов введено дополнительное поле СостояниеЗаказа, в которое оператор сможет вводить следующие значения – Активный, Выполнен, Отменен.

? Для упрощения задачи пусть каждый водитель работает только на своем автомобиле в одну смену. В случае посменной работы водителей нужно будет разделить таблицу Автомобили на несколько отдельных.

ПРИМЕЧАНИЕ

Кроме связей типа «один-ко-многим» существуют связи «один-к-одному» и «многие-ко-многим». Так, если нужно хранить расширенные сведения об автомобилях и водителях, то целесообразно создать отдельную таблицу Водители, которая была бы связана с таблицей Автомобили способом «один-к-одному».

Связь «многие-ко-многим» реализуется в Access с помощью дополнительной таблицы. В данном примере таблицы Автомобили и Клиенты связаны между собой отношением «многие-ко-многим» с помощью дополнительной таблицы Заказы.

После того как структура базы данных создана и проверена, нужно проработать более детально структуру каждой таблицы. Таблица Клиенты была создана в предыдущем уроке, поэтому рассмотрим проекты таблиц Заказы и Автомобили (табл. 7.4, 7.5).

Таблица 7.4. Проект таблицы Автомобили

Для полей Автомобиль и Клиент выбран числовой тип, поскольку они используются в связях (см. рис. 7.15), а связанные поля должны иметь одинаковый тип.

Данный текст является ознакомительным фрагментом.

Структуры данных

Структуры данных Первое, в чем следует разобраться, — это структуры данных, которые управляют работой библиотеки:• управляющая структура resmgr_attr_t• таблица функций установления соединения resmgr_connect_funcs_t• таблица функций ввода-вывода resmgr_io_funcs_t и еще одна внутренняя

11.7.1. Структуры данных

11. 7.1. Структуры данных Хотя код в ladsh2.с поддерживает концепцию задания как множества процессов (предположительно, объединенных вместе каналами), он не предоставляет способа указания того, какие файлы использовать для ввода и вывода. Чтобы позволить это, добавляются новые

Структуры данных процесса

Структуры данных процесса Каждый процесс представлен в системе двумя основными структурами данных — proc и user, описанными, соответственно, в файлах <sys/proc.h> и <sys/user.h>. Содержимое и формат этих структур различны для разных версий UNIX. В табл. 3.1 приведены некоторые поля

Структуры данных

Структуры данных Структура данных socket, описывающая сокет, представлена на рис. 6.21. В этой структуре хранится информация о типе сокета (so_type), его текущем состоянии (so_state) и используемом протоколе (so_proto). Рис. 6.21. Структуры данных сокетаСокет является коммуникационным узлом

12.11 Разработка базы данных сервера имен

12.11 Разработка базы данных сервера имен В небольшой организации можно иметь единую базу данных. Однако это не подойдет для больших фирм, охватывающих целый географический район. Например, если компания с именем домена fishfood.com имеет центральный офис в штате Мэн, а

Экспорт данных из базы данных Access 2007 в список SharePoint

Экспорт данных из базы данных Access 2007 в список SharePoint Access 2007 позволяет экспортировать таблицу или другой объект базы данных в различных форматах, таких как внешний файл, база данных dBase или Paradox, файл Lotus 1–2–3, рабочая книга Excel 2007, файл Word 2007 RTF, текстовый файл, документ XML

Перемещение данных из базы данных Access 2007 на узел SharePoint

Перемещение данных из базы данных Access 2007 на узел SharePoint Потребности многих приложений Access 2007 превышают простую потребность в управлении и сборе данных. Часто такие приложения используются многими пользователями организации, а значит, имеют повышенные потребности в

Спасение данных из поврежденной базы данных

Спасение данных из поврежденной базы данных Возможно, что все вышеприведенные действия не приведут к восстановлению базы данных. Это означает, что база серьезно повреждена и либо совсем не подлежит восстановлению как единое целое, либо для ее восстановления понадобится

1. Абстрактные структуры данных

1. Абстрактные структуры данных Структурированные типы данных, такие как массивы, множества, записи, представляют собой статические структуры, так как их размеры неизменны в течение всего времени выполнения программы.Часто требуется, чтобы структуры данных меняли свои

1. Древовидные структуры данных

1.  Древовидные структуры данных Древовидной структурой данных называется конечное множество элементов-узлов, между которыми существуют отношения – связь исходного и порожденного.Если использовать рекурсивное определение, предложенное Н. Виртом, то древовидная

Проектирование структуры данных

Проектирование структуры данных Как и построение здания, построение базы данных начинается с проектирования. Чтобы понять, какая структура базы будет для вас наиболее удобной и полезной, следуйте нижеприведенным этапам проектирования.1. Для начала необходимо выяснить,

Обновление базы данных с помощью объекта адаптера данных

Обновление базы данных с помощью объекта адаптера данных Адаптеры данных могут не только заполнять для вас таблицы объекта DataSet. Они могут также поддерживать набор объектов основных SQL-команд, используя их для возвращения модифицированных данных обратно в хранилище

Базы данных (классы для работы с базами данных)

Базы данных (классы для работы с базами данных) В MFC включены несколько классов, обеспечивающую поддержку приложений, работающих с базами данных. В первую очередь это классы ориентированные на работу с ODBC драйверами – CDatabase и CRecordSet. Поддерживаются также новые средства для

Проектирование логической структуры базы данных

Проектирование логической структуры базы данных Итак, мы определили состав дескрипторов, то есть ключевых полей для поиска, по которым чаще всего (по нашему прогнозу) будут формироваться запросы к базе данных. Теперь начнем разработку логической структуры БД. Под

20. Древовидные структуры данных

20. Древовидные структуры данных Древовидной структурой данных называется конечное множество элементов-узлов, между которыми существуют отношения – связь исходного и порожденного.Если использовать рекурсивное определение, предложенное Н. Виртом, то древовидная

Microsoft Access

Создание реляционной базы данных с помощью СУБД начинается с формирования структуры таблиц. При этом формируется состав полей и задается их описание. После формирования структуры таблиц создается схема данных, в которой устанавливаются связи между таблицами.

При создании базы данных важно задать параметры, в соответствии с которыми Access будет автоматически поддерживать целостность базы данных. Для этого при определении структуры таблиц должны быть указаны ограничения на допустимые значения данных.

Завершается создание базы данных процедурой загрузки, т. е. заполнением таблиц конкретной информацией. Особое значение имеет технология загрузки взаимосвязанных данных. Удобным инструментом загрузки являются формы ввода-вывода. Формы позволяют создать экранный аналог документа, через который можно вводить данные в несколько взаимосвязанных таблиц.

Access хранит все таблицы базы данных в одном файле. Прежде чем приступить созданию таблиц, необходимо создать файл базы данных.

Начать создание базы данных можно с помощью команды меню Файл | Создать или кнопки Создать базу данных на панели инструментов. Независимо от выбранного варианта выводится диалоговое окно “Создание”.

Вкладка “Базы данных” выбирается, если пользователь планирует просмотреть и, выбрав один из шаблонов, с помощью Мастера баз данных создать типовую базу данных. Чтобы начать работу Мастера, достаточно щелкнуть по значку нужной базы данных. Вкладка “Database” выбирается для открытия списка англоязычных баз данных.

Чтобы создать файл новой базы данных, нужно выбрать вкладку “Общие” и дважды щелкнуть по значку Новая база данных. В появившемся окне “Файл новой базы данных” нужно выбрать папку, в которой будет размещен файл, задать имя файла и нажать кнопку Создать.

В результате выполнения команды Создать открывается окно базы данных с именем соответствующем заданному в окне “Файл новой базы данных”. При создании новой базы данных списки объектов в Рабочем поле отсутствуют.

Создание таблицы базы данных состоит из двух этапов. На первом этапе определяется её структура: состав полей, их имена, последовательность размещения полей в таблице, тип данных каждого поля, размер поля, ключевые поля таблицы и другие свойства полей. На втором этапе производится создание записей таблицы и заполнение их данными.

Для создания новой таблицы надо в окне базы данных выбрать вкладку “Таблицы” и нажать кнопку Создать. В открывшемся окне “Новая таблица” нужно выбрать один из режимов создания таблицы. Режим Конструктор определяет выбор основного способа создания новой таблицы. Режим Конструктора позволяет пользователю самому указать параметры всех элементов структуры таблицы.

При выборе режима Конструктор появляется окно “Таблица1:Таблица”, в котором определяется структура таблицы базы данных. Для определения поля в окне задаются Имя поля, Тип данных, Описание. Общие свойства на вкладке “Общие” и тип элемента управления на вкладке “Подстановка”.

Имя поля каждое поле в таблице должно иметь уникальное имя. Оно является комбинацией из букв, цифр, пробелов и специальных символов. Максимальная длина имени 64 символа.

Тип данных определяется значениями, которые предполагается вводить в поле, и операциями, которые будут выполняться с этими значениями. Допускается использование восьми типов данных.

Список типов вызывается нажатием кнопки списка при выборе типа данных для каждого поля:
• Текстовый — тип данных по умолчанию. Число символов в поле не должно превышать 255;
• Поле Мемо — текстовые данные длиной до 64000 символов;
• Числовой — числовые данные используются в математических вычислениях;
• Денежный — числовые данные используются в расчетах с точностью до 15 знаков в целой части и до 4 знаков в дробной;
• Дата | Время Значения даты или времени, относящиеся к годам с 100 по 9999 включительно;
• Счетчик — тип данных поля, в которое для каждой новой записи вводятся последовательно возрастающие целые числа. В таблице не может быть более одного поля этого типа. Используется для определения уникального ключа таблицы;
• Логический — логические данные, которые могут иметь одно из двух возможных значений Да — Нет;
• Поле объекта OLE — объект электронная таблица Excel, документ Word, рисунок, звукозапись и др.;
• Мастер подстановок — выбор этого типа данных запускает Мастера, который строит для поля список значений на основе полей другой таблицы.

Общие свойства задаются на вкладке “Общие” для каждого поля и зависят от выбранного типа данных:
• Размер поля задает максимальный размер данных, сохраняемых в поле. Для поля текстового типа задается размер от 1 до 255. Для поля с числовым типом данных можно задать:

* Байт — для целых чисел от 0 до 255 длина поля 1 байт;
* Целое — для чисел от — 32768 до + 32767, занимает 2 байта;
* Длинное целое — для чисел от -147483648 до 2147483647, занимает 4 байта;
* С плавающей точкой 4 байта для чисел от -3,4Е-38 до +3,4Е38;
* С плавающей точкой 8 байт для чисел от -1,797Е-308 до + 1,797Е308.

Рекомендуется задавать минимально допустимый размер поля, который понадобится для сохраняемых значений.
• Формат поля является форматом отображения заданного типа данных и задает правила представления данных при выводе их на экран или печать. Для указания конкретного формата отображения необходимо выбрать в раскрывающемся списке одно из значений свойства Формат поля. Формат поля используется для отображения данных в режиме таблицы, а также применяется в формах или отчетах при отображении этих полей.
• Число десятичных знаков задает для числового и денежного типов данных число знаков после запятой от 0 до 15.
• Подпись поля задает текст, который выводится в таблицах, формах и отчетах.
• Условие на значение позволяет осуществлять контроль ввода, задает ограничения на вводимые значения, при нарушении условий запрещает ввод и выводит текст, заданный свойством Сообщение об ошибке.
• Сообщение об ошибке задает текст сообщения, выводимый на экран при нарушении ограничений, заданных свойством Условие на значение.

Тип элемента управления — свойство, которое задается на вкладке Подстановка в окне Конструктора таблиц. Это свойство определяет, будет ли отображаться поле в таблице и в форме в виде поля, списка или поля со списком.

Если для поля выбран тип элемента управления Список или Поле со списком, то на вкладке “Подстановка” появляются дополнительные свойства, которые определяют источник данных для строк списка и ряд других характеристик списка. Источником данных для списка выбирается таблица, с которой осуществляется постоянная связь.

Каждая таблица в базе данных должна иметь уникальный (первичный) ключ, который может быть простым или составным, включающим несколько полей. Для определения ключа выделяются поля, составляющие ключ, и на панели инструментов нужно нажать кнопку Ключевое поле или выбрать в меню команду Правка | Ключевое поле.

Для ключевого поля автоматически строится индекс, в чем можно убедится, просмотрев информацию об индексах таблицы. Окно “Индексы” вызывается щелчком по кнопке Индексы на панели или выполнением команды Вид | Индексы.

В этом окне индекс первичного ключа имеет имя Primary Key, в столбце Поле перечисляются имена полей, составляющие индекс. Индекс ключевого поля всегда уникален и не допускает пустых полей в записях.

После определения структуры таблицы её надо сохранить. Для этого используется команда Файл | Сохранить или кнопка панели инструментов Сохранить. В окне “Сохранение” вводится имя таблицы.

Сохранение таблицы делает доступным режим таблицы, позволяющий перейти ко второму этапу создания таблицы — созданию записей. Переход в режим таблицы осуществляется нажатием кнопки Представление таблицы на панели инструментов конструктора таблиц.

Создание новой таблицы в режиме таблицы осуществляется выбором Режим таблицы в окне “Новая таблица”. Режим таблицы позволяет создать таблицу, не определяя предварительно её структуру. После выбора этого режима открывается пустая таблица, в которую можно ввести данные. При сохранении этой таблицы Access проанализирует данные и автоматически присвоит соответствующий тип данных каждому полю, т. е. создаст структуру таблицы. Пустая таблица имеет 20 столбцов и 30 строк. Полям таблицы по умолчанию присваиваются имена Поле 1, Поле 2 и т. д.

Любое поле таблицы можно переименовать в соответствии с желаниями пользователя. Для этого нужно дважды щелкнуть мышью по области выделения столбца, содержащей его имя. Можно также выполнить команду Формат | Переименовать. Для сохранения нового имени надо щелкнуть мышью в любом месте таблицы.

Если требуется создать таблицу, содержащую более 20 полей, то можно вставить новые столбцы. Для этого следует перейти в столбец, слева от которого требуется вставить новый столбец, и выполнить команду Вставка | Столбец.

Допускается удаление столбцов или изменение их положения в таблице. Для удаления столбца его следует пометить выполнить команду Правка | Удалить столбец. Для перемещения столбца следует пометить его, нажать кнопку мыши и, не отпуская её, перетащить столбец в нужное место.

В каждый столбец вводятся данные определенного типа. Все столбцы, оставленные пустыми, будут удалены при сохранении таблицы. При сохранении таблицы выводится приглашение для создания ключевого поля. При выборе Да в таблицу будет добавлено ключевое поле типа счетчик. Если введены данные, которые могут однозначно идентифицировать каждую запись и их можно сделать ключевыми, то нужно нажать кнопку Нет. В этом случае ключ должен задать пользователь в режиме Конструктора.

Возможности создания таблицы в режиме заполнения пустой таблицы ограничены и, как правило, требуют доработки в режиме Конструктора.

Мастер таблиц, выбранный в окне “Новая таблица”, автоматически создает таблицу по одному из шаблонов. Пользователю предлагается более 40 образцов таблиц, предназначенных для использования в различных целях. Каждая таблица содержит соответствующий набор полей, из которых пользователь может выбрать нужные.

Включаемые в таблицу поля могут быть переименованы. Мастер определит ключ таблицы, создаст связи новой таблицы с уже существующими в базе данных. При этом ключ новой таблицы будет включен в таблицу, с которой устанавливается связь. По запросу пользователя Мастер создает форму для ввода данных в таблицу. После создания таблицы Мастером можно доработать структуру таблицы в режиме Конструктора.

Вернуться на главную
В начало

Примеры создания базы данных и таблиц. SQL запросы примеры

Итоговое проектное задание. SQL запросы примеры

Содержание:

  • Создание структуры базы данных Корабли
  • Список заданий
  • Список заданий для базы данных «Компьютерный магазин»
  • Итоговое индивидуальное задание: проектирование и разработка БД

Создание структуры базы данных Корабли

Предлагаем рассмотреть sql запросы примеры, предназначенные для решения рядовых задач по выборке данных из базы данных Корабли.

Задание: Создать базу данных Корабли, используя СУБД MySQL (phpMyAdmin) либо другие возможные для работы с SQL, СУБД

Задание: В созданной базе данных Корабли, добавить таблицы, согласно схеме:

Важно: При заполнении таблиц следует обязательно учесть, что сначала заполняются главные таблицы!!! В нашем случае это таблицы Классы и Сражения. И только потом данные вставляются в подчиненные таблицы. Иначе возникнет ошибка!

Важно: При вставке поля типа Дата и время (date and time) чаще всего используется формат ГГГГ-ММ-ДД (для mySQL и некоторых других СУБД)

Задание: Заполните таблицы данными (согласно изображениям таблиц ниже), либо используя возможности СУБД, либо при помощи запроса INSERT

Таблица Классы:
Таблица Сражения:
Таблица Корабли:
Таблица Результаты:

Список заданий

#ЗаданиеСложность
1Вывести классы всех кораблей США. Вывод: страна, класс1
2Перечислить названия всех кораблей, имеющихся в базе. Упорядочить их по алфавиту1
3Перечислить все сражения и их даты, упорядочить по дате1
4Найти все корабли (из таблицы Корабли), имена классов которых заканчиваются на букву «о». Упорядочить по названию1.1
5Найти все корабли, имена классов которых заканчиваются на букву «о», но не «го»1.1
6Найти все корабли, название которых начинается на букву «М»1.1
7Вывести максимальное число орудий1.2
8Вывести минимальный калибр1.2
9Вывести средний показатель водоизмещения, используя функцию1.2
10Удалить сведения о классах кораблей в таблице Классы, у которых число орудий равно 12
11Удалить из таблицы Сражения битву, которая произошла 12. 12.19242
12Удалить сведения о корабле, который был спущен на воду в 1872 году2
13Измените результат битвы, в которой участвовал корабль Киришима, на «Поврежден»3
14В таблице Корабли измените название корабля «Мирури» на «Мисури»3
15Установите число орудий для класса «Мото» равный 33
16По Вашингтонскому международному договору от начала 1922 г. запрещалось строить линейные корабли водоизмещением более 35 тыс.тонн. Укажите корабли, нарушившие этот договор (учитывать только корабли с известным годом спуска на воду). Вывести названия кораблей и водоизмещение

Показать решение:

1
2
3
SELECT Водоизмещение, корабли.Год FROM классы
 INNER JOIN корабли ON классы.Класс=корабли.Класс
 WHERE Водоизмещение < 35 AND корабли. Год > 1876
4
17Укажите название корабля, участвовавшего в Битве А4
18Определить названия всех кораблей из таблицы Корабли, которые удовлетворяют, по крайней мере, комбинации любых четырех критериев из следующего списка: число орудий = 8, калибр = 15, водоизмещение = 32000, тип = bb, год спуска = 1915, класс = Конго, страна = США

Показать решение:

1
2
3
4
5
SELECT корабли.Название FROM классы
 INNER JOIN корабли ON классы.Класс=корабли.класс 
 WHERE ЧислоОрудий=9 OR Калибр=15 OR Водоизмещение=32000 
  OR Тип="bb" OR Год=1915 OR классы.Класс="Конго" 
  OR Страна="США"
4

Список заданий для базы данных «Компьютерный магазин»

Структура и создание базы данных здесь.

1. Найти номер, скорость и размер жесткого диска для компьютера стоимостью менее 30000. Вывести с псевдонимами: Модель, Процессор, Винчестер

2. Укажите производителя и скорость тех компьютеров, которые имеют жесткий диск объемом не менее 500Гб

3. Выведите номера, типы и цены всех продуктов (любого типа), выпущенных производителем Россия.
Использовать: Innter Join, Union

4. Выведите производителя, выпускающего компьютеры, но не ноутбуки.
Использовать подзапрос

5. Выведите производителей компьютеров с процессором не менее 2000МГц. Вывести: Производитель.
Можно использовать подзапрос (IN)

6. Выведите ноутбуки, скорость которых меньше скорости любого из компьютеров. Вывести: Тип, Номер, Скорость

7. Выведите производителей самых дешевых цветных принтеров

Итоговое индивидуальное задание: проектирование и разработка БД

  1. Разработать проект базы данных по какой-либо теме (выбрать самостоятельно):
  • База данных включает не менее двух таблиц.
  • Организовать связи между таблицами и отобразить их на схеме.
  • Используя интерфейс phpMySQL (или другой) создать базу данных.
  • Заполнить базу записями.
  • Создание запросов. Придумать и реализовать запросы:
    • 3 запроса на простую выборку (SELECT).
    • 3 запроса на выборку с условием (WHERE, LIKE).
    • 2 запроса с применением агрегатных функций и переименованием столбцов.
    • 3 запроса с объединением таблиц (INNER JOIN, UNION).
    • 1 запрос на вставку (INSERT).
    • 2 запроса на обновление с условием (UPDATE … WHERE).
    • 1 запрос на удаление.
  • Результаты работы представить в виде отчета:
    • Титульный лист (наименование учреждения, название дисциплины, название работы, выполнил…).
    • Проект БД, включающий схему со связями (описание ключевых полей).
    • Постановка заданий к запросам и реализация запросов.

    Справка WellTracking — Database Creator tool

    Инструмент Редактирование структуры базы геоданных  предназначен для создания и обновления существующей схемы базы данных приложения WellTracking. С его помощью вы сможете создать набор классов объектов WELLDATA, состоящий из 9 классов объектов (Лицензионный участок (LICENSE AREA), Горный отвод (MINE_TAKE), Куст (PAD), Батарея (WELL SEQUENCE), Мостки (CATWALK), Скважина (WELL), Траектория ствола (WELLBORE GEOMETRY), Точки-цели (TARGET_POINT), Точки пластопересечений (FORMATION INTERCEPTS), их атрибутивные таблицы со служебными полями, служебные таблицы, таблицы Стволов (WELLBORE), Пластов (FORMATION), Месторождений (FIELD),  установить связи таблиц для обеспечения целостности данных и т.д., которые будут использованы в дальнейшей работе модуля.

     

    При помощи данного инструмента вы сможете обновить не только структуру баз геоданных, созданных в версиях WellTracking ниже 6.5, также автоматически подгрузить разнообразные пользовательские шаблоны для всех типов отчетов, перепроецировать существующие данные если это позволяют координатные домены исходной и измененной системы координат.

     

    Внимание!

    Изменить структуру БГД может только администратор системы WellTracking.

     

     

    Команда вызывается как из ArcMap из основного меню WellTracking, так и из Catalog, и ArcCatalog из контекстного меню выбранной БГД.

     

     

    Внимание!

    Установка связей таблиц (relationship classes) и создание новых полей возможно только при наличии лицензии ArcEditor и выше. Если у вас лицензия ArcView, вам следует обратиться в группу технической поддержки [email protected] для создания базы данных в индивидуальном порядке или воспользоваться эталонной базой геоданных SampleDatabase.ru.gdb, расположенной в папке инсталляции программы WellTracking.

     

     

    Приложением WellTracking предусмотрена работа со всеми типами баз данных: базы данных *mdb (Personal Geodatabase), файловой FGDB и корпоративной SDE.

     

    Внимание!

    Работа с корпоративными базами SDE возможна только при наличии лицензии ArcEditor и выше.

     

    Рассмотрим два варианта работы с инструментом:

    1. Создание пустой БГД WellTracking с заранее определенной структурой;

    2. Обновление существующей БГД, созданной в версиях WellTracking ниже 6.5.

     

    1. Для создания с нуля структурированной БГД WellTracking вам будет нужно выполнить следующее:

     

    • Создать пустую БГД стандартными средствами ArcGIS;

    • Задать схему данной БГД при помощи инструмента Редактирование структуры базы геоданных.

    • Первый вход в пустую БГД WellTracking осуществляется под именем Administrator, без указания пароля.

     

     

    Заполните строки открывшегося диалога.

     

     

     

     

     

     

     

     

    Процесс создания/обновления схемы БГД WellTracking запускается нажатием на кнопку ОК и сопровождается окнами с сообщениями о ходе процесса.

     

     

    После завершения работы инструмента вы увидите список обновлений, а также сообщения об ошибках, которые вы можете сохранить в лог-файл и переслать разработчикам [email protected].

     

     

    После того как инструмент отработал, структурированная база геоданных в ArcCatalog будет  выглядеть следующим образом:

     

     

    2. Обновление структуры рабочей базы WellTracking

     

    Версия программы WellTracking 6.0 стала поддерживать и стационарное, и мобильное бурения. В связи с этим была обновлена структура БГД  при работе с батареей.  В версиях ниже 6.0 батарея WELL_ROW не имела геометрии и была таблицей, с которой были связаны классы объектов НДС и мостки. В версии 6.0 батарея – пространственный объект WELL_SEQUENCE, имеющий связь с мостками и устьями скважин. Поэтому для работы с новой версией WellTracking 6.0 требуется обновить структуру БГД.

     

    Внимание!

    Если структура БГД не будет обновлена, вход в систему WellTracking будет невозможен.

     

    Как отработает инструмент

     

    1.  Будут удалены класс объектов НДС (DSR) и таблица Батарея ( WELL_ROW), а так же все связи, относящиеся к ним.

    2. В наборе классов объектов WELLDATA появится новый класс пространственных объектов Батарея (WELL_SEQUENCE).

    3. Служебные поля из НДС (DSR) и Батареи (WELL_ROW) перенесутся в атрибутивную таблицу обновленной Батареи (WELL_SEQUENCE). Создадутся соответствующие домены и связи.

    4. Пользовательские поля из атрибутивной таблицы НДС (DSR) и таблицы Батарея ( WELL_ROW) будут добавлены в атрибутивную таблицу обновленной Батареи (WELL_SEQUENCE).

    5. Выделенные зеленым шрифтом элементы структуры являются обязательными и не подлежат пользовательскому редактированию.

     

    Выберите базу и войдите в систему под паролем администратора.

     

     

    Заполните предложенный диалог и запустите работу инструмента.

     

     

    После завершения работы инструмента вы увидите список обновлений, а также сообщения об ошибках, которые вы можете сохранить в лог-файл и переслать разработчикам [email protected].

     

     

    Ниже показан пример обновления структуры существующей БГД инструментом Редактирование структуры.

     

     

     

     

     

    *****

     

     

    Основы проектирования баз данных

    Правильно спроектированная база данных обеспечивает доступ к актуальной и точной информации. Поскольку правильный дизайн необходим для достижения ваших целей при работе с базой данных, имеет смысл потратить время, необходимое для изучения принципов хорошего дизайна. В конце концов, у вас гораздо больше шансов получить базу данных, которая соответствует вашим потребностям и может легко вносить изменения.

    В этой статье приведены рекомендации по планированию настольной базы данных. Вы узнаете, как решить, какая информация вам нужна, как разделить эту информацию на соответствующие таблицы и столбцы и как эти таблицы соотносятся друг с другом. Вы должны прочитать эту статью, прежде чем создавать свою первую настольную базу данных.

    Важно: Access предоставляет возможности проектирования, которые позволяют создавать приложения баз данных для Интернета. При проектировании для Интернета многие аспекты дизайна отличаются. В этой статье не обсуждается проектирование веб-приложения базы данных. Дополнительные сведения см. в статье Создание базы данных для публикации в Интернете.

    В этой статье

    • Некоторые термины базы данных, которые нужно знать

    • Что такое хороший дизайн базы данных?

    • Процесс проектирования

    • Определение цели вашей базы данных

    • Поиск и систематизация необходимой информации

    • Разделение информации на таблицы

    • Преобразование информационных элементов в столбцы

    • Указание первичных ключей

    • Создание связей между таблицами

    • Уточнение дизайна

    • Применение правил нормализации

    Некоторые термины базы данных, которые нужно знать

    Access организует вашу информацию в таблиц : списки строк и столбцов, напоминающие блокнот бухгалтера или электронную таблицу. В простой базе данных у вас может быть только одна таблица. Для большинства баз данных вам потребуется более одной. Например, у вас может быть таблица, в которой хранится информация о продуктах, другая таблица, в которой хранится информация о заказах, и еще одна таблица, содержащая информацию о покупателях.

    Каждую строку правильнее называть записью , а каждый столбец полем . Запись — это осмысленный и непротиворечивый способ объединения информации о чем-либо. Поле – это отдельный элемент информации – тип элемента, который появляется в каждой записи. Например, в таблице «Продукты» каждая строка или запись будет содержать информацию об одном продукте. Каждый столбец или поле содержит определенную информацию об этом продукте, например его название или цену.

    Верх страницы

    Что такое хороший дизайн базы данных?

    Определенные принципы определяют процесс проектирования базы данных. Первый принцип заключается в том, что дублирование информации (также называемое избыточными данными) — это плохо, потому что это занимает место и увеличивает вероятность ошибок и несоответствий. Второй принцип заключается в том, что важна правильность и полнота информации. Если ваша база данных содержит неверную информацию, любые отчеты, извлекающие информацию из базы данных, также будут содержать неверную информацию. В результате любые решения, которые вы принимаете на основе этих отчетов, будут дезинформированы.

    Таким образом, хороший проект базы данных должен:

    • Разделяет вашу информацию на тематические таблицы, чтобы уменьшить количество избыточных данных.

    • Предоставляет Access информацию, необходимую для объединения информации в таблицах по мере необходимости.

    • Помогает поддерживать и обеспечивать точность и целостность вашей информации.

    • Удовлетворяет ваши потребности в обработке данных и отчетности.

    Верх страницы

    Процесс проектирования

    Процесс проектирования состоит из следующих шагов:

    • Определите назначение вашей базы данных     

      Это поможет вам подготовиться к оставшимся шагам.

    • org/ListItem»>

      Найдите и систематизируйте необходимую информацию     

      Соберите все типы информации, которые вы, возможно, захотите записать в базу данных, например, название продукта и номер заказа.

    • Разделить информацию на таблицы     

      Разделите свои информационные элементы на основные объекты или темы, такие как Продукты или Заказы. Затем каждый предмет становится таблицей.

    • Превратить информационные элементы в столбцы     

      Решите, какую информацию вы хотите хранить в каждой таблице. Каждый элемент становится полем и отображается в виде столбца в таблице. Например, таблица «Сотрудники» может включать такие поля, как «Фамилия» и «Дата приема на работу».

    • Укажите первичные ключи     

      Выберите первичный ключ каждой таблицы. Первичный ключ — это столбец, который используется для уникальной идентификации каждой строки. Примером может быть идентификатор продукта или идентификатор заказа.

    • Настроить отношения между таблицами     

      Посмотрите на каждую таблицу и решите, как данные в одной таблице связаны с данными в других таблицах. При необходимости добавьте поля в таблицы или создайте новые таблицы, чтобы прояснить отношения.

    • org/ListItem»>

      Усовершенствуйте свой дизайн     

      Проанализируйте свой дизайн на наличие ошибок. Создайте таблицы и добавьте несколько записей выборочных данных. Посмотрите, сможете ли вы получить желаемые результаты из своих таблиц. При необходимости внесите коррективы в дизайн.

    • Применить правила нормализации     

      Примените правила нормализации данных, чтобы проверить, правильно ли структурированы ваши таблицы. При необходимости внесите коррективы в таблицы.

    Верх страницы

    Определение цели вашей базы данных

    Рекомендуется записать назначение базы данных на бумаге — ее цель, как вы собираетесь ее использовать и кто будет ее использовать. Например, для небольшой базы данных для домашнего бизнеса вы можете написать что-нибудь простое, например: «База данных клиентов хранит список информации о клиентах для создания рассылок и отчетов». Если база данных является более сложной или используется многими людьми, как это часто бывает в корпоративной среде, цель может легко состоять из абзаца или более и должна включать, когда и как каждый человек будет использовать базу данных. Идея состоит в том, чтобы иметь хорошо разработанную формулировку миссии, на которую можно ссылаться на протяжении всего процесса проектирования. Наличие такого заявления помогает вам сосредоточиться на своих целях, когда вы принимаете решения.

    Верх страницы

    Поиск и систематизация необходимой информации

    Чтобы найти и систематизировать необходимую информацию, начните с существующей информации. Например, вы можете записывать заказы на покупку в бухгалтерскую книгу или хранить информацию о клиентах в бумажных формах в картотеке. Соберите эти документы и перечислите каждый тип отображаемой информации (например, каждое поле, которое вы заполняете в форме). Если у вас нет существующих форм, представьте, что вам нужно разработать форму для записи информации о клиенте. Какую информацию вы бы поместили в форму? Какие поля для заполнения вы бы создали? Определите и перечислите каждый из этих элементов. Например, предположим, что в настоящее время вы храните список клиентов на каталожных карточках. Изучение этих карточек может показать, что каждая карточка содержит имя клиента, адрес, город, штат, почтовый индекс и номер телефона. Каждый из этих элементов представляет потенциальный столбец в таблице.

    При подготовке этого списка не беспокойтесь о том, чтобы он был идеальным. Вместо этого перечислите каждый пункт, который приходит на ум. Если кто-то еще будет использовать базу данных, попросите также поделиться своими идеями. Позже вы сможете уточнить список.

    Затем рассмотрите типы отчетов или рассылок, которые вы, возможно, захотите создать из базы данных. Например, вы можете захотеть, чтобы в отчете о продажах продуктов отображались продажи по регионам или в сводном отчете о запасах, показывающем уровни запасов продуктов. Вы также можете создать стандартные письма для отправки клиентам, которые объявляют о распродаже или предлагают премию. Создайте отчет в уме и представьте, как он будет выглядеть. Какую информацию вы бы разместили в отчете? Перечислите каждый предмет. Сделайте то же самое для формы письма и для любого другого отчета, который вы планируете создать.

    Размышление об отчетах и ​​рассылках, которые вы, возможно, захотите создать, поможет вам определить элементы, которые вам понадобятся в вашей базе данных. Например, предположим, вы даете клиентам возможность подписаться на периодические обновления по электронной почте (или отказаться от них) и хотите распечатать список тех, кто дал согласие. mail» в таблицу клиентов. Для каждого клиента вы можете установить в поле значение Да или Нет.

    Требование отправлять сообщения электронной почты клиентам предлагает записать еще один элемент. Как только вы узнаете, что клиент хочет получать сообщения электронной почты, вам также необходимо будет знать адрес электронной почты, на который их следует отправлять. Поэтому вам необходимо записать адрес электронной почты для каждого клиента.

    Имеет смысл создать прототип каждого отчета или выходного листа и подумать, какие элементы вам потребуются для создания отчета. Например, когда вы изучаете бланк письма, на ум могут прийти несколько вещей. Если вы хотите включить правильное приветствие — например, «мистер», «миссис». или «мисс». строка, с которой начинается приветствие, вам нужно будет создать элемент приветствия. Кроме того, вы обычно можете начать письмо с «Уважаемый мистер Смит», а не «Уважаемый. Мистер Сильвестр Смит». Это говорит о том, что обычно вы хотите хранить фамилию отдельно от имени.

    Ключевым моментом, который следует помнить, является то, что вы должны разбивать каждую часть информации на мельчайшие полезные части. В случае с именем, чтобы сделать фамилию легко доступной, вы разделите имя на две части – имя и фамилию. Например, для сортировки отчета по фамилии полезно хранить фамилию клиента отдельно. В общем, если вы хотите сортировать, искать, вычислять или создавать отчеты на основе элемента информации, вы должны поместить этот элемент в отдельное поле.

    Подумайте, на какие вопросы база данных должна ответить. Например, сколько продаж вашего рекомендуемого продукта вы закрыли в прошлом месяце? Где живут ваши лучшие клиенты? Кто является поставщиком вашего самого продаваемого продукта? Предвосхищение этих вопросов поможет вам сосредоточиться на дополнительных элементах для записи.

    После сбора этой информации вы готовы к следующему шагу.

    Верх страницы

    Разделение информации на таблицы

    Чтобы разделить информацию на таблицы, выберите основные объекты или темы. Например, после поиска и систематизации информации для базы данных продаж продуктов предварительный список может выглядеть так:

    .

    Здесь показаны основные объекты: продукты, поставщики, клиенты и заказы. Поэтому имеет смысл начать с этих четырех таблиц: одна для фактов о продуктах, одна для фактов о поставщиках, одна для фактов о клиентах и ​​одна для фактов о заказах. Хотя это не полный список, это хорошая отправная точка. Вы можете продолжать уточнять этот список, пока не получите хорошо работающий дизайн.

    Когда вы впервые просматриваете предварительный список элементов, у вас может возникнуть соблазн поместить их все в одну таблицу вместо четырех, показанных на предыдущем рисунке. Здесь вы узнаете, почему это плохая идея. Рассмотрим на мгновение приведенную здесь таблицу:

    .

    В этом случае каждая строка содержит информацию как о товаре, так и о его поставщике. Поскольку у вас может быть много продуктов от одного и того же поставщика, информация об имени и адресе поставщика должна повторяться много раз. Это пустая трата места на диске. Гораздо лучшим решением является запись информации о поставщике только один раз в отдельную таблицу Suppliers, а затем связывание этой таблицы с таблицей Products.

    Вторая проблема с этой схемой возникает, когда вам нужно изменить информацию о поставщике. Например, предположим, что вам нужно изменить адрес поставщика. Поскольку он появляется во многих местах, вы можете случайно изменить адрес в одном месте и забыть изменить его в других. Запись адреса поставщика только в одном месте решает проблему.

    При разработке базы данных всегда старайтесь записывать каждый факт только один раз. Если вы обнаружите, что повторяете одну и ту же информацию более чем в одном месте, например адрес конкретного поставщика, поместите эту информацию в отдельную таблицу.

    Наконец, предположим, что есть только один продукт, поставляемый Coho Winery, и вы хотите удалить продукт, но сохранить информацию об имени и адресе поставщика. Как бы вы удалили запись о продукте, не потеряв при этом информацию о поставщике? Вы не можете. Поскольку каждая запись содержит факты о продукте, а также факты о поставщике, вы не можете удалить одну, не удалив другую. Чтобы разделить эти факты, вы должны разделить одну таблицу на две: одну таблицу для информации о продукте и другую таблицу для информации о поставщике. При удалении записи о продукте должны быть удалены только факты о продукте, а не факты о поставщике.

    После того, как вы выбрали тему, представленную таблицей, в столбцах этой таблицы должны храниться факты только о теме. Например, таблица продуктов должна хранить факты только о продуктах. Поскольку адрес поставщика является фактом о поставщике, а не фактом о продукте, он принадлежит таблице поставщиков.

    Верх страницы

    Преобразование элементов информации в столбцы

    Чтобы определить столбцы в таблице, решите, какую информацию о субъекте, записанном в таблице, вам нужно отслеживать. Например, для таблицы «Клиенты» хороший начальный список столбцов составляют «Имя», «Адрес», «Город-штат-индекс», «Отправить электронное письмо», «Приветствие» и «Адрес электронной почты». Каждая запись в таблице содержит одинаковый набор столбцов, поэтому для каждой записи можно сохранить имя, адрес, город-штат-индекс, отправить электронное письмо, приветствие и адрес электронной почты. Например, столбец адреса содержит адреса клиентов. Каждая запись содержит данные об одном клиенте, а поле адреса содержит адрес этого клиента.

    После того как вы определили начальный набор столбцов для каждой таблицы, вы можете дополнительно уточнить столбцы. Например, имеет смысл хранить имя клиента в виде двух отдельных столбцов: имени и фамилии, чтобы можно было сортировать, искать и индексировать только эти столбцы. Точно так же адрес фактически состоит из пяти отдельных компонентов: адреса, города, штата, почтового индекса и страны/региона, и также имеет смысл хранить их в отдельных столбцах. Например, если вы хотите выполнить операцию поиска, фильтрации или сортировки по состоянию, вам необходимо, чтобы информация о состоянии хранилась в отдельном столбце.

    Вам также следует подумать, будет ли база данных содержать информацию только местного происхождения или также международную. Например, если вы планируете хранить международные адреса, лучше иметь столбец «Регион» вместо «Штат», потому что такой столбец может содержать как внутренние штаты, так и регионы других стран/регионов. Точно так же почтовый индекс имеет больше смысла, чем почтовый индекс, если вы собираетесь хранить международные адреса.

    В следующем списке приведены несколько советов по определению столбцов.

    • Не включать расчетные данные     

      В большинстве случаев не следует хранить результат вычислений в таблицах. Вместо этого вы можете попросить Access выполнить расчеты, когда захотите увидеть результат. Например, предположим, что имеется отчет «Продукты в заказе», в котором отображается промежуточная сумма заказанных единиц для каждой категории продуктов в базе данных. Однако ни в одной таблице нет промежуточного столбца «Единицы в заказе». Вместо этого таблица «Продукты» содержит столбец «Единицы в заказе», в котором хранятся единицы в заказе для каждого продукта. Используя эти данные, Access вычисляет промежуточный итог каждый раз, когда вы печатаете отчет. Сам промежуточный итог не должен храниться в таблице.

    • Хранить информацию в ее наименьших логических частях     

      У вас может возникнуть соблазн создать одно поле для полных имен или для названий продуктов вместе с описаниями продуктов. Если вы объедините более одного вида информации в поле, впоследствии будет сложно получить отдельные факты. Старайтесь разбивать информацию на логические части; например, создайте отдельные поля для имени и фамилии или для названия продукта, категории и описания.

    После уточнения столбцов данных в каждой таблице можно выбрать первичный ключ для каждой таблицы.

    Верх страницы

    Указание первичных ключей

    Каждая таблица должна включать столбец или набор столбцов, которые однозначно идентифицируют каждую строку, хранящуюся в таблице. Часто это уникальный идентификационный номер, например идентификационный номер сотрудника или серийный номер. В терминологии баз данных эта информация называется первичный ключ таблицы. Access использует поля первичного ключа, чтобы быстро связывать данные из нескольких таблиц и объединять данные для вас.

    Если у вас уже есть уникальный идентификатор для таблицы, например номер продукта, который однозначно идентифицирует каждый продукт в вашем каталоге, вы можете использовать этот идентификатор в качестве первичного ключа таблицы, но только в том случае, если значения в этом столбце всегда будут разными для каждая запись. У вас не может быть повторяющихся значений в первичном ключе. Например, не используйте имена людей в качестве первичного ключа, потому что имена не уникальны. Вы можете легко иметь двух людей с одинаковым именем в одной таблице.

    Первичный ключ всегда должен иметь значение. Если в какой-то момент значение столбца может стать неназначенным или неизвестным (отсутствующее значение), его нельзя использовать в качестве компонента первичного ключа.

    Всегда следует выбирать первичный ключ, значение которого не изменится. В базе данных, которая использует более одной таблицы, первичный ключ таблицы может использоваться в качестве ссылки в других таблицах. Если первичный ключ изменяется, изменение также должно применяться везде, где есть ссылка на ключ. Использование первичного ключа, который не изменится, снижает вероятность рассинхронизации первичного ключа с другими таблицами, которые на него ссылаются.

    Часто в качестве первичного ключа используется произвольный уникальный номер. Например, вы можете присвоить каждому заказу уникальный номер заказа. Единственная цель номера заказа — идентифицировать заказ. Однажды назначенный, он никогда не меняется.

    Если вы не имеете в виду столбец или набор столбцов, которые могли бы стать хорошим первичным ключом, рассмотрите возможность использования столбца с типом данных AutoNumber. Когда вы используете тип данных AutoNumber, Access автоматически присваивает вам значение. Такой идентификатор не имеет фактов; он не содержит фактической информации, описывающей строку, которую он представляет. Идентификаторы без фактов идеально подходят для использования в качестве первичного ключа, поскольку они не меняются. Первичный ключ, содержащий факты о строке — например, номер телефона или имя клиента — с большей вероятностью изменится, поскольку может измениться сама фактическая информация.

    1. Столбец, для которого задан тип данных AutoNumber, часто является хорошим первичным ключом. Не бывает двух одинаковых идентификаторов продуктов.

    В некоторых случаях может понадобиться использовать два или более полей, которые вместе представляют собой первичный ключ таблицы. Например, таблица сведений о заказе, в которой хранятся позиции для заказов, будет использовать два столбца в своем первичном ключе: идентификатор заказа и идентификатор продукта. Когда первичный ключ использует более одного столбца, он также называется составным ключом.

    Для базы данных продаж продуктов вы можете создать столбец AutoNumber для каждой из таблиц, который будет служить первичным ключом: ProductID для таблицы Products, OrderID для таблицы Orders, CustomerID для таблицы Customers и SupplierID для таблицы Suppliers.

    Верх страницы

    Создание связи между таблицами

    Теперь, когда вы разделили информацию на таблицы, вам нужен способ снова осмысленно свести информацию воедино. Например, следующая форма включает информацию из нескольких таблиц.

    1. Информация в этой форме взята из таблицы «Клиенты»…

    2. …таблица Сотрудники…

    3. …стол заказов…

    4. …Таблица товаров…

    5. …и таблицу сведений о заказе.

    Access — это система управления реляционными базами данных. В реляционной базе данных вы делите свою информацию на отдельные тематические таблицы. Затем вы используете связи между таблицами, чтобы по мере необходимости объединять информацию.

    Верх страницы

    Создание связи «один ко многим»

    Рассмотрим этот пример: таблицы поставщиков и продуктов в базе данных заказов на продукты. Поставщик может поставить любое количество товаров. Из этого следует, что для любого поставщика, представленного в таблице «Поставщики», может быть много продуктов, представленных в таблице «Продукты». Таким образом, отношение между таблицей Suppliers и таблицей Products является отношением «один ко многим».

    Чтобы представить отношение «один ко многим» в структуре базы данных, возьмите первичный ключ на стороне отношения «один» и добавьте его в качестве дополнительного столбца или столбцов в таблицу на стороне отношения «многие». В этом случае, например, вы добавляете столбец «Идентификатор поставщика» из таблицы «Поставщики» в таблицу «Продукты». Затем Access может использовать идентификационный номер поставщика в таблице «Продукты», чтобы найти правильного поставщика для каждого продукта.

    Столбец «Идентификатор поставщика» в таблице «Продукты» называется внешним ключом. Внешний ключ — это первичный ключ другой таблицы. Столбец «Идентификатор поставщика» в таблице «Продукты» является внешним ключом, поскольку он также является первичным ключом в таблице «Поставщики».

    Вы обеспечиваете основу для соединения связанных таблиц, устанавливая пары первичных и внешних ключей. Если вы не уверены, какие таблицы должны иметь общий столбец, идентификация отношения «один ко многим» гарантирует, что для двух задействованных таблиц действительно потребуется общий столбец.

    Верх страницы

    Создание связи «многие ко многим»

    Рассмотрим взаимосвязь между таблицей «Продукты» и таблицей «Заказы».

    Один заказ может включать более одного продукта. С другой стороны, один и тот же продукт может фигурировать во многих заказах. Поэтому для каждой записи в таблице «Заказы» может быть много записей в таблице «Продукты». И для каждой записи в таблице «Товары» может быть много записей в таблице «Заказы». Этот тип отношения называется отношением «многие ко многим», потому что для любого продукта может быть много заказов; и для любого заказа может быть много продуктов. Обратите внимание, что для обнаружения отношений «многие ко многим» между вашими таблицами важно учитывать обе стороны отношения.

    Субъекты двух таблиц — заказы и продукты — связаны отношением «многие ко многим». Это представляет проблему. Чтобы понять проблему, представьте, что произойдет, если вы попытаетесь создать связь между двумя таблицами, добавив поле Product ID в таблицу Orders. Чтобы иметь более одного продукта в заказе, вам потребуется более одной записи в таблице «Заказы» для каждого заказа. Вы будете повторять информацию о заказе для каждой строки, относящейся к одному заказу, что приведет к неэффективному дизайну, который может привести к неточным данным. Вы столкнетесь с той же проблемой, если поместите поле «Идентификатор заказа» в таблицу «Продукты» — у вас будет более одной записи в таблице «Продукты» для каждого продукта. Как решить эту проблему?

    Ответ заключается в создании третьей таблицы, часто называемой соединительной таблицей, которая разбивает отношение «многие ко многим» на два отношения «один ко многим». Вы вставляете первичный ключ из каждой из двух таблиц в третью таблицу. В результате третья таблица записывает каждое вхождение или экземпляр отношения.

    Каждая запись в таблице сведений о заказе представляет одну позицию в заказе. Первичный ключ таблицы «Сведения о заказах» состоит из двух полей — внешних ключей из таблиц «Заказы» и «Продукты». Использование только поля «Идентификатор заказа» не работает в качестве первичного ключа для этой таблицы, поскольку в одном заказе может быть много позиций. Идентификатор заказа повторяется для каждой позиции в заказе, поэтому поле не содержит уникальных значений. Использование только поля Product ID также не работает, потому что один продукт может фигурировать во многих разных заказах. Но вместе эти два поля всегда создают уникальное значение для каждой записи.

    В базе данных по продажам товаров таблицы «Заказы» и «Товары» не связаны друг с другом напрямую. Вместо этого они связаны косвенно через таблицу сведений о заказе. Связь «многие ко многим» между заказами и продуктами представлена ​​в базе данных двумя отношениями «один ко многим»:

    .
    • Таблица «Заказы» и таблица «Сведения о заказе» имеют отношение «один ко многим». В каждом заказе может быть несколько позиций, но каждая позиция связана только с одним заказом.

    • Таблица «Продукты» и таблица «Сведения о заказе» имеют отношение «один ко многим». С каждым продуктом может быть связано много позиций, но каждая позиция относится только к одному продукту.

    Из таблицы сведений о заказе можно определить все продукты в конкретном заказе. Вы также можете определить все заказы для определенного продукта.

    После добавления таблицы сведений о заказе список таблиц и полей может выглядеть примерно так:

    Верх страницы

    Создание отношения «один к одному»

    Другим типом отношений являются отношения один-к-одному. Например, предположим, что вам нужно записать какую-то специальную дополнительную информацию о продукте, которая вам понадобится редко или применима только к нескольким продуктам. Поскольку вам нечасто нужна эта информация и поскольку хранение информации в таблице «Продукты» приведет к образованию пустого места для каждого продукта, к которому она не относится, вы помещаете ее в отдельную таблицу. Как и в таблице Products, вы используете ProductID в качестве первичного ключа. Отношение между этой дополнительной таблицей и таблицей Product является отношением «один к одному». Для каждой записи в таблице Product существует одна соответствующая запись в дополнительной таблице. Когда вы определяете такую ​​связь, обе таблицы должны иметь общее поле.

    Когда вы обнаружите необходимость в отношении «один к одному» в своей базе данных, подумайте, можете ли вы объединить информацию из двух таблиц в одну таблицу. Если вы не хотите этого делать по какой-либо причине, возможно, из-за того, что это приведет к большому количеству пустого пространства, в следующем списке показано, как вы будете представлять отношения в своем дизайне:

    • org/ListItem»>

      Если две таблицы имеют одну и ту же тему, вы, вероятно, можете установить связь, используя один и тот же первичный ключ в обеих таблицах.

    • Если две таблицы имеют разные темы с разными первичными ключами, выберите одну из таблиц (любую) и вставьте ее первичный ключ в другую таблицу в качестве внешнего ключа.

    Определение связей между таблицами помогает убедиться, что у вас есть правильные таблицы и столбцы. Когда существует отношение «один к одному» или «один ко многим», задействованные таблицы должны иметь общий столбец или столбцы. Когда существует отношение «многие ко многим», для представления отношения требуется третья таблица.

    Верх страницы

    Доработка дизайна

    Когда у вас есть необходимые таблицы, поля и связи, вы должны создать и заполнить таблицы примерами данных и попробовать работать с информацией: создавать запросы, добавлять новые записи и т. д. Это помогает выявить потенциальные проблемы — например, вам может понадобиться добавить столбец, который вы забыли вставить на этапе проектирования, или у вас может быть таблица, которую нужно разделить на две таблицы, чтобы устранить дублирование.

    Посмотрите, можете ли вы использовать базу данных, чтобы получить нужные вам ответы. Создавайте черновики своих форм и отчетов и смотрите, отображают ли они ожидаемые данные. Ищите ненужные дубликаты данных и, когда вы их обнаружите, измените свой дизайн, чтобы устранить их.

    Когда вы опробуете свою первоначальную базу данных, вы, вероятно, обнаружите, что ее можно улучшить. Вот несколько вещей, которые нужно проверить:

    • Вы забыли какие-либо столбцы? Если да, то относится ли эта информация к существующим таблицам? Если это информация о чем-то другом, вам может потребоваться создать еще одну таблицу. Создайте столбец для каждого элемента информации, который необходимо отслеживать. Если информацию нельзя рассчитать из других столбцов, вполне вероятно, что для нее вам понадобится новый столбец.

    • Являются ли какие-либо столбцы ненужными, поскольку их можно вычислить на основе существующих полей? Если информационный элемент можно рассчитать на основе других существующих столбцов — например, цена со скидкой, рассчитанная на основе розничной цены, — обычно лучше сделать именно это и не создавать новый столбец.

    • Вы постоянно вводите повторяющуюся информацию в одну из своих таблиц? Если это так, вам, вероятно, нужно разделить таблицу на две таблицы, которые имеют отношения «один ко многим».

    • org/ListItem»>

      У вас есть таблицы с большим количеством полей, ограниченным количеством записей и множеством пустых полей в отдельных записях? Если это так, подумайте об изменении дизайна таблицы, чтобы в ней было меньше полей и больше записей.

    • Разбита ли каждая информационная единица на мельчайшие полезные части? Если вам нужно сообщить, отсортировать, найти или вычислить элемент информации, поместите этот элемент в отдельный столбец.

    • Содержит ли каждый столбец факт о предмете таблицы? Если столбец не содержит информации о предмете таблицы, он принадлежит другой таблице.

    • Все ли отношения между таблицами представлены либо общими полями, либо третьей таблицей? Для отношений «один к одному» и «один ко многим» требуются общие столбцы. Для отношений «многие ко многим» требуется третья таблица.

    Уточнение таблицы продуктов

    Предположим, что каждый продукт в базе данных продаж продуктов относится к общей категории, такой как напитки, приправы или морепродукты. Таблица «Продукты» может включать поле, показывающее категорию каждого продукта.

    Предположим, что после изучения и уточнения структуры базы данных вы решили сохранить описание категории вместе с ее именем. Если вы добавите поле «Описание категории» в таблицу «Товары», вам придется повторять описание каждой категории для каждого продукта, подпадающего под категорию — это не очень хорошее решение.

    Лучшее решение — сделать категории новой темой для отслеживания базы данных с собственной таблицей и собственным первичным ключом. Затем вы можете добавить первичный ключ из таблицы «Категории» в таблицу «Продукты» в качестве внешнего ключа.

    Таблицы «Категории» и «Товары» имеют отношение «один ко многим»: категория может включать более одного продукта, но продукт может принадлежать только одной категории.

    При просмотре структур таблиц обращайте внимание на повторяющиеся группы. Например, рассмотрим таблицу, содержащую следующие столбцы:

    • Код продукта

    • Имя

    • Код продукта 1

    • Имя1

    • Код продукта2

    • org/ListItem»>

      Имя2

    • Код продукта3

    • Имя3

    Здесь каждый продукт представляет собой повторяющуюся группу столбцов, которая отличается от других только добавлением номера в конце имени столбца. Когда вы видите столбцы, пронумерованные таким образом, вам следует пересмотреть свой дизайн.

    У такой конструкции есть несколько недостатков. Во-первых, это заставляет вас установить верхний предел количества продуктов. Как только вы превысите этот предел, вы должны добавить новую группу столбцов в структуру таблицы, что является основной административной задачей.

    Еще одна проблема заключается в том, что те поставщики, у которых количество продуктов меньше максимального, будут тратить некоторое пространство впустую, поскольку дополнительные столбцы будут пустыми. Самый серьезный недостаток такого дизайна заключается в том, что он затрудняет выполнение многих задач, таких как сортировка или индексация таблицы по идентификатору или имени продукта.

    Всякий раз, когда вы видите повторяющиеся группы, внимательно изучите дизайн, чтобы разделить таблицу на две части. В приведенном выше примере лучше использовать две таблицы, одну для поставщиков и одну для продуктов, связанных идентификатором поставщика.

    Верх страницы

    Применение правил нормализации

    Вы можете применить правила нормализации данных (иногда называемые просто правилами нормализации) в качестве следующего шага в вашем проекте. Вы используете эти правила, чтобы увидеть, правильно ли структурированы ваши таблицы. Процесс применения правил к структуре вашей базы данных называется нормализацией базы данных или просто нормализацией.

    Нормализация наиболее полезна после того, как вы представили все элементы информации и пришли к предварительному плану. Идея состоит в том, чтобы помочь вам убедиться, что вы разделили свои информационные элементы на соответствующие таблицы. Чего нормализация не может сделать, так это гарантировать, что у вас есть все правильные элементы данных для начала.

    Вы применяете правила последовательно, на каждом шаге гарантируя, что ваш проект придет к одной из так называемых «нормальных форм». Широко распространены пять нормальных форм — от первой нормальной формы до пятой нормальной формы. Эта статья расширяет первые три, потому что это все, что требуется для большинства проектов баз данных.

    Первая нормальная форма

    Первая нормальная форма утверждает, что на каждом пересечении строки и столбца в таблице существует одно значение, а не список значений. Например, у вас не может быть поля с именем «Цена», в котором вы указываете более одной цены. Если вы думаете о каждом пересечении строк и столбцов как о ячейке, каждая ячейка может содержать только одно значение.

    Вторая нормальная форма

    Вторая нормальная форма требует, чтобы каждый неключевой столбец полностью зависел от всего первичного ключа, а не только от его части. Это правило применяется, когда у вас есть первичный ключ, состоящий из более чем одного столбца. Например, предположим, что у вас есть таблица, содержащая следующие столбцы, где идентификатор заказа и идентификатор продукта образуют первичный ключ:

    .

    Этот дизайн нарушает вторую нормальную форму, поскольку название продукта зависит от идентификатора продукта, но не от идентификатора заказа, поэтому оно не зависит от всего первичного ключа. Вы должны удалить Product Name из таблицы. Он принадлежит другой таблице (Продукты).

    Третья нормальная форма

    Третья нормальная форма требует, чтобы не только каждый неключевой столбец зависел от всего первичного ключа, но и чтобы неключевые столбцы были независимы друг от друга.

    Другими словами, каждый неключевой столбец должен зависеть от первичного ключа и только от первичного ключа. Например, предположим, что у вас есть таблица, содержащая следующие столбцы:

    Предположим, что Скидка зависит от рекомендуемой розничной цены (SRP). Эта таблица нарушает третью нормальную форму, поскольку неключевой столбец Discount зависит от другого неключевого столбца SRP. Независимость от столбцов означает, что вы должны иметь возможность изменять любой неключевой столбец, не затрагивая другие столбцы. Если вы измените значение в поле SRP, соответственно изменится и скидка, что нарушит это правило. В этом случае скидка должна быть перемещена в другую таблицу с ключом на SRP.

    Верх страницы

    Как спроектировать реляционную базу данных

    Хорошо спроектированная реляционная база данных обеспечит точность, согласованность и надежность данных вашей команды. Получите максимальную отдачу от своей базы данных с помощью этих четырех советов по проектированию.

    Возможно, вам нужно упростить работу вашей команды или убедиться, что несколько команд работают из единого источника достоверной информации. Возможно, вы отвечаете за качество данных вашего отдела или у вас есть другие обязанности, связанные с данными. Независимо от того, являетесь ли вы новичком в базах данных или опытным профессионалом в SQL, вы, скорее всего, получите пользу от освежения знаний в области проектирования реляционных баз данных.

    Как большие, так и малые организации используют реляционные базы данных для более эффективного хранения, управления и анализа важной информации для таких разных целей, как управление взаимоотношениями с клиентами, создание контента, планирование продуктов, исследования UX и многие другие.

    Однако не все реляционные базы данных одинаковы. Плохо спроектированная база данных может затруднить доступ к необходимой информации или поставить под угрозу точность ваших данных; Напротив, хорошо спроектированная база данных дает несколько преимуществ:

    • Вы можете избежать избыточных, повторяющихся и недействительных данных. Проблемные данные могут подорвать достоверность вашей базы данных, но вы можете спроектировать свою реляционную базу данных так, чтобы свести к минимуму риски, связанные с некачественными данными.
    • Вы можете избежать ситуаций, когда отсутствуют необходимые данные. Если вы можете заранее определить, какие типы данных наиболее важны для вашего рабочего процесса, вы можете структурировать свою базу данных таким образом, чтобы она обеспечивала правильный ввод данных или предупреждала пользователей, когда в записях отсутствуют важные данные.
    • Структуру базы данных легко модифицировать и поддерживать. Рабочие процессы редко остаются неизменными навсегда, поэтому в будущем вам, вероятно, придется внести некоторые коррективы в свою базовую реляционную модель данных. К счастью, хорошо спроектированная база данных гарантирует, что любые изменения, внесенные вами в поля одной таблицы, не повлияют отрицательно на другие таблицы.
    • Сами данные легко изменить. Точно так же хорошо спроектированная реляционная база данных гарантирует, что изменения, внесенные в значения в данном поле в одной таблице, не повлияют неблагоприятно на другие поля в этой таблице.
    • Легче найти нужную информацию. Благодаря согласованной логической структуре базы данных (избегающей дублирования полей и таблиц) гораздо проще выполнять запросы к базе данных.
    • Вы можете тратить меньше времени на исправление базы данных и больше времени на другие виды работы. Лучшая база данных та, о которой вам не нужно беспокоиться.

    Вы могли бы построить дом без предварительной доработки чертежей, но при этом вы можете получить дом сомнительной структурной целостности; Точно так же, если вы потратите некоторое время на тщательное обдумывание дизайна вашей реляционной базы данных перед ее реализацией, это может в долгосрочной перспективе избавить вас от многих проблем.

    Все это может показаться пугающим, если вы только начали изучать реляционные базы данных или даже если вы уже построили пару баз данных и столкнулись с некоторыми проблемами. В этом руководстве мы рассмотрим несколько принципов проектирования, которым вы можете следовать, чтобы создавать лучшие базы данных.

    Итак, ясно, что хороший дизайн базы данных важен при попытке построить базу данных, которая работает на вас. Но что на самом деле означает для хорошо спроектированной базы данных?

    Внимание для ботаников: первым, кто разработал абстрактную модель для управления базами данных, был Эдгар Фрэнк Кодд, английский ученый-компьютерщик, который присоединился к IBM в 1940-х годах.

    Хорошо спроектированная база данных обеспечивает целостность данных

    Целостность данных относится к общей точности, полноте и согласованности данных в вашей базе данных; хорошо спроектированная база данных поддерживает целостность данных за счет реализации процессов и стандартов, предложенных на этапе проектирования.

    Целостность данных включает в себя три конкретных технических аспекта структуры реляционной базы данных:

    • Целостность объекта (или целостность на уровне таблицы) гарантирует, что в таблице нет повторяющихся записей и что все значения первичных ключей таблицы уникальны. и не нулевой.
    • Целостность домена (или целостность на уровне поля) гарантирует, что цель каждого поля ясна и идентифицируема, а значения в каждом поле действительны, непротиворечивы и точны.
    • Ссылочная целостность (или целостность на уровне отношений) гарантирует, что отношения между парами таблиц являются надежными, так что записи в таблицах синхронизируются всякий раз, когда данные вводятся, обновляются или удаляются из любой таблицы.

    Хорошо спроектированная база данных обеспечивает соблюдение соответствующих бизнес-правил

    Каждая организация выполняет свою работу немного по-своему, и поэтому у каждой организации есть свои уникальные требования к своим данным, также известные как бизнес-правила . Если ваша компания размером с Microsoft, вы будете использовать базы данных не так, как если бы вы занимались небольшой видеооперацией.

    Тем не менее, даже среди видеокомпаний бизнес-правила редко бывают одинаковыми. Допустим, ваша видеокомпания требует, чтобы метки времени для видеофайлов отмечались в миллисекундах, и каждому видеоклиенту присваивается восьмизначный буквенно-цифровой код.

    В идеале база данных вашей команды должна обеспечивать соблюдение ваших уникальных бизнес-правил; это гарантирует, что данные, поступающие в вашу базу, будут точными и полезными. Например, если бы видеофайлы в приведенном выше примере записывались в секундах, а не в миллисекундах, а затем вводились в базу данных компании, это могло бы создать серьезную заминку в видеопроизводстве и беспорядок, который администратор базы данных должен был бы устранить позже.

    Если все это кажется незнакомым или ошеломляющим, не беспокойтесь — существует систематический процесс, которому вы можете следовать, чтобы убедиться, что ваша система управления реляционной базой данных (или РСУБД) следует хорошим принципам проектирования, хорошо подходит для нужд вашей организации и позволяет избежать распространенных ошибок.

    Шаг 1: определите цель и задачи

    Прежде чем приступить к разработке базы данных, стоит сделать шаг назад и ответить на очень важный вопрос: « Почему я создаю эту базу данных?» Вы создаете эту базу данных для управления бизнес-транзакциями? Хранить идентификаторы клиентов? Решить ту или иную организационную проблему? В любом случае стоит потратить время на определение предполагаемой цели создаваемой вами базы данных.

    Вы можете даже пожелать работать вместе с менеджерами, руководством и конечными пользователями, чтобы совместно написать заявление о миссии для вашей базы данных, например: «Цель базы данных Международного музея Мингей — поддерживать данные для нашей коллекции произведений искусства». или «В базе данных Zenbooth будут храниться все данные для нашего планирования производственных ресурсов».

    Кроме того, вы должны определить цели, которые будут стоять перед конечными пользователями базы данных: какие конкретные задачи должны выполнять конечные пользователи для выполнения своей работы? Разработка четкого списка целей, например «Всегда знать статус и местонахождение каждого произведения искусства в нашей коллекции» или «Ведение полной таблицы клиентов, в которой отображаются записи для каждого из наших клиентов». Это поможет вам определить подходящую структуру или схему базы данных для вашей информации, когда вы будете работать над этим процессом проектирования.

    Шаг 2: анализ требований к данным

    Прежде чем приступить к проектированию базы данных, вам необходимо проанализировать основные принципы и требования к данным вашей организации. Это может показаться пугающим, но все это означает, что вы будете оценивать, как ваша команда в настоящее время выполняет свою работу, и определять, какие данные наиболее важны для этой работы. Вы можете сделать это, внимательно изучив существующие процессы и опросив членов команды — как руководителей, так и конечных пользователей. Некоторые вопросы, которые следует задать при проведении исследования:

    • Как ваша организация в настоящее время собирает данные? Вы используете электронные таблицы? Бумажные шаблоны? Другая база данных? Какой бы из этих методов вы ни использовали, найдите наиболее полные образцы работ, какие сможете, и просмотрите их, чтобы найти как можно больше различных атрибутов. Например, ваш редакционный календарь в настоящее время может находиться в виде электронной таблицы и содержать столбцы «Автор», «Срок выполнения», «Редактор» и т. д.
    • Как ваша организация в настоящее время представляет данные ? Какие отчеты использует ваша организация? PDF-файлы? Скользящие колоды? Интернет страницы? Внимательно изучите любые типы презентаций, которые включают данные из ваших текущих методов сбора данных, и используйте их для выявления потенциальных полей.
    • Как члены вашей команды в настоящее время используют данные ? Лучший способ получить ответы на этот вопрос — поговорить с членами команды — как с руководством, так и с конечными пользователями — чтобы определить их текущие модели использования данных и тематические исследования, а также любые пробелы в текущей системе. Вы можете задать такие вопросы, как «Какие типы данных вы используете в настоящее время?» и попросите их просмотреть образцы, которые вы собрали. Важно отметить, что эти интервью также могут пролить свет на планы будущего роста организации, что даст вам представление о будущих требованиях к информации и о том, какой тип модели реляционной базы данных будет наиболее подходящим.

    Шаг 3: создайте список сущностей и список атрибутов

    После определения цели и задач вашей организации и анализа ваших требований к данным следующие шаги заключаются в извлечении списка из сущностей и списка атрибуты из собранного вами исследования. В контексте реляционных баз данных сущность — это объект, человек, место, событие или идея, например «клиенты», «продукты», «проекты» или «торговые представители». Атрибуты — это определяющие характеристики этих объектов, такие как «имя», «количество», «адрес», «номер телефона» или «жанр». Один из способов представить это так: сущности подобны существительным, а атрибуты подобны прилагательным, описывающим эти существительные.

    Начните с выбора сущностей из вашего исследования и внесения их в список. Эти объекты в конечном итоге послужат руководством, которое поможет вам определить ваши таблицы позже в процессе проектирования, но они также помогут вам определить атрибуты, необходимые для создания вашего списка полей. Например, если вы разрабатываете базу данных талантов для звукозаписывающей компании, ваш список объектов может выглядеть примерно так:

    • Исполнитель
    • Агент
    • Место проведения
    • Концерты
    • и т. д.

    Затем создайте отдельный список, содержащий соответствующие атрибуты для каждой из идентифицированных вами сущностей, а также любые зависимости, которые атрибуты могут иметь друг от друга. Эти атрибуты будут определять поля для ваших таблиц. Опять же, для примера базы данных талантов список ваших атрибутов может выглядеть примерно так:

    • Имя исполнителя
    • Номер телефона исполнителя
    • Имя агента
    • Номер телефона агента
    • Адрес электронной почты агента
    • Название места проведения
    • Адрес места проведения
    • Даты выступлений
    • и т. д.

    После того, как вы составили предварительный список атрибутов, вы должны просмотреть и уточнить их, чтобы убедиться, что они точно отражают информационные потребности вашей организации.

    Советы:

    • Если несколько атрибутов имеют разные имена, но фактически представляют одну и ту же концепцию , выполните их дедупликацию, чтобы остался только один. Например, если у вас есть оба «Product No.» и «Номер продукта» в вашем списке, вы должны удалить один из них.
    • Если несколько атрибутов имеют одинаковые имена, но на самом деле представляют различных концепций, переименуйте атрибуты, чтобы они были более конкретными. Например, вы можете переименовать два разных атрибута «Имя» в более конкретные «Имя исполнителя» и «Название места».

    После уточнения ваших списков было бы неплохо просмотреть эти списки, которые вы составили, вместе с некоторыми из опрошенных вами членов команды, чтобы убедиться, что вы учли все необходимые типы данных. Обязательно примите во внимание их отзывы и внесите необходимые коррективы в свои списки.

    Шаг 4: смоделируйте таблицы и поля

    После создания списков сущностей и атрибутов ваша задача — использовать эти списки для разработки структуры вашей реляционной базы данных. Ваш список сущностей станет отдельными таблицами в вашей базе, а список атрибутов станет полями для этих таблиц.

    Возьмите свои списки и назначьте каждый из атрибутов своим таблицам. Например, после того, как мы закончим назначать перечисленные атрибуты нашим новым таблицам, наша планируемая база данных управления талантами может выглядеть примерно так:0003

    Далее вам нужно выбрать соответствующее поле первичного ключа для каждой таблицы. Первичный ключ является основным компонентом обеспечения целостности данных, поскольку он однозначно идентифицирует каждую запись в таблице и используется для установления различных типов отношений между таблицами.

    Поле первичного ключа каждой таблицы должно соответствовать следующим критериям:

    • Оно должно содержать уникальные идентификаторы. Это предотвратит создание повторяющихся записей и избыточность в таблице.
    • Не может содержать пустых значений. Пустое значение — это отсутствие значения, поэтому нулевое значение нельзя использовать для идентификации записи.
    • Это значение не должно часто изменяться. В идеале значения первичного ключа должны оставаться относительно постоянными с течением времени и изменяться только в редких случаях.
    • Это не должно быть конфиденциальной личной информацией. Номера социального страхования, пароли, личная медицинская информация (PHI) и другие типы конфиденциальных данных могут быть уникальными, но их не следует использовать в качестве первичных ключей, так как это значительно усложняет хранение этих данных в одном месте.
    • В идеале имя таблицы используется как часть собственного имени. Хотя это и не является строго обязательным, наличие имени таблицы в имени поля первичного ключа может упростить идентификацию таблицы, из которой произошло поле первичного ключа. Например, «Имя сотрудника» будет очевидно идентифицировано как взятое из связанной таблицы «Сотрудники».

    Возможно, ваш предварительный список полей для данной таблицы не содержит ни одного поля, отвечающего всем этим критериям. Однако вы можете объединить два или более полей, чтобы создать отдельное уникальное поле, отвечающее всем этим критериям. Например, вы можете объединить значения в полях «Имя» и «Фамилия», чтобы создать третье вычисляемое поле «Полное имя», используя формулу конкатенации.

    В случае, если эта стратегия по-прежнему не работает для ваших целей, вы всегда можете создать новое поле, предназначенное специально для уникальных идентификационных кодов, которое будет служить полем вашего первичного ключа. Для этой цели часто создаются такие поля, как «Идентификатор продукта» или «Номер счета-фактуры».

    Вернемся к нашему примеру с базой данных по управлению талантами. Для таблицы «Исполнители» поле «Имя исполнителя» уже является довольно хорошим кандидатом на первичный ключ, поскольку маловероятно, что ваша звукозаписывающая компания подпишет двух исполнителей с одинаковым именем. Мы также можем выбрать «Название места» в качестве первичного ключа для таблицы «Места». Однако для других таблиц, вероятно, было бы лучше создать новые поля, объединяющие значения из существующих полей. В таблице «Агенты» мы можем создать новое поле — «Полное имя агента», которое объединяет значения полей «Имя агента» и «Фамилия агента».

    Для таблицы «Концерты» артист может выступать в одном и том же месте несколько раз, поэтому мы должны создать новое поле, которое задает уникальное имя для конкретной комбинации артиста в месте проведения в определенную дату. Потенциально вы можете объединить имя исполнителя, место проведения и дату, чтобы создать такие значения, как «2 Linkz в клубе Gotham City Metro Club, 13 февраля 2019 года», но это может стать долго и громоздко быстро. В качестве альтернативы вы можете попробовать создать новое поле — «Gig code» — с уникальными буквенно-цифровыми кодовыми значениями (например, «E0023»). Какой бы подход вы ни выбрали, зависит от вас и конкретных потребностей вашей команды.

    Готовы разработать реляционную базу данных в Airtable? Ознакомьтесь с нашим руководством по созданию базы, где вы можете использовать шаблон в качестве модели или начать с нуля.

    Бесплатная подписка на Airtable

    Как спроектировать базу данных

    Хороший дизайн базы данных необходим для создания масштабируемых высокопроизводительных приложений. База данных — это не что иное, как масса информации, хранящаяся в структуре, которая упрощает поиск.

    Хороший дизайн базы данных необходим для создания масштабируемых высокопроизводительных приложений. База данных — это не что иное, как масса информации, хранящаяся в структуре, которая упрощает поиск.

    Хороший дизайн базы данных необходим для создания масштабируемых высокопроизводительных приложений.

    База данных — это не что иное, как массив информации, хранящийся в структуре, облегчающей поиск.

    Все остальное просто детали. Если база данных работает хорошо, фрагменты связанной информации сохраняются автоматически, и необходимые детали могут быть извлечены.

    Должно быть просто извлекать новое значение из данных, компилируя их в отчеты и визуализации, а затем сохраняя эти факты для последующего использования.

    В этом простом определении существует бесконечное множество вариаций. Небольшие решения в начале имеют огромное кумулятивное влияние.

    Следуйте этим рекомендациям, чтобы избежать типичных ошибок, которые могут повлиять на программное обеспечение в будущем.

    Рекомендации по проектированию баз данных

    Прежде чем определять одно поле в проекте, просмотрите эти 10 рекомендаций по проектированию баз данных, которые могут значительно упростить процесс разработки.

    1. Учитывайте каждую точку зрения при планировании

    Не начинайте создание базы данных без участия спонсора проекта и других заинтересованных сторон.

    Получите консенсус относительно точных ожиданий и подумайте, насколько сложно будет обучить пользователей функциям поиска.

    2. Выберите тип базы данных

    Обычно это так же просто, как выбрать между SQL и NoSQL (хотя есть более конкретные типы, которые могут подходить для некоторых проектов).

    Базы данных SQL являются стандартом для структурированных данных, когда целостность данных крайне важна.

    Новые технологии, такие как машинное обучение или Интернет вещей (IoT), находят скорость, масштабируемость и гибкость требований базы данных NoSQL s более подходящими.

    Веб-аналитика, социальные сети и некоторые другие типы баз данных также работают намного лучше в рамках NoSQL.

    Примите решение как можно раньше.

    3. Нормализуйте свои данные

    В действительности большинство компаний сегодня работают в гибридном мире баз данных SQL и NoSQL, которые работают вместе в сложных механизмах.

    При такой сложной структуре крайне важно нормализовать данные для достижения минимальной избыточности.

    Удалите многозначные атрибуты и повторяющиеся атрибуты, затем приступайте к подразделам.

    4. Сделать структуры прозрачными

    База данных принадлежит ее будущим пользователям, а не ее создателю, поэтому проектируйте с учетом их интересов.

    Избегайте сокращений, сокращений и форм множественного числа. Используйте согласованные соглашения об именах.

    Не изобретайте велосипед и не усложняйте жизнь тем, кому в какой-то момент может понадобиться изменить базу данных, что обязательно произойдет.

    5. Определите ограничения для поддержания целостности данных

    Просмотрите полный набор опций для применения бизнес-правил, таких как внешний ключ, проверка, ненулевое значение и т.п.

    Приложение предотвратит попадание некоторых неверных данных, но не всех.

    6. Документируйте все

    Как бы это ни раздражало, документация так же важна, как первичные ключи.

    Позаботьтесь о том, чтобы задокументировать дизайн, схемы отношений объектов и триггеры для будущих пользователей.

    7. План увеличения времени резервного копирования в сборке

    Прежде чем слишком углубляться в проектирование, подумайте о том, что происходит во время стихийного бедствия или техногенной катастрофы.

    Запланируйте отказоустойчивую кластеризацию, автоматическое резервное копирование, репликацию и любые другие процедуры, необходимые для сохранения целостности структуры базы данных.

    Как говорится: «Подготовься и предотврати, а не исправляй и раскаивайся».

    8. Сохраняйте конфиденциальность на первом месте

    GDPR знаменует собой эпоху растущих проблем с конфиденциальностью.

    Шифруйте пароли и не назначайте администратора без обучения конфиденциальности и документально подтвержденной квалификации.

    Это правило может быть непростым из-за офисной политики, но в качестве хорошей практики безопасности база данных должна быть как можно более закрытой.

    Уязвимости влияют на целостность данных, что влияет на все остальное на предприятии.

    9. Оптимизация для скорости

    Создайте индексы для запросов, которые будут использоваться регулярно. Используйте анализатор базы данных, чтобы определить, нужен ли индекс или кластеризованный индекс.

    Рассмотрите возможность использования таких инструментов, как Elastisearch, для ускорения поиска.

    10. Держите базу данных на собственном сервере

    Поместите базу данных на другой сервер, а не на веб-сервер, чтобы снизить нагрузку на ЦП.

    Помимо освобождения вычислительных ресурсов, это также помогает защитить базу данных от неавторизованных пользователей.

    Заключительные мысли

    Помните, что структуры баз данных не высечены на камне.

    Текущие рабочие процессы базы данных можно уточнять и направлять или даже разбивать, когда это имеет смысл.

    Точно так же, как со временем меняются бизнес-директивы, база данных также нуждается в тонкой настройке, чтобы оставаться в соответствии с текущими целями компании.

    Слишком часто администраторы увязают в размышлениях о том, как работает база данных в данный момент, не задумываясь о том, что она способна делать в будущем.

    Вместо того, чтобы думать «Это так не работает», начните с точки зрения «Какова конечная цель и как мы можем ее достичь?»

    Возникли проблемы с выбором между стилями базы данных?

    Поговорите с одним из разработчиков Concepta , чтобы обсудить ваши уникальные требования и то, как заложить наилучшую основу для вашего следующего программного проекта!

    Как разработать базу данных?

    Как разработать базу данных?

    Полное объяснение процесса базы данных проекта.

    Специалисту по разработке программного обеспечения важно знать, как спроектировать базу данных. Основной целью процесса проектирования базы данных является создание надежной базы данных.

    Проектирование базы данных — это важный этап жизненного цикла разработки программного обеспечения (SDLC), который включает в себя различные операции с базой данных. Операции с базой данных включают в себя хранение, извлечение и манипулирование данными.

    Проектирование базы данных — это работа специалиста, требующая некоторых специальных навыков в плане планирования базы данных, а затем фактического создания базы данных с использованием определенной системы управления базами данных (СУБД).

    Этапы проектирования базы данных

    Весь процесс проектирования реляционной базы данных состоит из следующих этапов:

    1. Определение цели и назначения базы данных.
    2. Определите требования к данным для различных заинтересованных сторон.
    3. Определить объекты базы данных в терминах таблиц.
    4. Определите и определите атрибуты для каждого объекта базы данных.
    5. Укажите ограничения первичного и внешнего ключей для каждой реляционной таблицы.
    6. Определить и установить связь между таблицами.
    7. Примените правила нормализации базы данных для нормализации каждой таблицы.
    8. Создать и построить базу данных с системой управления базами данных (СУБД).
    9. Проверка базы данных на точность, согласованность и целостность данных.

    В этом уроке вы узнаете, как шаг за шагом проектировать базу данных. Этот учебник поможет вам понять процесс проектирования и разработки базы данных, различные действия, связанные с планированием базы данных и этапами разработки базы данных.

    Начнем с понимания важности навыков проектирования баз данных для специалистов по программному обеспечению.

    Как разработать базу данных?

    Содержание

    • 909:50 Введение в проектирование баз данных.