Воскресенье, 22.07.18, 23:05
Меню
Категории раздела
MySQL [1]
Опрос
Какая Операционная Система вам больше нравится?
Всего ответов: 105
Статистика
Linux coutner
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Вход
Главная » Статьи » СУБД » MySQL

MySQL – основы применения при построении Web-сайтов


Концепции реляционных баз данных

РБД построены на основе отношений, называемых таблицами. Рассмотрим в качестве примера таблицу «Пользователи» гипотетического универмага:

Идентификатор клиентаФИОАдресГород
1Иванов ИванГагарина, 25Краснодар
2Семенов СергейЛенина, 41Свердловск
3Федоров АнатолийЗвездный бульвар, 27Москва

Приведенная выше таблица содержит имена и адреса клиентов. Она имеет свое имя «Пользователи» и несколько столбцов, каждый из которых содержит определенные сведения о клиентах. В свою очередь, каждый столбец также имеет имя и содержит уникальные данные определенного типа. В данном случае, первый столбец содержит целочисленную информацию, остальные – строковые данные. Столбцы имеют синонимы, известные как поля или атрибуты.

Строки таблицы состоят из наборов данных и представляют каждая отдельного клиента. Они также называются записями или кортежами. Каждая строка состоит из набора отдельных значений, соответствующих столбцам. Тип данных каждого значения должен соответствовать типу данных, заданному столбцом.

Если клиенты будут иметь одинаковые имена и фамилии, их будет трудно различать. Конечно, при этом могут различаться города, где эти клиенты находятся, но тогда идентификационная информация становится слишком объемной для поиска. Поэтому каждому клиенту необходим уникальный идентификатор – ключ, искусственное присвоение которого гарантирует уникальность записи. Таким идентификатором в примере выступает порядковый номер клиента – столбец с названием «Идентификатор клиента». Такой ключ будет первичным. БД обычно состоят из нескольких таблиц, для которых первичный ключ является связующим звеном.

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

Можно сформулировать несколько рекомендаций для проектирования собственной БД для веб-проекта.

  1. Каждый класс реально моделируемых объектов нуждается в собственной таблице.
  2. Избегайте избыточной информации, но предотвращайте возможные аномалии удаления и обновления данных.
  3. Используйте элементарные значения столбцов для сохранения только одного элемента в каждом атрибуте каждой строки.
  4. Выбирайте соответствующие ключи и обеспечьте их уникальность.

Описанные выше концепции подпадают под понятие архитектуры баз данных для веб. Архитектура, в общем случае, концептуально описывает порядок взаимодействия клиента и сервера, т.е. Web-браузера и Web-сервера.

Рассмотрим типичную транзакцию базы данных для веб, включающую в себя веб-браузер, веб-сервер, механизмы сценариев и сервер баз данных.

  1. Web-браузер пользователя оправляет HTTP-запрос на определенную страницу веб-сервера.
  2. Web-сервер принимает этот запрос и передает его сценарию PHP на обработку.
  3. Из сценария в процессе обработки запроса выполняется подключение к БД с целью извлечения оттуда нужной информации.
  4. Сервер БД принимает запрос для БД, обрабатывает его и отправляет результаты обратно, сценарию PHP.
  5. Сценарий PHP завершает свою работу, форматирует вывод в виде HTML и отправляет его клиенту в Web-браузер.
  6. Клиент просматривает ответ сервера у себя в браузере и, при необходимости, формирует новый запрос.

Часто Web-сервер, механизм PHP и сервер БД работают на одном компьютере, но могут разноситься и на разные аппаратные компоненты из соображений безопасности и увеличения пропускной способности или эффективного распределения нагрузки.

По мере усложнения проекта, сценарную часть PHP обычно разделяют на уровни. Такими уровнями могут быть уровень работы в БД, код, взаимодействующий с MySQL, уровень реализации бизнес-логики, просчитывающий основную задачу, и представительский уровень, реализующий форматированный в HTML вывод ответа на запрос клиента.

Использование MySQL для веб

Для использования MySQL с Web-сервером, он должен быть установлен и настроен определенным образом. Это включает в себя инсталляцию необходимых файлов, настройку профиля пользователя MySQL, настройку требуемых путей, по необходимости запуск команды mysql_install_db, установку пароля для пользователя администратора (root) СУРБД MySQL, удаление анонимного пользователя и тестирование БД, запуск сервера и настройка его на автоматический запуск в дальнейшем. Обращение к MySQL будет происходить через MySQL-монитор. Ввод всех команд в нем должен завершаться символом «;», который сообщает СУРБД о том, что команду можно исполнить. Пропуск этого символа позволяет разбить команды на несколько строк, ввести их как в файле, а затем выполнить все разом. При этом очередное приглашение на ввод со стороны MySQL будет выглядеть как символ > и, пока не будет введена точка с запятой, команды обработаны не будут. SQL-операторы не чувствительны к регистру, а имена таблиц – чувствительны. Для входа в систему MySQL надо перейти в командную строку (подразумевается работа в UNIX-подобной системе) и ввести:

 $ mysql –h hostname –u username –p

при этом запускается монитор MySQL, являющийся клиентом командной строки (именно поэтому во многих системах устанавливается отдельным компонентом пакет mysql-client), который соединяется с сервером MySQL. Ключ –h применяется для указания имени хоста, к которому надо подключиться, или его ip-адреса. Ключ –u по аналогии используется для ввода имени пользователя, а –p для ввода пароля. После удачного входа на экране появится приглашение на ввод команд вида mysql>

Для создания базы данных необходимо использовать команду: mysql> create database dbname; dbname – подразумевает имя требуемой базы. После создания базы данных обычно переходят к настройке пользователей и системы полномочий. Учетная запись root для MySQL должна использоваться только для системных задач. Пароли желательно задавать для всех пользователей СУБД. Кроме того, рекомендуется создавать хотя бы по одной учетной записи для каждого Web-приложения. Эти мероприятия обеспечивают правильное применение системы полномочий, которую поддерживает MySQL. Под полномочием понимается право определенного пользователя выполнять определенные задачи над каким-либо объектом. Свод этих понятий близок по духу к системе прав доступа на уровне файлов. При создании пользователя ему назначаются определенные полномочия, которые определяют его статус в рамках MySQL и возможность совершать те или иные действия. При этом придерживаются принципа «минимальных полномочий», который, в общем, используется для улучшения защиты любой компьютерной системы. Он выражается в том, что каждый процесс должен обладать минимальными возможностями для решения конкретной задачи. Это справедливо не только для MySQL, но и для любой системы в целом.

При настройке прав пользователей применяют команды GRANT и REVOKE. Эти команды определяют предоставление и лишение прав пользователей на четырех уровнях:

  • глобальном;
  • баз данных;
  • таблиц;
  • столбцов,

причем команда GRANT одновременно создает пользователя и наделяет его правами.

Например, команда mysql> grant all on * to alex identified by ‘12345’ with grant option; предоставит пользователю alex с паролем 12345 все полномочия для всех баз данных с правом их передачи другим пользователям.

Команда mysql> revoke all on * from alex; лишит всех предоставленных полномочий пользователя alex, т.е. REVOKE работает, как и GRANT, только реверсивно.

Для подключения PHP-сценариев к MySQL и выполнения ими своей работы им должны быть предоставлены соответствующие полномочия. Они должны, как правило, позволять совершать ряд операций над строками. Под этими операциями подразумевается вставка данных, их выборка, удаление и обновление, что эквивалентно командам SELECT, INSERT, DELETE и UPDATE. При этом если скрипты будут подсоединяться к БД mydb от лица пользователя alex с паролем 12345, то настройка этого пользователя будет выглядеть так:

mysql > grant select, insert, delete, update on my_db.* to alex identified by ‘12345’;

Переход к той базе данных, которая нужна для работы, осуществляется по команде: >mysql use my_db; если этого не сделать, но дать команду для БД, монитор выведет ошибку.

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

mysql> CREATE TABLE table_name(columns); например:
mysql> CREATE TABLE table_name
 (customid int unsigned not null auto_increment primary key,
 name char(50) not null,
 address char(100) not null,
 city char(30) not null
 );

Данная команда создаст таблицу из четырех столбцов. Первый будет идентификатором пользователей и первичным ключом таблицы. Все столбцы, для которых указан auto_increment, должны быть проиндексированы. Это используется только для чистых столбцов. NOT NULL – означает не нулевой атрибут для столбцов.

Ключевое слово unsigned, заданное после int, означает, что соответствующее значение может быть только относящимся к области определения беззнаковых целых чисел.

При создании таблицы необходимо решать, какого типа столбцы будут в ней присутствовать. В соответствии с нашей схемой, таблица table_name содержит четыре столбца. Первый, первичный ключ, определен непосредственно, и будет представляться целым беззнаковым числом. Все остальные столбцы будут содержать строковые данные. Поэтому они имеют тип char и определяют поля фиксированной длины цифрами, указанными в скобках. Тип char всегда будет выделять под переменную указанное количество позиций. Если указать тип varchar, то будет использоваться только необходимый объем памяти, но работать такая конструкция будет медленнее.

Просмотреть созданную БД можно по команде mysql> show databases;, а таблицы в выбранной БД – по командеmysql> show tables; .

По команде mysql> describe table_name; можно просмотреть расширенную информацию по конкретной таблице, т.е. ту, которую задали при ее создании, с учетом типа данных и других параметров.

Всего в MySQL есть пять видов идентификаторов – это базы данных, таблицы, столбцы, индексы и псевдонимы. Базы данных отображаются на каталоги, лежащие в их основе, а таблицы – на файлы. Это отображение напрямую влияет на присваиваемые им имена и на зависимость имен от регистра. Если в операционной системе имена файлов зависят от регистра, то будут зависеть и имена таблиц. Расположение каталогов и файлов, содержащих данные, будет таким, каким они установлены в конфигурации, проверить которую можно по команде: $mysqladmin variables, в выводе которой надо посмотреть на переменную datadir, содержащую нужную информацию.

Начиная с версии MySQL 3.23, в идентификаторах можно использовать зарезервированные слова и специальные символы всех видов. При их использовании необходимо применять кавычки, например:

 create database `create database`; 

Но главный принцип при использовании идентификаторов – это их осмысленное применение.

Кроме перечисленных типов, есть еще подтип даты и времени. Он позволяет вводить данные либо в строковом формате, либо в числовом.

В строковых типах есть подразделение на три подтипа. Это простые строки – фрагменты текста, подтипы TEXT и BLOB, а также SET и ENUM.

Категория: MySQL | Добавил: Root (24.07.10)
Просмотров: 2198 | Теги: PHP, web, MySQL | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Партнеры
  • Universal Education
  • Cisco Systems
  • LinuxOpen
  • The Linux Foundation
  • The GNU General Public License
  • Проект Fedora
  • The Community ENTerprise Operating System
  • FreeBSD Project
  • OpenBSD Project
  • NetBSD Project
  • Ubuntu
  • Тех.Поддержка
    Copyright OPENNET Company © 2018