Share
Embed
Transcript
24 slides
-
• relation — отношение, зависимость, связь • Концепт появился в
1970 (доктор Кодд, IBM) -
Жесткие связи • Поиск по строке vs поиск по id
• Пример: база научных статей + ORCID/ResearcherID -
Целостность данных • Защита от логических ошибок: • Если одна
запись ссылается на другую, нельзя удалить запись, на которую ссылаются • Ссылки будут всегда работать • Или удаляйте ссылку или удаляйте обе записи -
Транзакции Какая ситуация с вашей точки зрения приемлема? • Списание
(аккаунт_1, сумма1) <сбой> Зачисление (аккаунт_2, сумма1) • Зачисление (аккаунт_2, сумма1) <сбой> Списание (аккаунт_1, сумма1) -
Модель данных • Таблицы (имя, множество колонок) • Колонки (описание
данных: имя, тип данных, дополнительные ограничения) • Записи (данные — строки по колонкам) • + База данных: имя, множество таблиц -
Язык SQL • SQL — Structured Query Language • «Язык
структурированных запросов» -
Создать таблицу CREATE TABLE Student ( id integer UNIQUE NOT
NULL, name char (30) NOT NULL , address char (50) ); -
Создать таблицу (лучше так) CREATE TABLE Student ( id integer
NOT NULL AUTO_INCREMENT, name char (30) NOT NULL, address char (50), PRIMARY KEY (id) ); -
Замечания • Для названий колонок нельзя использовать ключевые слова языка
• Можно нарваться на неочевидную ошибку • Например, в таблицу студентов нельзя добавлять колонку группа как «group» • Ее можно назвать как «grp» -
Вставить запись INSERT INTO Student ( name, address) VALUES ("Иван
Бездомный", "Большая Садовая, 302-бис, 50"); -
Выбрать записи SELECT * FROM Student WHERE address="Малая Садовая"; SELECT
ALL FROM Student WHERE address="Малая Садовая"; или -
Самостоятельно • Выбор отдельных колонок • Сложные логические условия выборки
• Поиск по подстроке: LIKE -
Программные реализации • Access (скорее мертв, чем жив, впрочем, не
в курсе) • Oracle • MySQL (был куплен Oracle) • MariaDB (ребренд MySQL) • MS SQL • PostgreSQL • EnterpriseDB (Постгрес с ынтырпрайз-патчами) • Sqlite (в каждом Андроиде) • H2 (чистая Java) • ... -
Установка и администрирование базы данных, консоль управления, выполнение запросов SQL
• Устанавливаете программный пакет, первоначальные настройки, задаете пароль администратора, запускаете сервис • Настройки безопасности системы (фаервол — открыть порт для локальной сети) • Создаете пользователя (имя + пароль) • Создаете базу (имя) • Даете пользователю разрешение на запись в базу • Запускаете консольный клиент (mysql/postgresql/…), вводите логин/пароль пользователя • Выбираете базу данных • Выполняете запросы на SQL, ответ читаете здесь же • Бывают панели управления с графическим интерфейсом -
Java: JDBC (Java database connection) • Универсальный API + драйвер
для конкретной базы данных • Скачать драйвер с сайта производителя, подключить к проекту, как обычную библиотеку • Выполнить подключение к базе и начать выполнять запросы из кода на Java -
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")); } -
Лабораторная работа 1 • Скачать драйвер JDBC для встраиваемой базы
данных H2 • Подключить драйвер к проекту Java (среда разработки: Eclipse или Netbeans или IDEA, можно другое) • Подключиться к базе из программы на Java • Создать таблицу и загрузить данные из предыдущего задания (с grep) • Выполнить 2-3 запроса SELECT -
На самостоятельное изучение • Индексы • Типы данных • Поиск
по подстроке и полнотекстовый поиск • Транзакции • Встраиваемые процедуры • Сложные запросы (комбинации таблиц) • ...