Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Базы данных - лекция2 - Реляционные базы данных

Anton
September 11, 2018

Базы данных - лекция2 - Реляционные базы данных

Anton

September 11, 2018
Tweet

More Decks by Anton

Other Decks in Education

Transcript

  1. Жесткие связи • Поиск по строке vs поиск по id

    • Пример: база научных статей + ORCID/ResearcherID
  2. Целостность данных • Защита от логических ошибок: • Если одна

    запись ссылается на другую, нельзя удалить запись, на которую ссылаются • Ссылки будут всегда работать • Или удаляйте ссылку или удаляйте обе записи
  3. Транзакции Какая ситуация с вашей точки зрения приемлема? • Списание

    (аккаунт_1, сумма1) <сбой> Зачисление (аккаунт_2, сумма1) • Зачисление (аккаунт_2, сумма1) <сбой> Списание (аккаунт_1, сумма1)
  4. Модель данных • Таблицы (имя, множество колонок) • Колонки (описание

    данных: имя, тип данных, дополнительные ограничения) • Записи (данные — строки по колонкам) • + База данных: имя, множество таблиц
  5. Язык SQL • SQL — Structured Query Language • «Язык

    структурированных запросов»
  6. Создать таблицу CREATE TABLE Student ( id integer UNIQUE NOT

    NULL, name char (30) NOT NULL , address char (50) );
  7. Создать таблицу (лучше так) CREATE TABLE Student ( id integer

    NOT NULL AUTO_INCREMENT, name char (30) NOT NULL, address char (50), PRIMARY KEY (id) );
  8. Замечания • Для названий колонок нельзя использовать ключевые слова языка

    • Можно нарваться на неочевидную ошибку • Например, в таблицу студентов нельзя добавлять колонку группа как «group» • Ее можно назвать как «grp»
  9. Вставить запись INSERT INTO Student ( name, address) VALUES ("Иван

    Бездомный", "Большая Садовая, 302-бис, 50");
  10. Выбрать записи SELECT * FROM Student WHERE address="Малая Садовая"; SELECT

    ALL FROM Student WHERE address="Малая Садовая"; или
  11. Программные реализации • Access (скорее мертв, чем жив, впрочем, не

    в курсе) • Oracle • MySQL (был куплен Oracle) • MariaDB (ребренд MySQL) • MS SQL • PostgreSQL • EnterpriseDB (Постгрес с ынтырпрайз-патчами) • Sqlite (в каждом Андроиде) • H2 (чистая Java) • ...
  12. Установка и администрирование базы данных, консоль управления, выполнение запросов SQL

    • Устанавливаете программный пакет, первоначальные настройки, задаете пароль администратора, запускаете сервис • Настройки безопасности системы (фаервол — открыть порт для локальной сети) • Создаете пользователя (имя + пароль) • Создаете базу (имя) • Даете пользователю разрешение на запись в базу • Запускаете консольный клиент (mysql/postgresql/…), вводите логин/пароль пользователя • Выбираете базу данных • Выполняете запросы на SQL, ответ читаете здесь же • Бывают панели управления с графическим интерфейсом
  13. Java: JDBC (Java database connection) • Универсальный API + драйвер

    для конкретной базы данных • Скачать драйвер с сайта производителя, подключить к проекту, как обычную библиотеку • Выполнить подключение к базе и начать выполнять запросы из кода на Java
  14. Class.forName("org.h2.Driver").newInstance(); Connection con = DriverManager.getConnection("jdbc:h2:file:./students.db"); Statement st = con.createStatement(); ResultSet

    rs = st.executeQuery("SELECT * from Student"); while(rs.next()) { System.out.println( rs.getString("name") + " " + rs.getString("address")); }
  15. Лабораторная работа 1 • Скачать драйвер JDBC для встраиваемой базы

    данных H2 • Подключить драйвер к проекту Java (среда разработки: Eclipse или Netbeans или IDEA, можно другое) • Подключиться к базе из программы на Java • Создать таблицу и загрузить данные из предыдущего задания (с grep) • Выполнить 2-3 запроса SELECT
  16. На самостоятельное изучение • Индексы • Типы данных • Поиск

    по подстроке и полнотекстовый поиск • Транзакции • Встраиваемые процедуры • Сложные запросы (комбинации таблиц) • ...