java. lecture 10. working with dbms
TRANSCRIPT
Работа с Базами Данных
Реляционная модель• Структурная часть описывает, какие объекты
рассматриваются реляционной моделью. Постулируется, что единственной структурой данных, используемой в реляционной модели, являются нормализованные n-арные отношения.
• Целостная часть описывает ограничения специального вида, которые должны выполняться для любых отношений в любых реляционных базах данных. Это целостность сущностей и целостность внешних ключей.
• Манипуляционная часть описывает два эквивалентных способа манипулирования реляционными данными - реляционную алгебру и реляционное исчисление.
Реляционная модель
• Атрибут – пара вида <имяАтрибута>:<имяДомена>• Кортеж – множество пар вида <имяАтрибута>:<значение>• Тело отношения – множество кортежей отношения• Заголовок отношения – множество атрибутов отношения• Отношение состоит из заголовка и тела
Свойства отношений
• В отношении нет одинаковых кортежей• Кортежи не упорядочены• Атрибуты не упорядочены• Все значения атрибутов атомарны
1NF
Все отношения находятся в первой нормальной форме:• В отношении нет одинаковых кортежей. • Кортежи не упорядочены. • Атрибуты не упорядочены и различаются по наименованию. • Все значения атрибутов атомарны.
1NF
NAME EXT DEPT PROJECT ISSUE
Иванов 1932 DSI (null) (null)
Владимиров 1932 DSI V72 934
Степанов 2134 RE FT 530
Сергеев 2604 APP NGI 100
Степанов 2134 RE FT 533
Андреев 1498 QA V72 935
Сергеев 2604 APP MW 97
employee_dept_project_issues
Функциональные зависимости
Пусть R - отношение. Множество атрибутов Y функционально зависимо от множества атрибутов X (X функционально определяет Y) тогда и только тогда, когда для любого состояния отношения R для любых кортежей p, r из того, что
rX = pX следует, что rY = pY
Множество атрибутов X называется детерминантом функциональной зависимости, а множество атрибутов
называется зависимой частью.
2NF
Отношение находится во второй нормальной форме (2NF) тогда и только тогда, когда отношение находится в 1NF, и в отношении нет неключевых атрибутов, функционально зависящих от первичного ключа
2NFID
NAME EXT DEPT
1 Андреев 1498 QA
2 Иванов 1932 DSI
3 Владимиров 1932 DSI
4 Сергеев 2604 APP
5 Степанов 2134 RE
PROJECT_ID CODE
1 V72
4 NGI
5 IPON
12 MW
3 FT
EMP_ID PROJECT_ID ISSUE
1 1 456
2 5 23
5 12 58
3 12 94
1 12 932
employee_projects_issues
employeesprojects
3NF
Отношение R находится в 3NF тогда и только тогда, когда оно находится в 2NF, и все его неключевые атрибуты взаимно независимы
Алгоритм нормализации
1. Задается одно или несколько отношений, отображающих понятия предметной области.
2. По модели предметной области (не по внешнему виду полученных отношений!) выписываются обнаруженные функциональные зависимости. Все отношения автоматически находятся в 1NF.
Алгоритм нормализации
Приведение к 2NF:
2. Если в некоторых отношениях обнаружена зависимость атрибутов от части сложного ключа, то проводим декомпозицию этих отношений на несколько отношений следующим образом: те атрибуты, которые зависят от части сложного ключа выносятся в отдельное отношение вместе с этой частью ключа.
Алгоритм нормализации
Приведение к 3NF:
2. Если в некоторых отношениях обнаружена зависимость некоторых неключевых атрибутов других неключевых атрибутов, то проводим декомпозицию этих отношений следующим образом: те неключевые атрибуты, которые зависят других неключевых атрибутов выносятся в отдельное отношение. В новом отношении ключом становится детерминант функциональной зависимости.
Нормальные формы
Критерий Слабо нормализованные
(1NF, 2NF)
Сильно нормализованные
(3NF)
Соответствие предметной области - +
Лёгкость разработки и сопровождения - +
Скорость выполнения вставки
и обновления
- +
Скорость выполнения выборки + -
Основы SQL
• Data Definition Language (DDL)• Data Manipulation Language (DML)• Операторы защиты и управления данными
DDL
• Управление схемами (CREATE SCHEMA, DROP SCHEMA)• Управление таблицами (CREATE TABLE, ALTER TABLE,
DROP TABLE)• Управление представлениями (CREATE VIEW, DROP VIEW)
DML
• SELECT
• INSERT
• UPDATE
• DELETE
• COMMIT
• ROLLBACK
Java Database Connectivity
Основные примитивы:• DriverManager
• Driver
• Connection
• Statement
• ResultSet