Разработка CRUD-приложения, часть 1 - база данных
- Автор mityok on марта 4th, 2008
Я решил рассмотреть пример разработки CRUD-приложения (Create, read, update and delete) при помощи CodeIgniter на примере каталога сайтов.
Общая концепция задачи: разработать каталог сайтов с группировкой сайтов по категориям, возможностью добавления, изменения и удаления сайтов и категорий, и просмотра каталога. В качестве СУБД используется MySQL.
Начнем с начала
Для начала проведем проектирование базы данных для хранения информации об объектах нашего приложения и настроим CodeIgniter для работы с этой базой даных.
Создание базы данных, привилегии доступа пользователя
Создаем базу данных, назовем ее scatalog. Для этого подключившись к серверу БД как администратор выполняем следующую команду:
CREATE DATABASE `scatalog` /*!40100 DEFAULT CHARACTER SET utf8 */
Привилегии пользователя
Создадим пользователя scatalog с паролем '123' и возможностью доступа с локальной машины :
CREATE USER 'scatalog2'@'localhost' IDENTIFIED BY '123';
Примечание: для реальных задач использование простого пароля не рекомендуется, кроме того возможна ситуация, когда сервер MySQL расположен на другой машине.
Дадим пользователю scatalog все привилегии для БД scatalog:
GRANT ALL PRIVILEGES ON `scatalog` . * TO 'scatalog2'@'localhost';
Настройка CodeIgniter для доступа к БД
Для начала пропишем в файле application/config/database.php настройки для доступа к БД:
$db['default']['hostname'] = "localhost"; $db['default']['username'] = "scatalog"; $db['default']['password'] = "123"; $db['default']['database'] = "scatalog"; $db['default']['dbdriver'] = "mysql";
Чтобы упростить себе работу, настроим CodeIgniter для автоматического создания подключения к БД. Для этого в файле application/config/autoload.php внесем следующие изменения:
Создание таблиц в БД
Пусть сайт в каталоге описывается его названием, описанием и адресом (URL). Для хранения в БД информации о сайте создадим таблицу sites:
CREATE TABLE `sites` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` varchar(250) NOT NULL, `description` varchar(250) NOT NULL, `url` varchar(250) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Для категории будем хранить в БД название и описание в таблице categories:
CREATE TABLE `categories` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` varchar(250) NOT NULL, `description` varchar(250) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Пусть в нашем каталоге сайт может быть включен в несколько категорий, создадим таблицу sites_to_categories для хранения информации об этой связи между объектами:
CREATE TABLE `sites_to_categories` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `site_id` int(10) UNSIGNED NOT NULL, `category_id` int(10) UNSIGNED NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `site_id` (`site_id`,`category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
В следующий раз рассмотрим создание классов модели и настройку CodeIgniter для работы без указания index.php в URL.

Отправить комментарий