Как правильно создавать структуру базы данных
У меня уже несколько раз спрашивали, как создаётся структура базы данных. Как понять: какие таблицы нужны и какие поля в них потребуются? Я постараюсь в этой статье если и не дать точный ответ на этот вопрос, то хотя бы направить мышление в нужное русло.
У любого сайта, где требуется база данных, имеется набор неких объектов, сущностей. Например, если это форум, то, очевидно, потребуются такие объекты: пользователи, темы, сообщения. Для социальной сети, например, потребуются такие объекты: пользователи, сообщения, друзья, записи на стене и так далее.
То есть Ваша самая первая задача - это выделить объекты, которые будут использоваться на сайте.
Вторая задача - это у каждого объекта выделить свойства. Например, свойства у таблицы с сообщениями. Очевидно, что это уникальный идентификатор, заголовок сообщения, сам текст, дата добавления, информации о пользователей, который добавил это сообщение, и прочее. Вот для каждого свойства и нужно создавать отдельное поле в таблице. Ничего лишнего быть не должно, только то, что потом потребуется при выводе этой информации.
Третья задача - это убрать дублирование. Например, в той же таблице с сообщениями информация о пользователе может быть разной. Но нужно избегать, например, e-mail пользователя или его логин. Гораздо лучше будет поставить id_пользователя. А этот id связывает таблицу с сообщениями с таблицей с пользователями, где по этому id можно однозначно определить пользователя и все его данные.
Четвёртая задача - это продумать ключи и индексы. Очевидно, что id должен быть PRIMARY KEY. Но есть ещё и уникальные поля, для которых нужно поставить UNIQUE. Например, это могут быть логин пользователя и его e-mail. Также если по каким-то данным будет часто вестись выборка, то имеет смысл сделать для них индекс, тогда такая выборка будет проходить быстрее.
И, наконец, пятая задача - это создать все таблицы со всеми полями. Тут уже без комментариев.
Итак, подведу итог по тому, как правильно создавать структуру базы данных:
- Выделить объекты (сущности) на сайте.
- Продумать свойства для каждого из объектов.
- Минимизировать дублирование.
- Добавить ключи и индексы.
- Создать все таблицы, например, в phpMyAdmin.
Сразу скажу, что заранее Вы всё никогда не предусмотрите. Поэтому делайте ровно те таблицы и те поля, которые гарантированно Вам потребуются. А если что-то забудете, то всегда это можно будет добавить. Что касается правильности структуры, то тут та же история: делайте, как можете, а потом в процесс работы с базой данных, Вы сами обнаружите недостатки созданной структуры и сможете их исправить.
-
- Михаил Русаков
Комментарии (4):
Очень полезная статья спасибо Михаил.
Ответить
Дааа ну на моем уровне пока этого не понять...Но все равно интересно хоть и сложно.
Ответить
Чего не понять-то? Рисуете таблицы сначала на бумажке, каждый тип объекта должен иметь свою таблицу. Пример: таблица для постов, таблица для комментов, таблица для пользователей, таблица для товаров в магазине и т.д. Потом поля, через которые ваши таблицы связаны, соединяете стрелочками, ну примерно так, как на картинке к статье. Дальше уже после такого рисунка забить базу в phpmyadmin или сделать командами через консоль - дело техники.
Ответить
Спасибо, очень полезная статья!
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.