БАЗЫ ДАННЫХ. СУБД MYSQL - ЛЕКЦИЯ

Страница создана Родион Комаров
 
ПРОДОЛЖИТЬ ЧТЕНИЕ
Лекция

Базы данных. СУБД MySQL
Глоссарий

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

СУБД – Система управления базами данных.

Реляционные БД – база данных, основанная на реляционной модели данных. Слово
«реляционный» происходит от англ. relation («отношение», «зависимость», «связь»).

Сущность (entity) - Сущности могут моделировать конкретные понятия (клиенты,
товары, звонки) и абстрактные (агент отвечает за клиента, студент записан на курс).

Кортеж (запись) - Попросту говоря, кортеж - это набор именованных значений заданного
типа или 1 запись, строка в таблице БД.

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

При проектировании базы данных решаются две основных проблемы:

  1. Каким образом отобразить объекты предметной области в абстрактные объекты
     модели данных, чтобы это отображение не противоречило семантике предметной
     области и было по возможности лучшим (эффективным, удобным и т.д.)? Часто эту
     проблему называют проблемой логического проектирования баз данных.

  2. Как обеспечить эффективность выполнения запросов к базе данных, т.е. каким
     образом, имея в виду особенности конкретной СУБД, расположить данные во
     внешней памяти, создание каких дополнительных структур (например, индексов)
     потребовать и т.д.? Эту проблему называют проблемой физического проектирования
     баз данных.
Информационная избыточность – термин из теории информации, означающий
превышение количества информации, используемой для передачи или хранения сообщения,
над его информационной энтропией. Информационная избыточность ведет не только к
увеличению требуемого объема памяти для хранения информации содержащейся в базе
данных.

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

Ссылочная целостность (Referential Integrity) — необходимое качество реляционной базы,
заключающееся в отсутствии в любом её отношении внешних ключнй, ссылающихся на
несуществующие кортежи.
Связи, типы связей (между таблицами/сущностями).

Один к одному. Тип связи при котором 1 записи из таблицы А соотв. 1 запись таблицы Б.
Пример: Студент – Профиль. (у 1-го студента только 1 профиль)

Один ко многим (много к одному). Тип связи при котором 1 записи из таблицы А соотв.
Несколько записей таблицы Б.
Пример: Студент – Группа. (У студента как правило, только 1 группа, но в той же группе –
много студентов.)

Многие ко многим. Тип связи в котором несколько записей из таблицы А соотв. Нескольким
записям таблицы Б. Пример: Студент - предмет или студент – преподаватель. У студента
множество предметов, и один и тот же предмет читается у многих студентов.
Ключи.

Первичный ключ (PRIMARY) - служит как ограничение целостности в рамках одной
таблицы для однозначной идентификации, конкретно поле первичного ключа не может
повторятся или быть пустым.

Внешний ключ (FOREIGN) - служит как ограничение целостности связей нескольких
таблиц, конкретно подчиненная таблица не может ссылаться на несуществующие записи
главной таблицы(что позволяет строить целостные модели данных).
SQL

SQL (Structured query language) — «язык структурированных запросов» — формальный
непроцедурный язык, применяемый для создания, модификации и управления данными в
произвольной реляционной БД, управляемой соответствующей системой управления базами
данных (СУБД).

                             Типы данных в MySQL:

Наиболее часто используемые на практике типы данных, применяемые при построении
структур:

INT                          Целочисленный               10
CHAR                         Символ, набор символов      'sql'
VARCHAR                      *Строка не фиксированной    quick brown fox'
                             длины
DECIMAL                      Вещественное число          14.251
TIMESTAMP                    Штамп времени               2015-05-20 11:03:55
TEXT                         Текст                       'quick brown fox'
ENUM                         Перечисление                'stud','prep'
SET                          Набор значений              'stud','prep'
Манипуляции с данными в MySQL

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

CREATE TABLE `persons` (
   `id` int NOT NULL AUTO_INCREMENT,
   `fullname` varchar(255) NOT NULL,
   `email` varchar(255) NOT NULL,
   `phone` varchar(255) NOT NULL,
   `role` enum('student','teacher') DEFAULT 'student',
   PRIMARY KEY (`id`)
);

Удаление таблицы:
DROP TABLE `persons`

Вставка данных в таблицу:
INSERT INTO `persons` (`fullname`, `email`, `phone`) VALUES('Иванов',
'test@gmail.com', '+380938941645');

INSERT INTO `persons` SET `fullname`='Иванов', `email`='test@gmail.com',
`phobe`='+380938941645';

Выборка данных из таблицы:
SELECT * FROM `persons` WHERE `role`='teacher' ORDER BY `fullname` ASC

Модификация данных:
UPDATE `persons` SET `email`='test@yahoo.com' WHERE `email`='test@gmail.com';

Удаление данных:
DELETE FROM `persons` WHERE `id`=1;
Выборка из нескольких таблиц:

SELECT * FROM `persons` p
LEFT JOIN `courses_to_persons` ctp ON ctp.`person_id` = p.`id`
LEFT JOIN `courses` c ON c.`id` = ctp.`course_id`
GROUP BY p.`id`
Индексы.

Виды (типы) индексов в MySQL
Первичный ключ (PRIMARY KEY) – это основной ключ, который в таблице может быть
только один. Он позволяет идентифицировать уникальные записи в таблице. Значения,
которые находятся в столбце, где поля имеют PRIMARY KEY, не могут повторяться. Нередко
первичный ключ назначают для полей с идентификатором id.
Уникальный ключ (UNIQUE) – по сути, это альтернатива первичному ключу: значения,
которые содержатся в таких полях также не могут повторяться и иметь значение NULL.
Составной индекс – позволяет включать в индекс несколько полей, по которым часто
происходит выборка. Например, если в условиях часто фигурирует два параметра:

SELECT `fullname` FROM `persons` WHERE `role` = 'student'

При использовании таких запросов составной индекс по полям city и age поможет ускорить
выборку данных.

Недостатки использования индексов:
1. В процессе индексирования MySQL создает дополнительные таблицы, в которых хранятся
отсортированные данные. Однако, в большинстве случаев выгоды от быстродействия более
ощутимы, чем издержки физической памяти.
2. Запросы на вставку данных в таблицу выполняются чуть дольше, посколько MySQL
требуется создать новые индексы и реорганизовать данные в предназначеных для этого
таблицах. Но поскольку запросы на вставку выполняются реже, чем на извлечение данных,
то серьезных потерь это обычно не приносит.
Полезные ссылки:

Проектирование БД: http://zametkinapolyah.ru/zametki-o-mysql/proektirovanie-baz-dannyx-
informacionnaya-izbytochnost-izbytochnost-dannyx-v-baze-dannyx-problemy-voznikayushhie-iz-
za-informacionnoj-izbytochnosti.html

Индексы: http://poleshuk.ru/indeksy-v-mysql/

Ключи: https://sites.google.com/site/gosyvmkss12/bazy-dannyh/17-ponatie-kluca-v-bazah-dannyh-
pervicnye-i-vnesnie-kluci

Типы MySQL: http://phpclub.ru/mysql/doc/column-types.html
Вы также можете почитать