Отправляет email-рассылки с помощью сервиса Sendsay

Пишем свою CMS

  Все выпуски  

Пишем свою CMS Выпуск 2. Проектирование базы данных


Здравствуйте, уважаемые подписчики!

В прошлый раз мы с вами разобрались, что это такое - система управления сайтом, а так же для чего она нужна. А нужна она - напоминаю - для того, чтобы можно было менять содержание сайта, не зная никаких языков программирования. Чтобы всё было просто и понятно абсолютно любому пользователю.

Сегодня мы поговорим о выборе языка программирования и о дальнейшей разработке. Вы можете выбрать другой язык программирования, но система, разрабатываемая в рамках данной рассылки, пишется на PHP.

Почему именно такой выбор?

Скажу очень просто: у PHP очень много преимуществ по сравнению с Perl. Перечислим:

  • Более простой синтаксис
  • Встроенная поддержка различных БД
  • При малейшем недочёте сразу вылезает ошибка 500
  • В Perl все предупреждения и ошибки пишутся в лог сервера и никогда не выводятся на экран, а в PHP это можно настраивать

Ну, думаю, достаточно. Убедил я вас?

Итак, пишем на PHP. Но и здесь ещё одно дополнение - для разрабатываемой системы обязательно нужен PHP именно пятой версии по одной простой причине - мы с вами будем использовать классы, синтаксис которых просто не допускает применения PHP4. Но всё это будет прописано в инсталляторе системы, о котором позже...

Наша система будет работать в связке с базой данных MySQL. Почему именно MySQL? Да потому что из бесплатных СУБД под Windows есть только 2 - MySQL и PostgreSQL. В дальнейшем можно будет сделать модуль для работы с PostgreSQL и, таким образом, в инсталляторе можно будет выбирать используемуую СУБД. Но обо всём этом позже. Сейчас мы работаем только с MySQL.

Нам нужно будет довольно много таблиц. Это связано с тем, что разрабатываемая система будет модульной, то есть можно будет добавить новый модуль и он будет работать. Модулем будет называться абсолютно всё - новости, статьи, доска объявлений, просто страницы, форум и т.д. - вся информация о модулях и их содержании будет храниться в базе данных. Кроме того в базе будет храниться информация об используемых стилях. Соответственно на таблице пользователей это должно тоже отразиться. Вся связанная с модулями пользовательская статистика будет храниться в таблице пользователей. Кроме того, потребуются таблицы для организации прав доступа а также некоторые системные таблицы, для того чтобы хранить базовые настройки. Да, и ещё у нас в базе данных будут храниться все языковые константы. Может это и не очень хорошо в плане производительности, но у меня для вас есть два утешения: 1. В самом начале работы все данные по языку будут из базы забираться в массив и в базе далее они трогаться не будут. 2. Такое хранение даёт возможность изменять языковые фразы прямо из административной панели управления системой, что, конечно же, во много раз повышает гибкость системы.

Интересное замечание по поводу прав доступа. Вы можете придумать другую систему прав - это будет только приветствоваться. А здесь я предложу свою. Итак, у нас есть пользователи, группы, разрешения и модули. Сразу договоримся - разрешение присваивается группе, но не отдельному пользователю. А пользователь может состоять только в одной группе. Существуют некие стандарнтные действия - "писать", "читать", "удалять", "модифицировать". Согласитесь, что они могут быть применены к любому модулю, требующему создания контента. А такими модулями являются абсолютно все модули системы. В итоге смысл прав - каждое действие назначить на каждый конкретный модуль. Вместе с тем следует учесть,что разрешения должны храниться отдельно - это даст возможность администраторам модифицировать эти таблицы из административной панели.

На этом данный выпуск заканчивается. Но наша цель ведь не просто читать выпуски. Наша цель - общаться и в ходе этого общения создать свою систему управления. Поэтому сегодня вам будет предложено домашнее задание. Да, да, не удивляйтесь! Для полноценного общения обязательно нужна практика.

Итак, по предложенному выше описанию, создайте таблицы. Вы можете как написать скрипт SQL, так и нарисовать. Но если вы будете рисовать, но имейте в виду, что рисунок должен полностью соответствовать реальной таблице - т.е. названия полей, первичные ключи и т.д. - всё должно быть указано. Все свои работы пересылайте на адрес 57268-author@subscribe.ru

Пока на этом всё.

С уважением,

Марк.


В избранное