Часть 3.7: Вторая нормальная форма (2NF)
Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3.…
Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. В данной записи мы познакомимся с понятием класса данных в SQLite3, посмотрим какие классы данных поддерживает SQLite3, а какие нет, а также мы разберемся с механизмами обработки классов данных ядром SQLite3: как хранятся данные на сервере и что с ними происходит, когда мы обращаемся к таблицам под управлением SQLite3.
SQLite3 вместо типов данных использует классы данных. Классы данных в SQLite3 – это более широкое понятие, нежели тип. Любое значение в SQLite3 может иметь один из пяти классов:
В SQLite3 довольно интересно реализован процесс хранения и обработки данных. Например, числа в базе данных с классом INTEGER хранятся на диске по-разному и могут занимать разное количество байт, но, когда мы делаем запрос, числа поступают в оперативную память и приводятся к восьмибайтному формату.
Любой столбец таблицы в SQLite3 может быть использован для хранения любого класса данных, за исключением столбца, который был явно объявлен, как INTEGER PRIMARY KEY.
Давайте теперь перечислим те классы данных, которых нет в SQLite3:
Вот такие особенности типизации данных в SQLite3.
Здравствуйте! Не подскажите, а для меня, как для пользователя sqlite, в чем плюсы и в чем минусы из-за того что в sqlite нет типов данных, а есть классы?
Особой разницы никакой, повторюсь, что класс данных — это более широкое понятие, нежели тип. Минусы классов данных в том, что не всегда можно легко найти ошибку в своем коде в тех ситуациях, когда другие СУБД будут выдавать ошибки из-за несовместимости типов данных, а SQLite будет пытаться преобразовать один класс данных в другой, чтобы выполнить нужную операцию и будет выполнять, но по обычной логике такие операции выполняться не должны и иногда даже бывают вредны. Вам нужно быть очень внимательной, когда работаете с классами данных в SQLite. Что же касается плюсов: вам не нужно запоминать все многообразие типов данных, т.к. классов данных всего пять, вам не нужно долго думать о выборе типа данных для столбца, условно: char, varchar и пр., в SQLite3 есть только текст, который на жестком диске под одно значение использует ровно столько байт, сколько занимает значение, а что потом с этим текстом происходит при запросе, на самом деле, это интимные подробности SQLite3, которые разработчику вообще не сильно интересны.