![]() |
Уроки SQL и баз данных
Посмотреть тексты уроков SQL и баз данных можно на сайте [URL]http://www.site-do.ru/db/db.php#2[/URL]
[B]Основы баз данных[/B] [LIST][*][URL="http://www.site-do.ru/db/db1.php"]Урок 1. Понятие базы данных[/URL][*][URL="http://www.site-do.ru/db/db2.php"]Урок 2. Структура базы данных[/URL][*][URL="http://www.site-do.ru/db/db3.php"]Урок 3. Реляционные базы данных[/URL][*][URL="http://www.site-do.ru/db/db4.php"]Урок 4. Концептуальная модель базы данных[/URL][*][URL="http://www.site-do.ru/db/db5.php"]Урок 5. Преобразование концептуальной модели в реляционную[/URL][/LIST] [B]Предварительные установки[/B] [LIST][*][URL="http://www.site-do.ru/db/installation_apache.php"]Установка сервера Apache[/URL][*][URL="http://www.site-do.ru/db/installation_php.php"]Установка модуля PHP[/URL][*][URL="http://www.site-do.ru/db/installation_mysql.php"]Установка сервера MySQL 5[/URL][*][URL="http://www.site-do.ru/db/installation_phpmyadmin.php"]Установка интерфейса phpMyAdmin[/URL][/LIST] [B]Уроки SQL[/B] [LIST][*][URL="http://www.site-do.ru/db/sql1.php"]Урок 1. Создание базы данных и таблиц[/URL][*][URL="http://www.site-do.ru/db/sql2.php"]Урок 2. Типы данных[/URL][*][URL="http://www.site-do.ru/db/sql3.php"]Урок 3. Создание таблиц и наполнение их информацией[/URL][*][URL="http://www.site-do.ru/db/sql4.php"]Урок 4. Выборка данных - оператор SELECT[/URL][*][URL="http://www.site-do.ru/db/sql5.php"]Урок 5. Вложенные запросы[/URL][*][URL="http://www.site-do.ru/db/sql6.php"]Урок 6. Объединение таблиц (внутреннее объединение)[/URL][*][URL="http://www.site-do.ru/db/sql7.php"]Урок 7. Объединение таблиц (внешнее объединение)[/URL][*][URL="http://www.site-do.ru/db/sql8.php"]Урок 8. Группировка записей и функция COUNT()[/URL][*][URL="http://www.site-do.ru/db/sql9.php"]Урок 9. Редактирование, обновление и удаление данных[/URL][*][URL="http://www.site-do.ru/db/sql10.php"]Урок 10. Встроенные функции[/URL][*][URL="http://www.site-do.ru/db/sql11.php"]Урок 11. Итоговые функции, вычисляемые столбцы и представления[/URL][*][URL="http://www.site-do.ru/db/sql12.php"]Урок 12. Строковые функции[/URL][*][URL="http://www.site-do.ru/db/sql13.php"]Урок 13. Функции даты и времени[/URL][*][URL="http://www.site-do.ru/db/sql14.php"]Урок 14. Функции форматирования даты и времени[/URL][*][URL="http://www.site-do.ru/db/sql15.php"]Урок 15. Хранимые процедуры. Создание, использование и удаление.[/URL][*][URL="http://www.site-do.ru/db/sql16.php"]Урок 16. Хранимые процедуры. Просмотр имеющихся процедур и их редактирование.[/URL][*][URL="http://www.site-do.ru/db/sql17.php"]Урок 17. Хранимые процедуры. Оператор ветвления IF и переменные.[/URL][*][URL="http://www.site-do.ru/db/sql18.php"]Урок 18. Хранимые процедуры. Циклы.[/URL][/LIST] |
[B]Базы данных - Урок 1. Понятие базы данных[/B]
Возможно, вы еще не знаете, что входит в понятие базы данных, но то, что вы ими постоянно пользуетесь абсолютно точно. Каждый раз, когда вы что-то ищете в поисковике, вы используете базу данных. Когда вы вводите свои логин и пароль для входа на какой-нибудь сервис, они сравниваются со значениями, которые хранятся в базе данных этого сервиса. Несмотря на то, что мы постоянно используем базы данных, для многих остается непонятным, что же это такое на самом деле. И связано это отчасти с тем, что одни и те же термины, относящиеся к базам данных, используются людьми для определения совершенно разных вещей. Давайте разберемся с терминами и понятиями баз данных: [I]База данных[/I] - набор сведений, хранящихся некоторым упорядоченным способом. Можно сравнить базу данных со шкафом, в котором хранятся документы. Иными словами, база данных - это хранилище данных. Сами по себе базы данных не представляли бы интереса, если бы не было систем управления базами данных (СУБД). [I]Система управления базами данных[/I] - это совокупность языковых и программных средств, которая осуществляет доступ к данным, позволяет их создавать, менять и удалять, обеспечивает безопасность данных и т.д. В общем СУБД - это система, позволяющая создавать базы данных и манипулировать сведениями из них. А осуществляет этот доступ к данным СУБД посредством специального языка - SQL. [I]SQL[/I] - язык структурированных запросов, основной задачей которого является предоставление простого способа считывания и записи информации в базу данных. Итак, простейшая схема работы с базой данных выглядит примерно так: [IMG]http://www.site-do.ru/images/db.gif[/IMG] По характеру использования СУБД делят на однопользовательские (предназначенные для создания и использования БД на персональном компьютере) и многопользовательские (предназначенные для работы с единой БД нескольких компьютеров, объединенных в локальные сети). Вообще деление по характеру использования можно представить следующей схемой: [IMG]http://www.site-do.ru/images/db1.gif[/IMG] Не вдаваясь далее в подробности, отметим, что на сегодняшний день число используемых СУБД исчисляется десятками. Наиболее известные однопользовательские СУБД - Microsoft Visual FoxPro и Access, многопользовательские - MS SQL Server, Oracle и MySQL. В этих уроках мы будем использовать СУБД MySQL. Во-первых, она бесплатная, а во-вторых, она является стандартом де-факто у российских хост-провайдеров. Но об этом позже, а пока вернемся к основам. В определении базы данных говорится, что это сведения, которые упорядочены некоторым образом. А как собственно они упорядочены? Об этом и пойдет речь в следующем уроке |
[B]Базы данных - Урок 2. Структура базы данных[/B]
Создавая базу данных, мы стремимся упорядочить информацию по различным признакам для того, чтобы потом извлекать из нее необходимые нам данные в любом сочетании. Сделать это возможно, только если данные структурированы. Структурирование - это набор соглашений о способах представления данных. Понятно, что структурировать информацию можно по-разному. В зависимости от структуры различают иерархическую, сетевую, реляционную, объектно-ориентированную и гибридную модели баз данных. Самой популярной на сегодняшний день является реляционная структура, поэтому об остальных упомянем лишь вскользь. [B]Иерархическая структура базы данных[/B] Это древовидная структура представления информации. Ее особенность в том, что каждый узел на более низком уровне имеет связь только с одним узлом на более высоком уровне. Посмотрим, например, на фрагмент иерархической структуры базы данных "Институт": [IMG]http://www.site-do.ru/images/db2.gif[/IMG] Из структуры понятно, что на одной кафедре может работать несколько преподавателей. Такая связь называется [I]"один ко многим"[/I] (одна кафедра - много преподавателей). Но если мы попытаемся добавить в эту структуру группы студентов, то нам понадобится связь [I]"многие ко многим"[/I]: [IMG]http://www.site-do.ru/images/db3.gif[/IMG] (один преподаватель может работать со многими группами, а одна группа может учиться у многих преподавателей), а такой связи в иерархической структуре быть не может (т.к. связь может быть только с одним узлом на более высоком уровне). Это основной недостаток подобной структуры базы данных. [B]Сетевая структура базы данных[/B] По сути, это расширение иерархической структуры. Все то же самое, но существует связь [I]"многие ко многим"[/I]. Сетевая структура базы данных позволяет нам добавить группы в наш пример. Недостатком сетевой модели является сложность разработки серьезных приложений. [B]Реляционная структура базы данных[/B] Все данные представлены в виде простых таблиц, разбитых на строки и столбцы, на пересечении которых расположены данные. Подробно об этом мы будем говорить в следующих уроках, здесь же хочется отметить, что эта структура стала настоящим прорывом в развитии баз данных. [B]Объектно-ориентированные и гибридные базы данных[/B] В объектно-ориентированных базах данных данные хранятся в виде объектов, что очень удобно. Но на сегодняшний день такие БД еще распространенны, т.к. уступают в производительности реляционным. Гибридные БД совмещают в себе возможности реляционных и объектно-ориентированных, поэтому их часто называют объектно-реляционными. Примером такой СУБД является Oracle, начиная с восьмой версии. Несомненно, такие БД будут развиваться в будущем, но пока первенство остается за реляционными структурами. Поэтому именно их мы и будем изучать в последующих уроках. |
[B]Базы данных - Урок 3. Реляционные базы данных[/B]
Реляционные базы данных, как мы уже знаем, состоят из таблиц. Каждая таблица состоит из столбцов (их называют [I]полями или атрибутами[/I]) и строк (их называют [I]записями или кортежами[/I]). Таблицы в реляционных базах данных обладают рядом свойств. Основными являются следующие: [LIST][*]В таблице не может быть двух одинаковых строк. В математике таблицы, обладающие таким свойством, называют [I]отношениями[/I] - по-английски relation, отсюда и название - реляционные. [*]Столбцы располагаются в определенном порядке, который создается при создании таблицы. В таблице может не быть ни одной строки, но обязательно должен быть хотя бы один столбец. [*]У каждого столбца есть уникальное имя (в пределах таблицы), и все значения в одном столбце имеют один тип (число, текст, дата...). [*]На пересечении каждого столбца и строки может находиться только атомарное значение (одно значение, не состоящее из группы значений). Таблицы, удовлетворяющие этому условию, называют [I]нормализованными[/I]. [/LIST] Все будет понятнее на примере. Предположим, мы захотели создать базу данных для форума. У форума есть зарегистрированные пользователи, которые создают темы и оставляют сообщения в этих темах. Эта информация и должна храниться в базе данных. Теоретически (на бумаге) мы можем все это расположить в одной таблице, например, так: [IMG]http://www.site-do.ru/images/db4.gif[/IMG] Но это противоречит свойству атомарности (одно значение в одной ячейке), а в столбцах Темы и Сообщения у нас предполагается неограниченное количество значений. Значит, нашу таблицу надо разбить на три: Пользователи, Темы и Сообщения. [IMG]http://www.site-do.ru/images/db5.gif[/IMG] Наша таблица Пользователи удовлетворяет всем условиям. А вот таблицы Темы и Сообщения - нет. Ведь в таблице не может быть двух одинаковых строк, а где гарантия, что один пользователь не оставит два одинаковых сообщения, например: [IMG]http://www.site-do.ru/images/db6.gif[/IMG] Кроме того, мы знаем, что каждое сообщение обязательно относится к какой-либо теме. А как это можно узнать из наших таблиц? Никак. Для решения этих проблем, в реляционных базах данных существуют [I]ключи[/I]. [I]Первичный ключ[/I] (сокращенно РК - primary key) - столбец, значения которого во всех строках различны. Первичные ключи могут быть логическими (естественными) и суррогатными (искусственными). Так, для нашей таблицы Пользователи первичным ключом может стать столбец e-mail (ведь теоретически не может быть двух пользователей с одинаковым e-mail). На практике лучше использовать суррогатные ключи, т.к. их применение позволяет абстрагировать ключи от реальных данных. Кроме того, первичные ключи менять нельзя, а что если у пользователя сменится e-mail? Суррогатный ключ представляет собой дополнительное поле в базе данных. Как правило, это порядковый номер записи (хотя вы можете задавать их на свое усмотрение, контролируя, чтобы они были уникальны). Давайте внесем поля первичных ключей в наши таблицы: [IMG]http://www.site-do.ru/images/db7.gif[/IMG] [IMG]http://www.site-do.ru/images/db8.gif[/IMG] [IMG]http://www.site-do.ru/images/db9.gif[/IMG] Теперь каждая запись в наших таблицах уникальна. Нам осталось установить соответствие между темами и сообщениями в них. Делается это также при помощи первичных ключей. В таблицу сообщения мы добавим еще одно поле: [IMG]http://www.site-do.ru/images/db10.gif[/IMG] Теперь понятно, что сообщение с id=2 принадлежит теме "О рыбалке" (id темы = 4), созданной Васей, а остальные сообщения принадлежать теме "О рыбалке" (id темы = 1), созданной Кириллом. Такое поле называется [I]внешний ключ[/I] (сокращенно FK - foreign key). Каждое значение этого поля соответствует какому-либо первичному ключу из таблицы "Темы". Так устанавливается однозначное соответствие между сообщениями и темами, к которым они относятся. Последний нюанс. Предположим, у нас добавился новый пользователь, и зовут его тоже Вася: [IMG]http://www.site-do.ru/images/db11.gif[/IMG] Как мы узнаем, какой именно Вася оставил сообщения? Для этого поля автор в таблицах "Темы" и "Сообщения" мы сделаем также внешними ключами: [IMG]http://www.site-do.ru/images/db12.gif[/IMG] [IMG]http://www.site-do.ru/images/db13.gif[/IMG] Наша база данных готова. Схематично ее можно представить так: [IMG]http://www.site-do.ru/images/db14.gif[/IMG] В нашей маленькой базе данных всего три таблички, а если бы их было 10 или 100? Понятно, что сразу невозможно представить все таблицы, поля и связи, которые нам могут понадобиться. Именно поэтому проектирование базы данных начинается с ее концептуальной модели, которую мы и рассмотрим в следующем уроке. |
Часовой пояс GMT +4, время: 17:53. |
Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot