Bazaprogram.ru

Новости из мира ПК
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Нормализация в access

Нормализация данных с помощью анализа таблиц

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

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

Примечание: Сведения в этой статье применяется только к классической базы данных Microsoft Access (MDB или ACCDB).

1. исходная таблица

2. таблицы, созданные средством анализа таблиц

3. запрос, созданный средством анализа таблиц

4. список подстановки

Если в вашей База данных Microsoft Access есть таблица, в одном или нескольких полях которой повторяются сведения, разбейте ее на связанные таблицы с помощью средства анализа таблиц, чтобы хранить информацию более безопасно и эффективно. Этот процесс называется нормализацией.

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

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

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

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

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

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

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

Ссылочная целостность

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

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

  1. Удаляется запись в родительской таблице , но не удаляются соответствующие связанные записи в дочерней таблице .
  2. Изменяется запись в родительской таблице , но не изменяются соответствующие ключи в дочерней таблице .
  3. Изменяется ключ в дочерней таблице , но не изменяется значение связанного поля родительской таблицы.
Читать еще:  Access 2020 онлайн работать

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

Нормализация базы данных

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

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

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

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

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

Под понятием повторяющиеся группы подразумевают поля, содержащие одинаковые по смыслу значения. Взгляните на рисунок:

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

Вторая нормальная форма ( 2НФ ) требует, чтобы таблица удовлетворяла всем требованиям первой нормальной формы, и чтобы любое не ключевое поле однозначно идентифицировалось полным набором ключевых полей . Рассмотрим пример: некоторые студенты посещают спортивные платные секции, и ВУЗ взял на себя оплату этих секций. Взгляните на рисунок:

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

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

Читать еще:  Ориентация слайда в powerpoint

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

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

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

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

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

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

Нормализация базы данных

05.06.2015, 07:50

Нормализация атрибутов для базы данных
Здравствуйте, Мне нужно создать базу данных, но для этого нужно привести атрибуты к 1,2,3.

нормализация таблиц базы данных контроля регистрации пассажиров на рейсы
Всем доброго времени суток!Столкнулся с проблмой,а именно базы данных 🙁 Уже сил нету,застрял я с.

Нормализация базы и создание формы в Access
Добрый день! Очень нужна помощь по разработке базы данных «Учащиеся». В данной базе должна.

Нормализация базы и создание формы в Access
Добрый день! Очень нужна помощь по разработке базы данных «Учащиеся». В данной базе должна.

05.06.2015, 08:13205.06.2015, 10:53 [ТС]3

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

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

05.06.2015, 11:05405.06.2015, 11:11 [ТС]5

Нету базы данных .

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

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

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

Читать еще:  Условие отбора по дате в access

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

05.06.2015, 11:28605.06.2015, 11:43 [ТС]708.06.2015, 04:428
08.06.2015, 04:42
08.06.2015, 04:42

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

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

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

Экспорт и нормализация данных из Excel
Была таблица с кучей данных в формате MS Excel. Данные из этой таблицы были экспортированы в MS.

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

Нормализация базы данных

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

Нормализация базы данных

Нормализация базы данных – это рекомендации по проектированию.

Преимущества нормализованной базы данных:

  • Возможность существенно упростить выборки. Получение данных из базы относительно простыми запросами.
  • Целостность данных. Избежание потерь или искажения информации в базе данных.
  • Отсутствие избыточности. Данные в таблице не дублируются, что существенно снижает её размер.
  • Благоприятные предпосылки к росту базы.

Как привести базу данных к нормальной форме?

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

  1. Постараться объединить данные в группы.
  2. Найти логические связи между этими группами данных. Для установки связей связываемые поля должны быть одного типа и таблица формата InnoDB.

Существует 3 нормальные формы базы данных:

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

В одной ячейке одно значение. Исключение тип данных SET

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

idnamelanguages
1ИванJava, C++, PHP
2ПётрPHP, JavaScript
3МихаилC#, JavaScript

В примере №1. Представлена не удачная структура таблицы, где в поле languages указано перечисление.

idnamelanguages1languages2languages3
1ИванJavaC++PHP
2ПётрPHPJavaScriptNULL
3МихаилC#JavaScriptNULL

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

Правильная структура таблиц для решения данной задачи:

idnamelanguages_id
1ИванJava, C++, PHP
2ПётрPHP, JavaScript
3МихаилC#, JavaScript

Таблица языков программирования

idlanguage
1Java
2PHP
3C#
4JavaScript
5Java

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

idlanguage_iduser_id
121
211
351
412

Вторая нормальная форма
Для второй нормальной формы требуется первая нормальная форма.

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

idmakemodel
1bmwX5
2bmwX6
3audiA4
4audiQ5
5toyotacorolla

В примере №4 мы видим дублирование некоторых марок автомобилей (Данные избыточны). Требуется сделать разделение на несколько таблиц как в примере №3. На первый взгляд создание новых таблиц кажется более затратным чем реализация в примере №4, но это только до тех пор когда таблица состоит всего из нескольких строк.

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

Таблица цен и цен с НДС

idpriceprice_nds
111001243
29501074

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

Ссылка на основную публикацию
Adblock
detector