ekz_bd (865929), страница 2
Текст из файла (страница 2)
(№студ –>фамилия)2) транзитивная зависимость: А–>Б, Б–>C, А–>Б–>С (№студ –> фамилия –> дата рождения)ТЕОРИЯ НОРМАЛЬНЫХ ОТНОШЕНИЙТри формы отношений:1НФ – все атрибуты имеют простые значения2НФ – находится в 1НФ + все неключевые атрибуты зависят от составного первичного ключа вцелом3НФ – 2НФ +отсутствуют транзитивная зависимость неключевых атрибутов между собойЕсли все отношения в 3НФ, то аномалии отсутствуют. Делим отношение на несколько других –переход от ненормализированного состояния к 3НФПРИМЕР:№экз, Предмет,индекс группы,ФИО преп,Должность преп,№студ,ФИО студ,Аудитория,Дата/время, Оценка, Оклад преп.№экзПредмет36БДИндексгруппыРК6-42ФИОпреподаПивовароваДолжность№студФИОстудАудиторияДата/времяОценкаОклад1НФ: делим ФИО на 3 атрибута (Ф, И, О)2НФ: делаем предположение, что каждый экзамен может преподавать только один преподаватель,тогда номер предмета может быть однозначно определен по №экзамена1)2)3)№экзамена№экзпредмет№ студента№студентаИндексгруппыоценка№преподФамилия студентаФамилияпреподаИндекс группыДолжностьпреподаокладаудиторияДата/время3НФ: отношение 2) разбиваем на три других4)№экзаменаПредметИндекс группы5)№преподаФамилия препода6)ДолжностьОклад№преподаАудиторияДата/времядолжность13) Как создаются таблицы в базе данных на этапе физической реализации.Задача – написать командыSQL сервер предоставляет разработчику язык, с помощью которого можно:1) создавать и редактировать БД2) извлекать информацию из БДЯОП (язык описания данных) – создание, редактированиеЯМД (язык манипулирования данными) – извлечение данных1) CREATE DATABASE <имя БД> ; создание БД, сервер выделяет память минимального объемапод БД (по умолчанию в качестве настройки)определение создаваемой2) CREATE TABLE <tbl_name>(<create_definition>) ;таблицыENGINE <tbl_type> ;2а) <create_difinition>Col_name col_type [NULL|NOT NULL] [AUTO_INCREMENT];[…] необязательносчетчикилиPRIMARY KEY (<col_name>)илиCONSTRAINT <symbol> FOREIGN KEY <symbol> (<col_name>)<reference_difinition> ;2b) <reference_difinition>REFERENCES tbl_name (<col_name>)[ON DELETE <ref_option>][ON UPDATE <ref_option>]2c) <ref_option>DESTRICT|CASCADEТипы данных поддерживаются My SQL Server в таблицах (М – количество байтщв)INTSMALLINTDOUBLEINTCHAR(M)VARCHAR(M)FLOAT[(M.D)]DOUBLFLOAT[(M.D)]DECIMAL(M.D)4б2б8бУсечение при сокращенииПри извлечении данных4б[…] - необязательно8бХранится как символьная строкаDATE YYYY-MM-DDTIME HH-MM-SSDATETIME YYYY-MM-DDHH-MM-SS14) Теоретико-множественные операторы реляционной алгебры.Язык манипулирования данными основан на двух математических аппаратах: реляционнойалгебре и на реляционном исчислении.
Реляционная алгебра состоит из наборов операторов.Аргументы – отношения (таблицы), результаты операций – отношения. = 1 (1 , 2 , … , )Реляционная алгебра является замкнутой, т.е. реляционные операторы можно подставлять вкачестве аргументов.Неименованн = 1 (2 (2 ), … , ( ))ое отношениеТеоретико-множественные операторы(объединение, пересечение, вычитание и декартовопроизведение). Некоторые ТМО требуют, чтобы аргументы были совместимыми по типу.Будем называть отношения совместимыми по типу, если они имеют иднтичные заголовки(отношения имеют одно и то же множество имен атрибутов), и атрибуты с одинаковыми именамиопределены на одних и тех же доменах.StudentPeople‘Иванов’‘гайка’s-idnamep-id s-id name‘Петров’‘шайба’ПРИМЕР:1) объединение двух совместимых отношений А и Б –отношение с тем же заголовком, что и у А иБ, и телом состоящим из кортежей или к А или к Б, или обоим одновременно.A UNION B2) перечисление отношение с тем же названием и телом, состоящим из кортежей, принадлежащихобоим отношениям.A INTERECT B3) вычитание тело состоит из кортежей принадлежащих А, но не принадлежащих Б.A MINUS B4) декартово произведение не обязательно совместимых по типу двух отношений А и Бназывается отношение, заголовок которого является сцеплением двух заголовков отношений А иБ, а тело состоит из сцепления кортежей из отношений А и Б.A TIMES B15) Специальные операторы реляционной алгебры.1) выборка (селекция) на отношение А с условием С – отношение с тем же заголовком, что и у Аи состоит из кортежей, удовлетворяющих условию С.A WHERE C //горизонтальный срез(A WHERE зарплата > 2000)2) проекция отношения А по атрибутам x, y, z называется отношение с заголовком xyz и телом,соединяющие кортежи.A [x, y, z]//вертикальный срезА [фамилия, зарплата]3) соединение отношений А и Б по условию С – декартово отношение только того, чтоудовлетворяет условию С.(A TIMES B) WHERE CВ зависимости от условия С существует несколько видов соединенияа) тэта-соединение х (<, >, <=, >=, =) yA [x(–//–)y]b) экви-соединение х = уА [х = у] //частный случай тэта-соединенияОтвет на вопрос: какие детали поставляются какими поставщиками даёт следующая комбинацияP [PNUM = PNUM] PDЭто соединение приведет к тому, что появляются два совершенно одинаковых столбца.
Этонеудобно => один из них надо убрать. Естественное соединение A JOIN B. Естественноесоединение эквивалентно следующей последовательности:1) выполнить декартово произведение2) выборка по одинаковым значениям атрибутов, имеющих одинаковые имена3) выполнить проекцию, удалить повторяющиеся атрибутыПРИМЕР:Получить имена поставщиков поставляющих деталь №2.((DP JOIN P) WHERE DNUM = 2) [PNAME]или((DP WHERE DNUM = 2) JOIN P) PNAME16) Что такое транзакции в базе данных?Это набор действий по изменению состояния БД, который должен либо выполниться полностью,либо не выполниться вообще.Типичный пример: перевод денег с одного счета на другой (два UPDATE).Поэтому поддержка транзакций – одно из основных свойств SQL серверов.Специальные операторы, обозначающие начало и конец транзакции:START TRANSACTION<набор файлов>COMMIT; либо ROLLBACK;Программист отвечает за выбор установки COMMIT или ROLLBACK.Свойства транзакций:ASID1) атомарность – тр-ция выполняет либо все действия входящие в её тело, либо ни одного.2) согласованность (consistancy) – тр-ция начинается на состоянии когда нет ошибок изавершается так же в согласованном режиме.3) изолированность – тр-ции не должны влиять друг на друга при выполнении.4) устойчивость (duration) – результаты работы тр-ции должны оставаться неизменными втечение длительного времени.17) Опишите двухфазный протокол фиксации транзакций.Пример с биржей/акции.
Очевидно, самая большая проблема –многопользовательский режим –много пользователей выполняет одни и те же действия.Как SQL Server управляет транзакциями? Для обеспечения свойства атомарности SQL Serverподдерживает 2хфазный протокол фиксации: ведется журнал транзакции (изменений) – в My SQL– двойной журнал.Фазы:1 фаза: постепенно выполняет действия, составляющие тело транзакции и вносит изменения вБД, параллельно заполняет журнал транзакций.2 фаза:а) COMMIT – все отлично, изменения в БД внесены, запись в журнале создана. Так завершается98% транзакций.b) ROLLBACK – из журнала транзакций последовательно достает все действия и возвращает БД кизначальному состоянию, в журнале ставит пометку о ROLLBACKзамечание : это упрощенный вид.
Есть кэш-область, куда вносятся изменения прежде всего.18) Уровни изоляции транзакций.Уровни:1) грязное чтениетр2 считала данные, которые затем будут удалены.2) неповторяющееся чтениетр2 прочитала сначала одни данные, а затем уже другие3) фантомытр2 читает одни данные, затем снова их читает, а там уже новая запись-фантомИсправление неточностей:1*) уровень изоляции READ COMMITTED (запрещает считывание недоизмененной записи)2*) READ REPEATFBLE (запрет на изменение считанных незавершенных транзакций)3*) SERIALIZABLE (запрет делать INSERT в данные незавершенной транзакции)Все эти уровни изоляции по « принципу матрёшки» включают запреты предыдущих уровней.В БД устанавливается глобальный уровень транзакции, как правило, READ COMMITEDОднако программист имеет возможность устанавливать необходимый уровень изоляции наопределенную транзакцию: SET IZOLATION LEVEL SERIALIZABLE ;По умолчанию, если программист не устанавливает START TRANSACTION (начало) и еезавершение (COMMIT), то каждый оператор (INSERT, UPDATE, DELETE) считается отдельнойтранзакцией – AUTOCOMMITAUTPCOMMIT = 019) Для чего необходимы блокировки при многопользовательском доступе к базе данных.В такой транзакции считывается 500.
Затем тр1 вычисляет 510, тр2 520. Первая записывается,затем при записи второй теряется данные тр1. В итоге получаем 520, а не 530.Что бы решить проблемы потери первоначальных данных при занесении последующих надоиспользовать наложение блокировок. Они необходимы, но снижается производительностьсистемы. Чем больше область, на которую накладывается блокировка (запись –> лист –> кэш ),тем легче это сделать (затрачивается меньше ресурсов).20) Что такое индексные файлы и для чего они применяются. Опишите, как будет выполнятьсязапрос для фрагмента, приведенного на рисунке.Select * from Student where name =’Иванов’;Индексный файл – это таблица. Поиск происходит быстрее, если данные упорядочены.Индексирование упрощает поиск данных (ускоряет его).
При этом в самой таблицеупорядочивание не происходит. Данные выносятся в отдельный файл с названием INDEX.Считаем, что объем страницы 10 Кбайт и обмен между диском и ОП идет страницами.Индексные файлы сохраняются в большом количестве, поэтому их можно больше хранить.Индексные файлы не “плоские”, а иерархические.Свойства:1) упорядоченные2) короткие 3) иерархическиеВ учебных целях предполагаем, что на каждой стадии индексного файла подержится 3 записи.
Изкорневого индекса считывается первый индекс, и осуществляется переход на 2 уровень. На второмуровне находится данное значение, которое больше (Петров) и происходит возвращение на однузапись (Котов). И по указателю переходим на страницу 3 уровня.