Храните информацию в базах данных
Когда у нас возникает желание создать собственный сайт, да еще и собственными руками, то мы проходим обычно несколько этапов: сначала используем простую верстку HTML, добавляем графические элементы, подключаем таблицы стилей CSS, создаем какие-то динамические элементы, пробуем ввести диалог с пользователем, экспериментируя с JavaScript, узнаем о существовании серверных языков программирования, пытаемся создавать свои шаблоны для сайта, изучаем различные системы управления контентом или даже пробуем создать свою собственную.
На этом пути круг задач, решаемых сайтом, непрерывно расширяется. Одновременно с этим растет и объем информации, задействованной в проекте, что заставляет вас задуматься над вопросом, каким образом хранить весь этот объем данных. Можно создать сложную систему каталогов и файлов, написать скрипты для управления этой системой, но стоит ли изобретать велосипед? Ведь инструмент, который может решить большинство этих проблем, уже есть - это базы данных. Задача баз данных - хранение структурированной информации, а также предоставление удобных инструментов поиска, модификации и выдачи отсортированных и представленных в нужном виде данных, хранимых в базе.
Что означают слова "структурированная информация"? Это любая информация, которую можно представить в виде списка или таблицы: каталог продукции, список пользователей вашего сайта с их логинами, паролями, дополнительными данными, и даже структура вашего сайта с именами разделов и информацией, имеющей к ним какое-то отношение. Более того, сложно вообразить ситуацию, когда информацию нельзя было бы представить в табличной форме и, следовательно, сохранить в базе данных.
Единицей хранения информации в базе данных можно считать запись или строку (record или row) - некий объект со своими характеристиками, которые хранятся в полях этой записи. Например, в базе данных некоего товара запись будет содержать информацию об отдельных единицах товара: артикул, наименование, описание, цена, количество. Таким образом, базу данных можно уподобить таблице, в которой каждая строка соответствует записи базы данных, а ячейки этой строки - полям записи. Если ваша информация уже представлена в табличной форме (прайс, каталог, картотека), создать базу данных для нее не представляет особого труда.
Конечно, проводить прямую аналогию между базой данных и обычной таблицей было бы слишком несправедливо по отношению к базам данных. В действительности база данных, как правило, содержит большое количество таблиц - основных и вспомогательных, которые тесно взаимосвязаны друг с другом. Недаром в технической литературе употребляется термин реляционные СУБД * - системы управления базами данных (RDBMS - relational database management system). База данных (БД в аббревиатуре СУБД) - это совокупность информации, разбитой регулярным образом. Данные в базе объединены в таблицы, состоящие из строк и столбов (иначе говоря - записи и поля). Под системой управления (СУ) понимается программное обеспечение, позволяющее работать с информацией в базе данных. Слово "реляционная" означает отслеживание соответствий записей в одной таблице на соответствие записям в другой таблице. Например, база данных каталога продукции может содержать таблицу с товаром, где одной из характеристик каждой единицы товара будет информация о его производителе. В этом случае в таблице товара хранится ссылка (реляция) на другую таблицу этой же базы данных с информацией о производителях, которая в свою очередь может содержать ссылки на страну производителя и так далее. В некоторых случаях могут быть таблицы, содержащие исключительно ссылки на другие таблицы - например, таблица заказов, строки которой только ссылки на товары и покупателей, информация о которых хранится в других таблицах. Но когда нам нужно получить информацию о товаре, то, делая запрос к таблице с товаром, мы, по ссылкам из нее на другие таблицы, легко можем получить всю необходимую информацию.
Если то, что скрывается за словом "реляционная", показалось вам излишне сложным, то ничего страшного. В первых простых проектах можно использовать и базу данных, состоящую из одной таблицы - этого может оказаться вполне достаточно. Но если вы внимательно изучите такую таблицу, то можете в некоторых случаях увидеть, что информация, хранящаяся в ней - избыточна. Например, в каждой строке товара вы вынуждены хранить имя производителя, которое одинаково для многих строк. Вот тут и можно использовать преимущество реляционных СУБД, сохранив производителей в отдельную таблицу, а в поле производителя в таблице товаров сохранить лишь число, соответствующее номеру производителя в другой таблице. Такой способ хранения уменьшает объем хранимых данных, давая также ряд других преимуществ. Например, вы получаете гарантию, что для каждого товара имя производителя будет одинаковым, а если понадобится его исправить, то нужно будет внести изменения только в одну запись в таблице производителей.
Для больших объемов информации базы данных являются спасением, но каковы минимальные требования для использования баз данных? В каком случае следует задуматься о возможности их применения? Практика показывает, что если вы столкнулись с необходимостью работать с таблицей, содержащей более чем 50 строк, то использование базы данных будет неплохим подспорьем. Понятно, что это число достаточно условно, так как эффекта от использования базы банных можно достичь и при меньшем количестве строк, если есть необходимость частого изменения данных с достаточно сложной структурой, а оператор, который будет их изменять, недостаточно квалифицирован, чтобы работать с файлом в формате html. В этом случае вы задумаетесь о создании простой системы управления контентом вашего сайта, и использование базы данных существенно облегчит ее разработку. Как правило, есть типовые задачи, которые прямо указывают на необходимость использования базы данных. Это, как упоминалось выше, задачи хранения информации в виде таблиц или списков, но и во многих других случаях использование в проекте базы данных может существенно ускорить его разработку.