Основные сведения о создании баз данных
База данных с правильной структурой обеспечит вам доступ к актуальным и точным сведениям. Поскольку правильная структура важна для выполнения поставленных задач при работе с базой данных, имеет смысл изучить принципы создания баз данных. Это поможет вам создать базу данных, отвечающую вашим потребностям и позволяющую быстро вносить в нее изменения.
В этой статье приведены рекомендации по планированию базы данных для настольного компьютера. Вы узнаете, как выбирать необходимые сведения, как распределять данные по таблицам и столбцам и как таблицы связаны друг с другом. Прежде чем создавать свою первую базу данных, прочитайте эту статью.
Важно: Access возможности разработки, которые можно создавать приложения баз данных для Интернета. Многие аспекты проектирования отличаются при проектировании веб-страниц. В этой статье не обсуждается проектирование веб-баз данных. Дополнительные сведения см.
В этой статье
-
Некоторые термины, связанные с базами данных
-
Что такое правильная структура базы данных?
-
Процесс проектирования
-
Определение назначения базы данных
-
Поиск и упорядочение необходимых сведений
-
Распределение данных по таблицам
-
Преобразование элементов данных в столбцы
-
Задание первичных ключей
-
Создание связей между таблицами
-
Усовершенствование структуры
-
Применение правил нормализации
Некоторые термины, связанные с базами данных
В Access данные упорядочиваются в таблицах, которые представляют собой списки строк и столбцов, напоминающие бухгалтерский блокнот или электронную таблицу. В простой базе данных может быть всего одна таблица. Для большинства баз данных их потребуется несколько. Например, в одной таблице можно хранить сведения о товарах, в другой — о заказах, а в третьей — о клиентах.
Каждую строку правильнее называть записью, а каждый столбец — полем. Запись — это эффективный и согласованный способ объединения сведений о чем-либо. Поле — это отдельный элемент сведений (элементы такого типа есть в каждой записи). Например, в таблице «Товары» каждая строка или запись может содержать сведения об одном товаре. Каждые столбец или поле содержат сведения определенного типа об этом товаре, например название или цену.
К началу страницы
Что такое правильная структура базы данных?
Правильная структура базы данных подразумевает:
-
распределение сведений по тематическим таблицам для уменьшения количества повторяющихся данных;
-
предоставление приложению Access данных, необходимых для объединения сведений в таблицах при необходимости;
-
обеспечение точности и целостности сведений;
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 позволяет экспортировать таблицу или другой объект базы данных в различных форматах, таких как внешний файл, база данных dBase или Paradox, файл Lotus 1–2–3, рабочая книга Excel 2007, файл Word 2007 RTF, текстовый файл, документ XML
Перемещение данных из базы данных 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 | Удалить сведения о классах кораблей в таблице Классы , у которых число орудий равно 1 | 2 | ||
11 | Удалить из таблицы Сражения битву, которая произошла 12. 12.1924 | 2 | ||
12 | Удалить сведения о корабле, который был спущен на воду в 1872 году | 2 | ||
13 | Измените результат битвы, в которой участвовал корабль Киришима, на «Поврежден» | 3 | ||
14 | В таблице Корабли измените название корабля «Мирури» на «Мисури» | 3 | ||
15 | Установите число орудий для класса «Мото» равный 3 | 3 | ||
16 | По Вашингтонскому международному договору от начала 1922 г. запрещалось строить линейные корабли водоизмещением более 35 тыс.тонн. Укажите корабли, нарушившие этот договор (учитывать только корабли с известным годом спуска на воду). Вывести названия кораблей и водоизмещение Показать решение:
| 4 | ||
17 | Укажите название корабля, участвовавшего в Битве А | 4 | ||
18 | Определить названия всех кораблей из таблицы Корабли , которые удовлетворяют, по крайней мере, комбинации любых четырех критериев из следующего списка: число орудий = 8, калибр = 15, водоизмещение = 32000, тип = bb, год спуска = 1915, класс = Конго, страна = СШАПоказать решение:
| 4 |
Список заданий для базы данных «Компьютерный магазин»
Структура и создание базы данных здесь.
1. Найти номер, скорость и размер жесткого диска для компьютера стоимостью менее 30000. Вывести с псевдонимами: Модель, Процессор, Винчестер
2. Укажите производителя и скорость тех компьютеров, которые имеют жесткий диск объемом не менее 500Гб
3. Выведите номера, типы и цены всех продуктов (любого типа), выпущенных производителем Россия.
Использовать: Innter Join, Union
4. Выведите производителя, выпускающего компьютеры, но не ноутбуки.
Использовать подзапрос
5. Выведите производителей компьютеров с процессором не менее 2000МГц. Вывести: Производитель.
Можно использовать подзапрос (IN)
6. Выведите ноутбуки, скорость которых меньше скорости любого из компьютеров. Вывести: Тип, Номер, Скорость
7. Выведите производителей самых дешевых цветных принтеров
Итоговое индивидуальное задание: проектирование и разработка БД
- Разработать проект базы данных по какой-либо теме (выбрать самостоятельно):
- База данных включает не менее двух таблиц.
- Организовать связи между таблицами и отобразить их на схеме.
- Используя интерфейс 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»>Код продукта3
Имя3
Имя2
Здесь каждый продукт представляет собой повторяющуюся группу столбцов, которая отличается от других только добавлением номера в конце имени столбца. Когда вы видите столбцы, пронумерованные таким образом, вам следует пересмотреть свой дизайн.
У такой конструкции есть несколько недостатков. Во-первых, это заставляет вас установить верхний предел количества продуктов. Как только вы превысите этот предел, вы должны добавить новую группу столбцов в структуру таблицы, что является основной административной задачей.
Еще одна проблема заключается в том, что те поставщики, у которых количество продуктов меньше максимального, будут тратить некоторое пространство впустую, поскольку дополнительные столбцы будут пустыми. Самый серьезный недостаток такого дизайна заключается в том, что он затрудняет выполнение многих задач, таких как сортировка или индексация таблицы по идентификатору или имени продукта.
Всякий раз, когда вы видите повторяющиеся группы, внимательно изучите дизайн, чтобы разделить таблицу на две части. В приведенном выше примере лучше использовать две таблицы, одну для поставщиков и одну для продуктов, связанных идентификатором поставщика.
Верх страницы
Применение правил нормализации
Вы можете применить правила нормализации данных (иногда называемые просто правилами нормализации) в качестве следующего шага в вашем проекте. Вы используете эти правила, чтобы увидеть, правильно ли структурированы ваши таблицы. Процесс применения правил к структуре вашей базы данных называется нормализацией базы данных или просто нормализацией.
Нормализация наиболее полезна после того, как вы представили все элементы информации и пришли к предварительному плану. Идея состоит в том, чтобы помочь вам убедиться, что вы разделили свои информационные элементы на соответствующие таблицы. Чего нормализация не может сделать, так это гарантировать, что у вас есть все правильные элементы данных для начала.
Вы применяете правила последовательно, на каждом шаге гарантируя, что ваш проект придет к одной из так называемых «нормальных форм». Широко распространены пять нормальных форм — от первой нормальной формы до пятой нормальной формы. Эта статья расширяет первые три, потому что это все, что требуется для большинства проектов баз данных.
Первая нормальная форма
Первая нормальная форма утверждает, что на каждом пересечении строки и столбца в таблице существует одно значение, а не список значений. Например, у вас не может быть поля с именем «Цена», в котором вы указываете более одной цены. Если вы думаете о каждом пересечении строк и столбцов как о ячейке, каждая ячейка может содержать только одно значение.
Вторая нормальная форма
Вторая нормальная форма требует, чтобы каждый неключевой столбец полностью зависел от всего первичного ключа, а не только от его части. Это правило применяется, когда у вас есть первичный ключ, состоящий из более чем одного столбца. Например, предположим, что у вас есть таблица, содержащая следующие столбцы, где идентификатор заказа и идентификатор продукта образуют первичный ключ:
.Этот дизайн нарушает вторую нормальную форму, поскольку название продукта зависит от идентификатора продукта, но не от идентификатора заказа, поэтому оно не зависит от всего первичного ключа. Вы должны удалить 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), который включает в себя различные операции с базой данных. Операции с базой данных включают в себя хранение, извлечение и манипулирование данными.
Проектирование базы данных — это работа специалиста, требующая некоторых специальных навыков в плане планирования базы данных, а затем фактического создания базы данных с использованием определенной системы управления базами данных (СУБД).
Этапы проектирования базы данных
Весь процесс проектирования реляционной базы данных состоит из следующих этапов:
- Определение цели и назначения базы данных.
- Определите требования к данным для различных заинтересованных сторон.
- Определить объекты базы данных в терминах таблиц.
- Определите и определите атрибуты для каждого объекта базы данных.
- Укажите ограничения первичного и внешнего ключей для каждой реляционной таблицы.
- Определить и установить связь между таблицами.
- Примените правила нормализации базы данных для нормализации каждой таблицы.
- Создать и построить базу данных с системой управления базами данных (СУБД).
- Проверка базы данных на точность, согласованность и целостность данных.
В этом уроке вы узнаете, как шаг за шагом проектировать базу данных. Этот учебник поможет вам понять процесс проектирования и разработки базы данных, различные действия, связанные с планированием базы данных и этапами разработки базы данных.
Начнем с понимания важности навыков проектирования баз данных для специалистов по программному обеспечению.
Как разработать базу данных?
Содержание
- 909:50 Введение в проектирование баз данных.
- Важность навыков проектирования баз данных.
- Почему дизайн базы данных важен?
- Объяснение процесса проектирования базы данных.
- Процесс планирования базы данных.
- Процесс разработки базы данных.
Часто задаваемые вопросы по проектированию базы данных
Почему важны навыки проектирования баз данных?
Индустрия информационных технологий (ИТ) — это многомиллиардная отрасль. ИТ-индустрия проектирует и разрабатывает программные приложения, которые имеют решающее значение для бизнес-корпораций.
Программное обеспечение теперь незаменимо для управления диверсифицированными бизнес-операциями. Эти программные приложения предоставляют необходимые инструменты для ведения бизнеса в Интернете.
Каждый год ИТ-индустрия нанимает большое количество специалистов по разработке программного обеспечения и программистов для работы над программными проектами.
Навыки проектирования баз данных
Работа по проектированию баз данных
Большинство программных приложений связаны с операциями с базами данных, поэтому навыки проектирования баз данных являются одними из самых востребованных навыков на рынке труда.
Специалисты по программному обеспечению, обладающие навыками проектирования и разработки баз данных, входят в число оплачиваемых специалистов в различных отраслях.
Что такое база данных в СУБД?
Как разработать базу данных?
Почему проектирование базы данных является важным шагом в SDLC?
Базы данных являются неотъемлемой частью большинства программных приложений. Производительность программного обеспечения также зависит от производительности базы данных.
Хорошо спланированная база данных необходима, чтобы гарантировать, что база данных должна поддерживать требования пользователя в отношении данных, которые должны быть сохранены, и точности данных.
С другой стороны, любой сбой в производительности базы данных может отрицательно сказаться на производительности программного обеспечения, что может привести к значительному увеличению стоимости программного проекта.
Пошаговое объяснение процесса проектирования базы данных
Весь процесс проектирования и разработки базы данных можно условно разделить на два этапа. Эти два этапа — этап планирования базы данных и этап разработки базы данных.
Первым этапом процесса проектирования базы данных является этап планирования базы данных. Этап планирования включает в себя такие действия, как понимание требований к данным и создание моделей данных.
Второй этап процесса проектирования базы данных включает в себя фактическое построение базы данных с использованием определенной системы управления базами данных (СУБД).
Проектирование базы данных — SDLC
Проектирование баз данных — SDLC
Как разработать базу данных?
Процесс планирования проектирования базы данных
Планирование базы данных является важным шагом. Хорошо спланированная структура базы данных имеет решающее значение для создания надежной базы данных, отвечающей требованиям пользовательских данных. Деятельность по планированию включает:
- Шаг 1. Определение целей базы данных.
- Шаг 2 — Команда разработчиков базы данных и заинтересованные стороны.
- Шаг 3 — Отображение бизнес-процессов, правил и политик.
- Шаг 4. Определение требований к пользовательским данным.
- Шаг 5 — Создание моделей данных.
- Шаг 6 — Создание концептуальной модели данных.
- Шаг 7 — Создание логической модели данных.
- Шаг 8 — Нормализация базы данных.
- Шаг 9. Определение спецификаций требований к базе данных. .
Планирование БД — Шаг 1
Определение целей и назначения базы данных
Первым шагом в процессе проектирования базы данных является определение целей и назначения базы данных. Цели и назначение базы данных помогают разработчикам баз данных четко определить ее назначение.
В зависимости от масштаба проекта разработчики базы данных могут описать детали. Например, для небольшой базы данных область может быть ограничена записью конкретной бизнес-информации.
Однако задачи и назначение базы данных для приложения уровня предприятия может быть подробным документом, который может функционировать как важный документ для группы разработчиков базы данных.
Как разработать базу данных?
Планирование БД — Этап 2
Группа разработчиков базы данных и другие заинтересованные стороны
В зависимости от масштаба проекта работа по проектированию базы данных может выполняться разработчиком программного обеспечения, имеющим опыт проектирования и разработки баз данных.
Однако для проекта разработки программного обеспечения корпоративного уровня в группу проектирования и разработки базы данных обычно входят специалисты, обладающие специальными навыками, необходимыми для проектирования базы данных.
Жизненный цикл разработки базы данных
Группа разработчиков базы данных обычно состоит из группы бизнес-аналитиков, экспертов в предметной области, разработчиков программного обеспечения, программистов баз данных и других заинтересованных лиц.
Другими заинтересованными сторонами могут быть сотрудники, назначенные компанией-клиентом. Эти сотрудники клиента предоставляют важную информацию команде разработчиков базы данных.
Как разработать базу данных?
Планирование БД — Шаг 3
Сопоставление бизнес-процессов, правил и политик
Когда программное приложение разработано для конкретной организации, сопоставление бизнес-процессов, политик и бизнес-правил определяет требования к данным для различных заинтересованных сторон .
Команда разработчиков базы данных активно взаимодействует со всеми заинтересованными сторонами, чтобы понять бизнес-операции организации, процессы, структуру политики и бизнес-правила.
Это важная часть информации для группы разработчиков базы данных, чтобы понять поток данных и информационные требования, которые должна поддерживать база данных.
База данных должна точно хранить данные в соответствии с требованиями и включать правила целостности для обеспечения точности, согласованности и безопасности данных, которые будут храниться в базе данных.
Планирование БД — Шаг 4
Определение требований к пользовательским данным
Проект программного приложения — это командная работа, и группа разработчиков базы данных является важным компонентом группы реализации проекта.
Группа разработчиков базы данных систематически и методично следит за процессом проектирования базы данных, чтобы отобразить и зафиксировать все важные детали, необходимые для проектирования и разработки базы данных.
Процесс взаимодействия со всеми заинтересованными сторонами и сбора необходимой информации называется выявлением требований. Выявление требований является важным процессом, который помогает команде разработчиков окончательно определить требования пользователя.
Выявление требований к дизайну базы данных
Спецификации требований пользователя (URS) — это наиболее важная часть документов, определяющая объем программного проекта.
С точки зрения проектирования базы данных URS также определяет объем базы данных и требования к пользовательским данным, которые должно поддерживать программное приложение.
Служба URS также предоставляет критически важные исходные данные для проектировщиков баз данных, чтобы они могли внедрить и разработать базу данных, отвечающую требованиям пользователей в отношении данных, безопасности и функциональности.
Как разработать базу данных?
Планирование БД — Шаг 5
Создание моделей данных
Модели данных — это просто инструменты, используемые разработчиками баз данных для визуализации и передачи конструктивных особенностей базы данных на различных этапах процесса проектирования и разработки базы данных.
Эти модели данных впоследствии используются разработчиками баз данных в качестве чертежей на различных этапах проектирования и разработки базы данных.
Модели базы данных позволяют очень легко визуализировать и сообщать о различных конструктивных особенностях базы данных с помощью диаграмм.
Типы модели данных
Типы модели данных
Разработчики баз данных обычно создают три типа моделей данных с разными уровнями абстракции. Каждая из этих моделей данных подчеркивает различные особенности дизайна базы данных.
Три модели данных включают концептуальную модель данных, логическую модель данных и физическую модель данных.
Как разработать базу данных?
Планирование БД — Шаг 6
Построение концептуальной модели данных
Концептуальная модель данных представляет собой простую диаграмму, которая только выделяет различные существующие объекты базы данных и отношения между этими объектами.
Концептуальная модель данных — это первая модель, созданная для учета требований к пользовательским данным на начальном этапе процесса проектирования базы данных.
Модель концептуальных данных
Модель концептуальных данных
Диаграмма отношений сущностей ( ERD ) является примером концептуальной модели данных, созданной в процессе проектирования базы данных.
Концептуальная база данных описывает представление базы данных на уровне конечного пользователя с помощью простой диаграммы, которая не зависит от СУБД.
Как разработать базу данных?
Планирование БД — Шаг 7
Построение логической модели данных
Следующим шагом в проектировании базы данных является построение логической модели данных. Логическая модель данных создается путем расширения концептуальной модели данных некоторыми дополнительными деталями.
Логическая модель данных предоставляет подробные сведения о таблицах. Каждая таблица представляет объект базы данных, который необходимо представить в базе данных.
Логическая структура базы данных представлена количеством взаимосвязанных таблиц. Связь между этими таблицами устанавливается путем определения ключей базы данных.
Логическая модель данных
Логическая модель данных
Логическая модель данных также указывает на отношения, существующие между различными таблицами. Связь между таблицами указывается путем определения полей первичного ключа и внешнего ключа для каждой таблицы.
Логическая модель данных не зависит от СУБД. Это означает, что он не содержит каких-либо специфичных для СУБД подробностей. И поэтому логическая модель данных может быть реализована на любой СУБД.
Как разработать базу данных?
Планирование БД — Шаг 8
Нормализация базы данных
Основная цель нормализации базы данных — свести к минимуму наличие повторяющихся данных в таблице. Дублирование данных является основной причиной аномалий базы данных.
Аномалии базы данных могут привести к несогласованному состоянию базы данных, что приведет к неточным результатам различных операций с базой данных.
E F Модель отношений Кодда
Как разработать базу данных?
Что такое нормализация базы данных?
Нормализация базы данных — это процесс разложения больших таблиц на меньшие, но более содержательные таблицы.
Связи между таблицами создаются путем определения первичного ключа и внешнего ключа для каждой таблицы. В реляционной базе данных логическая структура базы данных состоит из взаимосвязанных таблиц.
Подробнее
Что такое реляционная база данных?
Как нормализовать базу данных?
Планирование БД — Шаг 9
Определение спецификаций требований к базе данных
В зависимости от масштаба проекта и сложности проектирования базы данных проектная группа должна завершить и определить конструктивные особенности и спецификации предлагаемого база данных.
База данных после разработки должна поддерживать требования к пользовательским данным и функциональные возможности программного обеспечения в соответствии с документом USR.
Как разработать базу данных?
Процесс разработки базы данных
После того, как этап планирования базы данных завершен во всех отношениях, следующим шагом является начало фактической разработки базы данных.
Этап планирования базы данных включает все действия, необходимые для определения спецификаций требований к базе данных и создания двух моделей данных.
Как указывалось ранее, проектировщики баз данных создают концептуальные и логические модели данных на этапе планирования базы данных.
Разработка базы данных начинается с выбора подходящей системы управления базами данных (СУБД) и создания физической модели данных.
- Шаг 1 — Выбор СУБД для построения базы данных.
- Шаг 2 — Создание физической модели данных.
- Шаг 3 — Разработка базы данных с помощью СУБД.
- Шаг 4 — Тестирование и проверка базы данных.
- Шаг 5 — Документация базы данных.
Разработка БД – Шаг 1
Выбор СУБД для построения базы данных
Первым шагом на этапе разработки базы данных является выбор подходящей системы управления базами данных (СУБД).
Выбор СУБД зависит от типа программного приложения, архитектуры системы базы данных и функциональности базы данных.
Система управления базами данных
Система управления базами данных
СУБД является жизненно важным компонентом любой системы баз данных. Прикладное программное обеспечение взаимодействует с СУБД с помощью команд SQL (язык структурированных запросов).
СУБД, в свою очередь, фактически взаимодействует с базой данных и выполняет различные операции с базой данных. После выбора СУБД следующим шагом будет создание физической модели данных.
Как разработать базу данных?
Система управления реляционными базами данных
Разработка БД — Шаг 2
Создание физической модели данных
После выбора СУБД, которая будет использоваться для разработки базы данных, следующим шагом в разработке базы данных является создание физической модели данных.
Физическая модель данных создается путем расширения логической модели данных некоторыми дополнительными деталями, характерными для СУБД.
Физическая модель данных зависит от СУБД, поскольку она содержит детали, которые могут быть реализованы в конкретной СУБД.
Модель физических данных
Разработка БД — Шаг 3
Разработка базы данных с помощью СУБД
На этом этапе все детали проекта и чертежи готовы для фактического построения базы данных.
Некоторые из наиболее часто используемых систем управления реляционными базами данных (RDBMS) включают MySQL, Oracle, MS SQL Server, Mango DB, и в мире баз данных доступно множество других СУБД.
Система управления реляционными базами данных
Система управления реляционными базами данных
Работа по разработке базы данных начинается с создания таблиц. Отношения между таблицами определяются с использованием первичных и внешних ключей базы данных для каждой таблицы. На этом этапе также могут быть определены ограничения базы данных.
Некоторые СУБД предлагают удобный графический интерфейс, который упрощает создание таблиц и последующее определение отношений.
Как разработать базу данных?
Разработка БД – Этап 4
Тестирование и проверка базы данных
Тестирование базы данных является важным этапом, обеспечивающим точность, непротиворечивость и целостность данных, хранящихся в базе данных.
После создания базы данных следующим шагом будет фактический тестовый запуск базы данных с демонстрационными данными и проверка результатов.
База данных после разработки подвергается тщательному тестированию и проверке, включая функциональность различных операций с базой данных.
Тестирование ПО
Валидация ПО
Разработка БД — Шаг 5
Документация по базе данных для дальнейшего использования
Документация по базе данных является важным справочным руководством в любом жизненном цикле разработки программного обеспечения (SDLC).
Группа управления проектом также создает и поддерживает необходимую документацию, связанную с разработкой базы данных.
Эта документация является важным справочным руководством для группы разработчиков, позволяющим вносить любые изменения либо во внешнее программное приложение, либо в структуру базы данных, либо в дополнительные функции.
Как разработать базу данных?
Часто задаваемые вопросы по проектированию базы данных
Часто задаваемые вопросы
Каковы этапы проектирования базы данных?
Процесс проектирования состоит из следующих шагов:
- Определите цель и назначение базы данных.
- Определите требования к данным для различных заинтересованных сторон.
- Определить объекты базы данных в терминах таблиц.
- Идентифицировать и определить атрибуты для каждого объекта базы данных.
- Укажите ограничения первичного и внешнего ключей для каждой реляционной таблицы.
- Определить и установить связь между таблицами.
- Примените правила нормализации базы данных для нормализации каждой таблицы.
- Создать и построить базу данных с системой управления базами данных (СУБД).
- Проверка базы данных на точность, согласованность и целостность данных.
Каковы три этапа проектирования базы данных?
Весь процесс проектирования базы данных можно разделить на три этапа:
- Концептуальное проектирование базы данных.
- Логический дизайн базы данных.
- Физический дизайн базы данных.
Что такое моделирование данных при проектировании баз данных?
Модели данных — это просто инструменты, используемые разработчиками баз данных для визуализации и передачи конструктивных особенностей базы данных на различных этапах процесса проектирования и разработки базы данных.
Эти модели данных впоследствии используются разработчиками баз данных в качестве чертежей на различных этапах проектирования и разработки базы данных.
Модель базы данных позволяет очень легко визуализировать и сообщать о различных конструктивных особенностях базы данных с помощью диаграмм.
Что такое жизненный цикл проектирования базы данных?
Жизненный цикл проектирования базы данных (DDLS) состоит из различных шагов, инициированных группой проектирования и разработки базы данных во время планирования, проектирования и разработки базы данных.
Жизненный цикл проектирования базы данных состоит из следующих этапов:
- Планирование базы данных.
- Анализ требований к данным.
- Дизайн базы данных.
- Реализация базы данных.
- Тестирование базы данных.
- Обслуживание базы данных.
После завершения этапа разработки базы данных следующим шагом является проверка базы данных на точность, согласованность и целостность данных. Последним шагом в DDLC является обслуживание базы данных.
Жизненный цикл разработки базы данных, DDLC
Что такое схема базы данных?
Термин схема в основном означает описание. Проще говоря, схема базы данных — это описание базы данных.
Однако в мире баз данных схема базы данных определяется как логическое представление всей базы данных. Схема базы данных определяется логической моделью данных, которая состоит из сущностей базы данных, представленных таблицами базы данных, и отношениями между таблицами.
Типы схемы базы данных также включают логическую схему, физическую схему и схему представления. Однако логическая и физическая схемы являются наиболее распространенными терминами, используемыми в контексте проектирования баз данных.
Схема базы данных представляет собой логическую конфигурацию всей или части реляционной базы данных. Схема базы данных также означает как визуальное представление, так и ограничения целостности базы данных, определяемые набором формул.
Эти формулы выражаются на языке определения данных DDL, таком как SQL. SQL означает язык структурированных запросов. Схема базы данных указывает, как различные объекты базы данных связаны друг с другом, включая таблицы, представления, хранимые процедуры и другие функции структуры базы данных.
Присоединяйтесь к Best Seller
Онлайн-курс по проектированию баз данных
Шаг за шагом изучите проектирование и разработку баз данных. Это наиболее полный и уникальный онлайн-курс «Проектирование баз данных ».
Этот курс даст вам глубокое понимание наиболее важных фундаментальных концепций проектирования баз данных с помощью проекта MySQL.
Получите скидку 90% на этот курс
Присоединяйтесь к бестселлеру
Онлайн-курс по компьютерным наукам
Это наиболее полный и уникальный онлайн-курс C по компьютерным наукам и основам программирования , который даст вам глубокое понимание наиболее важных фундаментальных концепций информатики и программирования.
Получите скидку 90% на этот курс
Другие связанные темы
Что такое база данных?
РСУБД MySQL
Что такое нормализация базы данных?
Система управления реляционными базами данных
Как спроектировать базу данных SQL
Первый шаг к проектированию любой базы данных на SQL — определить, что следует включать, а что нет. Следующие шаги включают определение того, как включенные элементы соотносятся друг с другом, а затем соответствующую настройку таблиц.Чтобы спроектировать базу данных на SQL, выполните следующие основные шаги:
Решите, какие объекты вы хотите включить в базу данных.
Определите, какие из этих объектов должны быть таблицами, а какие — столбцами в этих таблицах.
Определите таблицы на основе того, как вам нужно организовать объекты.
При желании вы можете назначить столбец таблицы или комбинацию столбцов в качестве ключа.
Шаг 1: Определение объектов
Первым шагом в проектировании базы данных является определение того, какие аспекты системы достаточно важны для включения в модель. Относитесь к каждому аспекту как к объекту и составьте список всех объектов, о которых вы только можете подумать. На этом этапе не пытайтесь решить, как эти объекты связаны друг с другом. Просто попробуйте перечислить их все.Когда у вас будет достаточно полный набор объектов, перейдите к следующему шагу: определите, как эти объекты связаны друг с другом. Некоторые из объектов являются основными объектами, которые имеют решающее значение для получения желаемых результатов. Другие объекты являются вспомогательными по отношению к этим основным объектам. В конце концов вы можете решить, что некоторые объекты вообще не принадлежат модели.
Шаг 2. Определение таблиц и столбцов
Основные объекты транслируются в таблицы базы данных. Каждая крупная сущность имеет набор из атрибутов, — столбцов таблицы. Например, во многих бизнес-базах данных есть таблица CUSTOMER, в которой хранятся имена клиентов, адреса и другая постоянная информация. Каждый атрибут клиента — например, имя, улица, город, штат, почтовый индекс, номер телефона и адрес электронной почты — становится столбцом (и заголовком столбца) в таблице CUSTOMER.Если вы надеетесь найти набор правил, которые помогут вам определить, какие объекты должны быть таблицами и какие атрибуты в системе принадлежат каким таблицам, подумайте еще раз: у вас могут быть некоторые причины для присвоения определенного атрибута одной таблице. и другие причины присвоения того же атрибута другой таблице. Вы должны основывать свое суждение на двух целях:
При принятии решения о том, как структурировать таблицы базы данных, привлекайте будущих пользователей базы данных, а также людей, которые будут принимать решения на основе информации из базы данных. Если вы придумаете то, что вы считаете разумной структурой, но она не согласуется с тем, как люди будут использовать информацию, ваша система будет в лучшем случае разочаровывать — и даже может выдавать неверную информацию, что еще хуже. .
Взгляните на пример. Предположим, вы только что создали VetLab, лабораторию клинической микробиологии, которая исследует биологические образцы, присылаемые ветеринарами. Вы хотите отслеживать несколько вещей, в том числе следующие: Каждая из этих сущностей имеет связанные атрибуты. У каждого клиента есть имя, адрес и другая контактная информация. Каждый тест имеет название и стандартный заряд. У каждого сотрудника есть контактная информация, а также классификация работы и ставка заработной платы. Для каждого заказа нужно знать, кто его заказал, когда он был заказан и какой тест был заказан. Для каждого результата теста вам необходимо знать результат теста, были ли результаты предварительными или окончательными, а также номер заказа теста.Шаг 3: Определите таблицы
Теперь вы хотите определить таблицу для каждой сущности и столбец для каждого атрибута.Стол | Столбцы |
---|---|
КЛИЕНТ | Имя клиента |
Адрес 1 | |
Адрес 2 | |
Город | |
Штат | |
Почтовый индекс | |
Телефон | |
Факс | |
Контактное лицо | |
ИСПЫТАНИЯ | Имя теста |
Стандартная заправка | |
СЛУЖАЩИЙ | Имя сотрудника |
Адрес 1 | |
Адрес 2 | |
Город | |
Штат | |
Почтовый индекс | |
Домашний телефон | |
Внутренний номер офиса | |
Дата найма | |
Классификация должностей | |
Почасовая оплата/Зарплата/Комиссия | |
ЗАКАЗЫ | Номер для заказа |
Имя клиента | |
Тестовый заказ | |
Ответственный продавец | |
Дата заказа | |
РЕЗУЛЬТАТЫ | Номер результата |
Номер для заказа | |
Результат | |
Дата сообщения | |
Предварительный/Окончательный |
СОЗДАТЬ ТАБЛИЦУ КЛИЕНТ ( Имя клиента CHAR (30) НЕ NULL, Адрес1 СИМВ (30), Адрес2 СИМВОЛА (30), Город ЧАР (25), Государственный ЧАР (2), Почтовый индекс CHAR (10), Телефон ЧАР (13), Факс ЧАР (13), Контактное лицо CHAR (30) ) ; СОЗДАТЬ ТАБЛИЧНЫЕ ТЕСТЫ ( Имя_теста CHAR (30) НЕ НУЛЕВОЕ, Стандартный заряд CHAR (30) ); СОЗДАТЬ ТАБЛИЦУ СОТРУДНИКОВ ( Имя_сотрудника CHAR (30) НЕ NULL, Адрес1 СИМВ (30), Адрес2 СИМВОЛА (30), Город ЧАР (25), Государственный ЧАР (2), Почтовый индекс CHAR (10), Домашний телефон CHAR (13), OfficeExtension CHAR (4), Дата найма ДАТА, Классификация должностей CHAR (10), HourSalComm CHAR (1) ); СОЗДАТЬ ТАБЛИЦЫ ЗАКАЗОВ ( OrderNumber INTEGER NOT NULL, Имя клиента CHAR (30), TestOrdered CHAR (30), Продавец ЧАР (30), Дата заказа ДАТА ); СОЗДАТЬ РЕЗУЛЬТАТЫ ТАБЛИЦЫ ( ResultNumber INTEGER NOT NULL, Номер заказа INTEGER, Результат СИМВОЛ(50), ДатаОтчетная ДАТА, Предварительный Финал CHAR (1) ) ;г. Эти таблицы связаны друг с другом атрибутами (столбцами), которые они разделяют, как описано в следующем списке:
Таблица CLIENT связана с таблицей ORDERS столбцом ClientName.
Таблица TESTS связана с таблицей ORDERS столбцом TestName (TestOrdered).
Таблица EMPLOYEE связана с таблицей ORDERS столбцом ИмяСотрудника (Продавец).
Таблица RESULTS связана с таблицей ORDERS столбцом OrderNumber.
Ссылки иллюстрируют четыре различных отношения «один ко многим» . Ромб в середине каждого отношения показывает максимальную мощность каждого конца отношения. Число 1 обозначает «одну» сторону отношения, а N обозначает «многие» стороны.
Один клиент может делать много заказов, но каждый заказ делается одним и только одним клиентом.
Каждый тест может быть включен во многие заказы, но каждый заказ требует одного и только одного теста.
Каждый заказ принимается одним и только одним сотрудником (или продавцом), но каждый продавец может принимать несколько заказов.
Каждый заказ может дать несколько предварительных результатов тестирования и окончательный результат, но каждый результат связан с одним и только одним заказом.
Об этой статье
Эта статья взята из книги:
- SQL для чайников,
Об авторе книги:
Аллен Г. Тейлор — ветеран компьютерной индустрии с 30-летним стажем и автор более 40 книги, в том числе SQL для чайников и Crystal Reports для чайников. Он читает лекции по базам данных, инновациям и предпринимательству. Он также преподает разработку баз данных на международном уровне через ведущего поставщика онлайн-образования.
Эту статью можно найти в категории:
- SQL ,
Основы проектирования баз данных SQL с примерами
Общепринято, что архитектору БД приходится проектировать реляционную базу данных с учетом конкретного решения.
Как-то вечером в пятницу я ехал домой с работы в электричке и думал о создании своего рода рекрутинговой службы. Насколько я знаю, ни один из существующих сервисов не позволяет быстро оценить кандидата, создать замысловатые фильтры по определенным навыкам, проектам или должностям или исключить определенные навыки, должности или проекты. Максимальный диапазон использования — фильтрация по компаниям и частично по навыкам.
В этой серии статей я немного побалую себя некоторыми нетехническими примерами из моей жизни, пытаясь сломать строгое техническое письмо.
В этой части я расскажу об основах проектирования реляционных баз данных и проиллюстрирую проектирование базы данных MS SQL Server для службы подбора персонала.
Теперь, что касается следующих статей, я покажу вам, как заполнять базу данных данными с помощью генератора данных для SQL Server и искать данные и объекты базы данных с помощью бесплатного инструмента поиска dbForge. Я буду использовать dbForge Studio для SQL Server для реализации диаграмм для моих примеров и dbForge Data Pump для импорта и экспорта данных.
Основы проектирования БД
Для проектирования схем БД вспомним 7 нормальных форм и сами понятия нормализации и денормализации. Они лежат в основе всех правил проектирования.
Позвольте мне дать подробное описание 7 нормальных форм:
1. Связь один-к-одному:
1.1 Обязательная связь:
Примером может быть гражданин с паспортом (каждый гражданин должен иметь паспорт, и паспорт один на каждого гражданина)
Данные отношения реализуется двумя способами:
1. 1.1 В одном объекте (таблица):
Рис.1. Сущность «Гражданин»
Здесь таблица Citizen представляет сущность гражданина, а атрибут (поле) PassportData содержит все паспортные данные гражданина и не может быть пустым (НЕ NULL)
1.1.2. В двух разных объектах (таблицах):
Рис.2. Взаимосвязь между сущностями Citizen и PassportData
Таблица Citizen представляет сущность гражданина, а 9Таблица 0537 PassportData представляет сущность паспортных данных гражданина. Сущность гражданина содержит атрибут (поле) PassportID , который ссылается на первичный ключ таблицы PassportData . Принимая во внимание, что объект паспортных данных имеет атрибут (поле) CitizenID , который ссылается на первичный ключ CitizenID таблицы Citizen .
Также важно гарантировать целостность поля CitizenID и PassportData , чтобы обеспечить связь один к одному. То есть поле PassportID в таблице Citizen и поле CitizenID в таблице PassportData должны ссылаться на одну и ту же запись, как если бы это был один объект (таблица), как показано в параграфе 1.1.1.
1.2 Дополнительное отношение:
An Примером здесь может быть человек, который может иметь паспортные данные, а может и не иметь указанную страну. Так, в первом случае он является гражданином данной страны, а во втором случае его нет.
Эта связь реализуется двумя способами:
1.2.1 В одном объекте (таблица):
Рис.3. Сущность Person
Здесь таблица Person представляет сущность person, а атрибут (поле) PassportData содержит все паспортные данные лица и может быть пустым (NULL)
1.2.2 В двух сущностях (таблицах ):
Рис.4. Связь между Person и PassportData
Здесь таблица Person представляет сущность человека, а Таблица PassportData представляет объект паспортных данных человека (то есть сам паспорт). Сущность человека содержит атрибут (поле) PassportID , который ссылается на первичный ключ таблицы PassportData . Принимая во внимание, что объект паспортных данных имеет атрибут (поле) PersonID в таблице Person . Поле PassportID таблицы Person может быть пустым (NULL).
Также важно гарантировать целостность обоих PersonID и таблица PassportData , чтобы обеспечить взаимосвязь один к одному. То есть поле PassportID таблицы Person и поле PersonID таблицы PassportData должны ссылаться на одни и те же записи, как если бы это был один объект (таблица), показанный в пункте 1.2.1, или эти поля должны быть неопределенными, то есть содержать NULL.
2. Связь «один ко многим»
2.1 Обязательная связь:
Иллюстрацией этого могут быть родители и их дети. У каждого родителя есть хотя бы один ребенок.
Вы можете реализовать эту связь двумя способами:
2.1.1 В одной сущности (таблице):
Рис.5. Родительская сущность
Здесь таблица Родительская представляет родительскую сущность, а атрибут (поле) ChildList содержит информацию о дочерних элементах, то есть самих дочерних элементах. Это поле не может быть пустым (НЕ NULL). Детский список 9Тип поля 0513 — это обычно полуструктурированные данные (NoSQL), такие как XML, JSON и т. д.
2.1.2 В двух сущностях (таблицах):
Рис.6. Связь между родительскими и дочерними объектами
Здесь таблица Parent представляет родительский объект, а таблица Child представляет дочерний объект. Таблица Child имеет поле ParentID , которое ссылается на первичный ключ ParentID таблицы Parent . Поле ParentID таблицы Child не может быть пустым (НЕ NULL).
2. 2) опционально отношение:
Примером может быть человек, который может иметь детей или может не иметь детей.
Это отношение реализуется двумя способами:
2.2.1 В одном объекте (таблица):
Рис.7. Сущность Person
Здесь таблица Parent представляет родительскую сущность, а атрибут (поле) ChildList содержит информацию о дочерних элементах, то есть самих дочерних элементах. Это поле может быть пустым (NULL). Обычный Тип поля ChildList — полуструктурированные данные (NoSQL), такие как XML, JSON и другие.
2.2.2 В двух сущностях (таблицах):
Рис.8. Связь между объектами Person и Child
Здесь таблица Parent представляет родительский объект, а таблица Child представляет дочерний объект. Таблица Child имеет поле ParentID , которое ссылается на первичный ключ ParentID родительского стол. Поле ParentID таблицы Child может быть пустым (NULL).
Также существует третий способ реализации одной сущности, которая ссылается сама на себя, при условии, что дочерняя и родительская сущности (таблицы) имеют одинаковый набор атрибутов (полей) без ссылки на родительскую:
Рис.9. Сущность Person со ссылкой на себя
Здесь сущность Person (таблица) содержит атрибут ParentID (поле), который ссылается на первичную 0512 PersonID Ключ той же таблицы Person и может иметь пустое значение (NULL).
Это реализация отношения «многие к одному» необязательного характера.
3. Связь «многие к одному»
Эта связь отражает иллюстрацию выше отношение один ко многим. Это отношения между ребенком объект и родительский объект, где обязательная связь возможно, если у ребенка есть хотя бы один родитель, и если мы возьмем все детей, в том числе и в детских домах, то такое отношение имеет факультативный характер.
Отношения «один ко многим» и «многие к одному» также могут быть реализованы через более чем 2 объекта путем добавления необходимых атрибутов, которые ссылаются на первичные ключи соответствующих объектов. Эта реализация аналогична примерам выше в пунктах 1.1.2 и 1.2.2.
4. Связь «многие ко многим»
В этом случае Примером может служить недвижимость, которая может принадлежать одному лицу или несколько человек. Одновременно человек может владеть несколькими домами или имеют долю собственности на многие дома.
Вы можете реализовать эту связь с NoSQL способами, описанными выше для предыдущих отношений. Однако в рамках реляционной модели эта связь обычно реализуется через 3 сущности (таблицы):
Рис.10. Связь между объектами Person и RealEstate
Здесь таблицы Person и RealEstate представляют объекты человека и недвижимости соответственно. Эти сущности (таблицы) связаны посредством PersonRealEstate через атрибуты (поля) PersonID и RealEstateID , которые ссылаются на первичные ключи PersonID таблицы Person и RealEstateID таблицы RealEstate8 905 соответственно. Обратите внимание, что пара ( PersonID ; RealEstateID ) всегда уникальна для таблицы PersonRealEstate , поэтому она может быть первичным ключом для самой таблицы PersonRealEstate 9.0538 связующий объект (таблица).
Это отношение может быть реализована через более чем 3 объекта путем добавления необходимые атрибуты, которые относятся к первичным ключам соответствующие сущности. Такая реализация аналогична примеры описаны в пунктах 1.1.2 и 1.2.2.
Так где же 7 нормальных форм, спросите вы?
Вот они:
- Пар.1 (пар.1.1 и пар.1.2) первое и второе формальные правила.
- Пар.2 (пар.2.1 и пар.2.2) является третье и четвертое формальные правила.
- Пар.3 (аналогично пар.2) пятое и шестое формальные правила.
- Параграф 4 — седьмое формальное правило.
Просто так эти 7 нормальных форм сгруппированы в 4 функциональных блока в тексте выше.
Нормализация устраняет избыточность данных и, следовательно, снижает риски аномалии. Однако нормализация при разложении сущностей (таблиц) приводит к более сложному построению запроса для манипулирования данными (вставка, обновление, выделение и удаление).
Обратный процесс — денормализация. Это упрощает обработку запросов на доступ к данным за счет добавления избыточных данных (например, как было указано выше в п. 2.1.1 и 2.2.1 с помощью полуструктурированных данных (NoSQL)).
Вы уверены, что поняли смысл 7 нормальных форм? Что вы действительно его поняли, а не просто ознакомились с ним. Спросите себя, сможете ли вы за пару часов спроектировать модель базы данных, даже с избытком сущностей, для любой предметной области или любой информационной системы. Вы можете уточнить тонкости и детали позже, обратившись к аналитикам и представителям клиентов.
Если этот вопрос застал вас врасплох, и вы считаете, что добиться этого маловероятно, значит, вы знаете 7 нормальных форм, но не понимаете их.
Почему-то в источниках не указано, что эти отношения между сущностями не просто выдуманы, а обнаружены. То есть с самого начала они реально существовали в реальном мире между субъектами и объектами.
В дополнение к что эти отношения могут меняться, переходя от один к одному к один ко многим, или ко многим к одному, или ко многим ко многим, меняя их обязательный характер или сохранение его.
Я думаю, вам стоит попробовать понаблюдать за людьми и выявить существующие отношения как между субъектами, так и между субъектами и объектами (пример выше иллюстрировал гражданина и паспорта как взаимно-однозначную связь обязательного характера, а человека и паспорта как отношение один к одному, которое является необязательным).
Когда вы разберетесь в 7 нормальных формах, вы сможете легко спроектировать модель базы данных любой сложности для любой информационной системы.
Кроме того, вы узнаете, что отношения можно реализовать разными способами, и сами отношения могут измениться. Таким образом, модель базы данных (схема) представляет собой снимок отношений между сущностями в определенный момент времени. Следовательно, важно указать как объекты, которые являются изображениями объектов реального мира или предметной области, так и отношения между ними с учетом будущих изменений.
Хорошо спроектированный модель базы данных, с учетом изменения отношений в реальности и в предметной области, не требует никаких переделок в течение длительного времени время. Это особенно важно для хранения данных, где изменения связаны с пересохранение больших объемов данных, от нескольких гигабайт до многих терабайты.
Примечание: в модели реляционной базы данных это отношения между сущностями, а строки (кортежи) являются примерами этих отношений. Но для простоты мы часто подразумеваем сущности под таблицами, экземпляры сущностей под строками и их связь под связью внешних ключей.
Разработка схемы базы данных для найма
После мы описали основы проектирования БД в первой части статьи, давайте теперь создадим схему базы данных для найма.
В первую очередь необходимо определить, какая информация важна для сотрудников компаний, которые ищут соискателей:
- Для менеджера по персоналу:
- Компании, в которых работал соискатель.
- Должности, которые соискатель занимал в этих компаниях.
- Навыки, которые соискатель использовал на работе, стаж работы в каждой из компаний и на каждой должности, продолжительность использования каждого навыка.
- Для технического специалиста:
- Должности, которые соискатель занимал на предыдущих местах работы.
- Навыки, которые соискатель использовал на работе.
- Проекты, в которых принимал участие соискатель. Кроме того, важно знать стаж работы соискателя на каждой должности и в каждом проекте, а также продолжительность использования каждого навыка.
Сначала определим необходимые юридические лица:
- Сотрудник
- Компания
- Позиция
- Проект
- Навык
Компания и сотрудник имеют отношения «многие ко многим», поскольку сотрудник может работать в разных компаниях, а в компаниях много сотрудников.
То же самое работает для должности и сотрудника, потому что многие сотрудники могут работать на одной должности как в одной компании, так и в разных компаниях. При этом сотрудник может работать на разных должностях как в одной компании, так и во многих разных. В результате отношение между должностью и компанией также является отношением «многие ко многим».
Сущность «проект» следует той же логике: проект относится ко всем другим вышеупомянутым сущностям как многие ко многим.
Для простоты скажем, что сотрудник использует один набор навыков в проекте. Тогда отношения между проектом и навыком также многие ко многим.
Учитывая важность указания стажа работы сотрудника в той или иной компании, на конкретной должности и в конкретном проекте, схема нашей базы данных может иметь следующую ER-диаграмму:
Рис.11. Схема базы данных службы подбора персонала
Здесь таблица JobHistory представляет сущность трудовой книжки каждого сотрудника, то есть само резюме который реализует отношения «многие ко многим» между работниками, компания, должности и проект.
Проект и умение связаны как многие-ко-многим, таким образом, они связаны с помощью ProjectSkill организация.
Если вы понимаете отношения между субъектами, субъектами и объектами, что означает дизайн базы данных норм, можно создать аналогичную схему на бумажке в под час.
Здесь мы могли бы упростить схему и добавление данных, если мы поместим навык в сущность проекта через полуструктурированные данные (NoSQL) в виде XML, JSON или просто списка названия умений через точку с запятой. Но это сделало бы это сложно выбрать группировку по навыкам и фильтровать по определенным навыкам.
Заключение
Как видите, проектирование систем — это просто превращение объектов и субъектов из реальности в сущности базы данных, где отношения между этими сущностями фиксируются в определенный момент времени с учетом будущих изменений. Что именно мы берем из реальности и реализуем как сущность схемы, и какие отношения выстраиваем в модели, зависит от того, чего мы хотим от информационной системы в целом, сейчас и в будущем. То есть, какие данные мы хотим получить на текущий момент и через какое-то время в будущем.