Что из себя физически представляет база данных MySQL

Давайте разберемся, что именно из себя представляет наша база.

Наверняка все вы когда-то работали (или работаете сейчас) с БД MySQL. И когда мы ее открываем в phpmyadmin, такая база представляет собой красивую табличку.


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

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

В MacOS, на которой работает тестовый стенд, путь будет таким:
mac⁩ ▸ ⁨Программы⁩ ▸ ⁨MAMP⁩ ▸ ⁨db⁩ ▸ ⁨mysql57⁩
Более расширенный путь здесь публиковать не станем, чтобы не забивать мозг лишней сейчас информацией.
Папка mysql в которой хранятся базы данных из примера выглядит так.

Что мы тут видим?
Во-первых, непонятные файлы с расширениями MYI, FRM, MYD. Давайте поставим их на свои места.

Файлы MYI

Файлы MYI для таблицы MyISAM содержит индексы таблицы.

Заголовок MYI

Файл .MYI начинается с заголовка, содержащего информацию о параметрах, размерах файлов и ключей. В терминологии MySQL ключ — это то, что вы создаете с помощью запроса CREATE [UNIQUE] INDEX.

Программные файлы, которые читают и записывают заголовки .MYI, находятся в каталоге ./myisam: mi_open.c содержит подпрограммы, которые записывают каждый раздел заголовка, mi_create.c имеет подпрограмму, которая вызывает подпрограммы mi_open.c по порядку, а myisamdef.h имеет определения структуры, соответствующие тому, что мы собираемся описать.

Ключевые значения .MYI

Ключевые значения находятся в блоках (термин MySQL для страниц). Блок содержит значения только из одного индекса.
Каждый ключ содержит все содержимое всех столбцов, включая конечные пробелы в столбцах CHAR. Переднего усечения нет. Обратного усечения нет. (Может произойти усечение пробела, если keyseg-> flag флаг HA_SPACE_PACK включен.)

Для таблиц с фиксированной строкой: указатель представляет собой номер фиксированного размера (4 байта), который содержит порядковый номер строки. Первая строка — это запись № 0000. Этот элемент аналогичен ROWID или RID (идентификатор строки), который используют другие СУБД. Для таблиц с динамическими строками: указатель — это смещение в файле .MYD.
Нормальная длина блока составляет 0x0400 (1024) байтов.

Файл MYD

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

Файл FRM

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

Файлы FRM хранятся в той же папке, в которой хранится база данных этой таблицы файлов FRM. Файлы FRM — это двоичные файлы. Существует множество программ, которые используют этот тип расширения файла и, следовательно, могут использоваться для открытия файла FRM. Некоторые из них — Microsoft Visual Basic, MySQL, iBlaze, Photoframe, Corel WorldPerfect, Corel Painter и MYOB. Среди них Photoframe использует файл .frm для файла изображения изображения и Corel Painter для файлов стека кадров, а остальные используются для файлов форм.

Создаем базу данных MS Access

Microsoft Access — это старая система управления базами данных (СУБД), входящая в комплект Microsoft Office. Владеть ей просто необходимо. Из всех выпусков офиса я признаю только MS Office 2003 и MS Office 2007, поэтому показывать все буду на выпуске MS Office 2003. Картинки можно разворачивать по клику на них.

Запускаем Microsoft Access.

Идем в Файл — Создать или просто нажимаем сочетание клавиш CTRL+N. Лучше всего все делать клавишами — так быстрее.


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

Нам нужен пункт «Новая база данных». Нажимаем на него. Будет выдано окно сохранения файла, где вводим нужное имя. В этом случае именем файла стало primer1.


Это еще только начало создания.

Теперь нам нужно наполнить базу данных (БД) какими-то сведениями. Создавать будем в режиме конструктора, так как этот режим лучше всего помогает при создании БД. Поэтому выбираем пункт «Создание таблицы в режиме конструктора».


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

Дальше скриншоты я буду давать полными. Типов данных есть несколько:

  • Текстовый тип означает обычный текст и цифры с символами.
  • Поле MEMO означает поле для хранения больших объемов текста.
  • Числовой тип данных включает в себя только цифры.
  • Дата/время, Денежный — с этими, я думаю, все и так ясно.
  • Счетчик — это первая колонка, он автоматически подставится.
  • Логический — обычные Да/Нет.
  • Поле объекта OLE — всякие рисунки и прочая херня.
  • Гиперссылка — ясно что такое, ссылка на сайт.
  • Мастер подстановки — очень полезная штука, помогает при заполнении выбирать значение из списка.
Давайте приступим непосредственно к созданию. То есть к заполнению шаблона базы.


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

Что же, мы сделали заготовку базы данных для сайтов. Теперь ее сохраним, нажав вверху на кнопку с изображением дискеты (или нажав CTRL+S). Выскочит вот такой диалог, где надо ввести название таблицы и нажать ОК.


При сохранении СУБД предложит задать ключевое поле. Обязательно задаем его, ответив «Да». После этого вид таблицы слегка изменится, а именно, добавится поле «Код» со значением «Счетчик».


На этом формирование шаблона закончено. Закрываем окно. Это второй крест под заголовком, если нажмете самых верхний то закроется уже сама СУБД.

После того, как мы создали таблицу, вид базы изменится.


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


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


Обратите внимание, что ссылки не надо вводить с http. Они будут вводиться фактически сами. Теперь сохраняем базу (CTRL+S или кнопка с дискетой).

Закрываем таблицу.

Наша база готова. теперь ее можно изменять и дополнять так же, как я показал при создании базы. Сама по себе MS Access несложная, и ее знание может пригодится во многих местах.