Часть 6: Типы данных в SQL
Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3.…
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3.Мы приступаем к одной из самых важных тем реляционных баз данных — обеспечение целостности данных в базах данных, в этой теме мы рассмотрим, какие возможности по обеспечению целостности данных есть в реляционных СУБД на примере SQLite. Нужно сказать, что понятие обеспечение целостности данных тесно связано с понятием нормализации и с понятием связь между таблицами. Данная запись, как поможет вам понять эти связи.
Из этой записи в узнаете в общих чертах о том, как обеспечить целостность данных в базах данных, мы повторим аномалии, которые есть в реляционных базах данных и посмотрим, какие средства есть в SQLite для устранения аномалий. Так же мы познакомимся с ограничениями, которые, как раз таки и предназначены для обеспечения целостности данных. Ограничения делятся на два вида: ограничения уровня столбца и ограничения уровня таблицы. И завершении статьи вы узнаете о том, как бороться с аномалиями при помощи каскадных операций.
Содержание статьи:
Механизмы поддержания целостности данных в базах данных любой СУБД нужны для того, чтобы избежать всевозможных ошибок, связанных с манипуляцией данными, эти ошибки называются аномалиями:
С аномалиями баз данных можно бороться по-разному, например, привести базу данных к третьей нормальной форме или воспользоваться механизмами поддержания целостности данных, реализованными в СУБД. На самом деле, ни одна СУБД в мире не знает о том, что такое нормальная форма, поэтому за нормализацию отвечает разработчик баз данных.
SQLite, как и другие СУБД, не знают о том, что такое внешний ключ и первичный ключ, потому что для всех реляционных СУБД – это не ключи или ключевые атрибуты, а ограничения, которые обеспечивают целостность данных в базах данных. Если вам будет проще, то это правила для СУБД, которые она никогда не нарушит и не даст никому нарушить что бы не произошло.
Когда мы создаем таблицы в базах данных при помощи оператора CREATE, мы задаем характеристики для каждого столбца: тип данных, который будет храниться в столбце, мы можем сказать SQLite, что данный столбец AUTOINCREMENT и тогда SQLite будет обеспечивать целостность данных столбца самостоятельно, автоматически добавляя новое значение в этот столбец при добавление новых строк в таблицу.
Вы можете обеспечить целостность данных и избавиться от проблем с добавлением данных в таблицу командой INSERT, сказав, что в столбце не может находить значение NULL: в этом случае, если вы забудете добавить значение в столбец, для которого указано NOT NULL, данные не будут добавлены.
В общем, для поддержания и обеспечения целостности данных в базах данных SQLite3 у нас есть два механизма:
Эти два механизма поддержания и обеспечения целостности данных в базах данных, на самом деле, очень тесно связаны между собой, и мы это поймем несколько далее. Сейчас стоит сказать, что ограничения в SQLite, как и в любой другой СУБД делятся на два уровня: ограничения уровня таблицы и ограничения уровня столбца.
Первые позволяют обеспечить целостность данных во всей базе данных, вторые обеспечивают целостность данных в таблице базы данных.
Ограничения уровня столбца в базах данных SQLite3 нужны для того, чтобы обеспечить целостность данных в одной таблице базы данных, вернее, в столбце таблицы. Ранее мы очень часто сталкивались с ограничениями уровня таблицы, когда рассматривали различные команды SQL. Для SQLite ограничения уровня столбца – это правила, которые должны выполняться, чтобы поддержать и обеспечить целостность данных в базе данных. Давайте посмотрим, как SQLite обеспечивает целостность данных на уровне столбца.
Еще раз повторим, что ограничения уровня столбца обеспечивают целостность в столбцах таблиц базы данных.
Ограничения уровня таблицы нужны, чтобы обеспечить целостность данных всей базы данных, создавая ограничение уровня столбца, мы создаем правило, от которого зависит работа всей базы данных. Давайте посмотрим, как в SQLite3 можно обеспечить целостность данных при помощи ограничений уровня таблицы:
Давайте сделаем вывод: ограничения уровня таблицы в SQLite являются правилами, которые СУБД никогда не нарушит и не даст нарушить никому для того, чтобы обеспечить целостность данных в базе данных.
Когда мы создаем таблицы и указываем внешние ключи, мы делаем тесные связи между таблицами, эти таблицы связаны между собой ссылающимися столбцами. Когда мы рассматривали вторую нормальную форму, то выявляли функциональные связи между таблицами, а затем разбивали одну таблицу, которая находилась в первой нормальной форме, на родительскую и дочернюю, то есть создавали справочник, который устранял избыточность данных в базе данных.
Когда мы рассматривали третью нормальную форму, то мы тоже создавали таблицу справочник для того, чтобы избавиться от транзитивной зависимости. Если бы мы попробовали удалить данные из родительской таблицы в SQLite, то она бы нам вернула ошибку, сказав о том, что для удаления строки из родительской таблице нужно удалить строку из дочерней таблицы.
Да, мы обеспечили целостность данных в базе данных, но осложнили себе работу манипуляции данными. Разработчики SQLite позаботились о разработчиках баз данных, стремящихся обеспечить целостность данных, реализовав каскадные операции с данными. В базах данных SQLite есть две каскадные операции манипуляции данными:
Далее мы более подробно рассмотрим каскадные операции манипуляции с данными, как и другие вопросы, связанные с обеспечением целостности данных, затронутых в данной записи.
Выберете удобный для себя способ, чтобы оставить комментарий