Разработка CRUD-приложения, часть 1 - база данных

 

Я решил рассмотреть пример разработки CRUD-приложения (Create, read, update and delete) при помощи CodeIgniter на примере каталога сайтов.

Общая концепция задачи: разработать каталог сайтов с группировкой сайтов по категориям, возможностью добавления, изменения и удаления сайтов и категорий, и просмотра каталога. В качестве СУБД используется MySQL.

Начнем с начала

Для начала проведем проектирование базы данных для хранения информации об объектах нашего приложения и настроим CodeIgniter для работы с этой базой даных.

Создание базы данных, привилегии доступа пользователя

Создаем базу данных, назовем ее scatalog. Для этого подключившись к серверу БД как администратор выполняем следующую команду:

  1. CREATE DATABASE `scatalog` /*!40100 DEFAULT CHARACTER SET utf8 */

Привилегии пользователя

Создадим пользователя scatalog с паролем '123' и возможностью доступа с локальной машины :

  1. CREATE USER 'scatalog2'@'localhost' IDENTIFIED BY '123';

Примечание: для реальных задач использование простого пароля не рекомендуется, кроме того возможна ситуация, когда сервер MySQL расположен на другой машине.

Дадим пользователю scatalog все привилегии для БД scatalog:

  1. GRANT ALL PRIVILEGES ON `scatalog` . * TO 'scatalog2'@'localhost';

Настройка CodeIgniter для доступа к БД

Для начала пропишем в файле application/config/database.php настройки для доступа к БД:

  1. $db['default']['hostname'] = "localhost";
  2. $db['default']['username'] = "scatalog";
  3. $db['default']['password'] = "123";
  4. $db['default']['database'] = "scatalog";
  5. $db['default']['dbdriver'] = "mysql";

Чтобы упростить себе работу, настроим CodeIgniter для автоматического создания подключения к БД. Для этого в файле application/config/autoload.php внесем следующие изменения:

  1. $autoload['libraries'] = array('database');

Создание таблиц в БД

Пусть сайт в каталоге описывается его названием, описанием и адресом (URL). Для хранения в БД информации о сайте создадим таблицу sites:

  1. CREATE TABLE `sites` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `name` varchar(250) NOT NULL,
  4. `description` varchar(250) NOT NULL,
  5. `url` varchar(250) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Для категории будем хранить в БД название и описание в таблице categories:

  1. CREATE TABLE `categories` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `name` varchar(250) NOT NULL,
  4. `description` varchar(250) NOT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Пусть в нашем каталоге сайт может быть включен в несколько категорий, создадим таблицу sites_to_categories для хранения информации об этой связи между объектами:

  1. CREATE TABLE `sites_to_categories` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `site_id` int(10) UNSIGNED NOT NULL,
  4. `category_id` int(10) UNSIGNED NOT NULL,
  5. PRIMARY KEY (`id`),
  6. UNIQUE KEY `site_id` (`site_id`,`category_id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

В следующий раз рассмотрим создание классов модели и настройку CodeIgniter для работы без указания index.php в URL.

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

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <b> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <h2> <h3>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]". PHP source code can also be enclosed in <?php ... ?> or <% ... %>.

Подробнее о форматировании

CAPTCHA
Этот вопрос предназначен для того, чтобы отсеять ботов
2 + 3 =
Решите простой математический пример и введите результат. К примеру, для вопроса 1+3 нужно ввести 4

Вход в систему

Последние комментарии