Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

НОВЫЙ КУРС БД 2013

.pdf
Скачиваний:
15
Добавлен:
18.05.2015
Размер:
3.49 Mб
Скачать

Предисловие

Цель данного курса – дать слушателям общие принципы и приемы при проектировании баз данных. Научить основам администрирования и способам эффективного использования баз данных в постоянно меняющихся условиях реальной жизни.

Данный курс представляет собой выдержки из различных источников, а

также собственный опыт разработки и эксплуатации баз данных. Основной книгой, на основе которой был написан данный курс, является книга Роберта Виейры «Программирование баз данных MS SQL Server 2005 Базовый курс». Я

категорически рекомендую эту книгу к самостоятельному изучению. Помимо этого в статье была использована книга Владислава Пирогова «SQL Server 2005. Программирование клиент-серверных приложений», которую я тоже рекомендую к прочтению. В качестве источников в отдельных главах использовались несколько сайтов, часть ссылок на которые приведена в этих главах.

Помимо выдержек из различных источников, данный курс содержит собственный опыт разработки баз данных и рекомендации о том, как лучше поступить в конкретной ситуации и, какие инструменты СУБД нужно использовать.

2

ГЛАВА 1. Введение в теорию информации. ....................................................................

5

1.1

Основы информатики. ...............................................................................................

5

1.2

Множества и основы реляционной алгебры. Логика и бинарные операции......

7

1.2.1 «Множества» ........................................................................................................

7

1.2.2 «Логика» .............................................................................................................

10

1.3

Базы данных и СУБД...............................................................................................

12

1.3.1 Основные понятия .............................................................................................

12

1.3.2 Виды СУБД ........................................................................................................

12

1.3.3 Виды баз данных ...............................................................................................

13

ГЛАВА 2. АСПЕКТ СТРУКТУРЫ РМД. .......................................................................

16

2.1

Основные понятия РБД. ..........................................................................................

16

2.2

Виды связей ..............................................................................................................

18

2.3

Этапы проектирования баз данных. ER –модели. Проблематика

 

проектирования ..............................................................................................................

18

2.3.1 Концептуальный уровень .................................................................................

19

2.3.2 Логический уровень ..........................................................................................

19

2.3.3 Физический уровень..........................................................................................

20

2.3.4 Проблемы проектирования...............................................................................

21

2.4

Нормальные формы .................................................................................................

23

ГЛАВА 3. АСПЕКТ МАНИПУЛЯЦИИ РМД................................................................

25

3.1 Основные сведения о MS SQL Server......................................................................

25

3.1.1 История SQL. .....................................................................................................

25

3.1.2 Основные объекты MS SQL Server..................................................................

25

3.2

Язык TSQL................................................................................................................

28

3.2.1 Язык TSQL и типы данных SQL Server ..........................................................

28

3.2.2 Операторы TSQL для манипуляции объектами SQL Server. (CREATE,

 

ALTER, DROP) ...........................................................................................................

29

3.2.3 Операторы TSQL для манипуляции данными (SELECT, INSERT, DELETE,

UPDATE). ....................................................................................................................

31

3.2.4 Создание связей между таблицами .................................................................

35

3.3

Создание таблиц и связей в среде SQL Server. ......................................................

37

3.4

Соединения и объединения.....................................................................................

45

3.4.1 INNER JOIN .......................................................................................................

46

3.4.2 OUTER JOIN (LEFT и RIGTH) ........................................................................

47

3.4.3 FULL JOIN..........................................................................................................

47

3.4.4 CROSS JOIN.......................................................................................................

47

3.4.5 UNION ................................................................................................................

48

3.5

Групповые операции и агрегирующие функции ..................................................

48

3.6

Дополнительные сведения о запросах ....................................................................

49

3.6.1 Ключевые слова ALL, DISTINCT и TOP ........................................................

49

3.6.2 Спецификация вычисляемого столбца............................................................

50

3.6.3 Вложенные запросы. .........................................................................................

50

3.6.4 Производные таблицы. .....................................................................................

53

ГЛАВА 4. АСПЕКТ ЦЕЛОСТНОСТИ РМД .................................................................

56

4.1

Ограничения. ............................................................................................................

56

 

 

3

4.1.1 Общие сведения об ограничениях. ..................................................................

56

4.1.2 Ограничения сущностей. ..................................................................................

58

4.1.3 Ограничения домена. ........................................................................................

59

4.1.4 Ограничения ссылочной целостности.............................................................

61

4.1.5 Отмена действий ограничений.........................................................................

65

4.2 Сценарии, пакеты и специальные команды SQL. ................................................

66

4.2.1 Специальные команды SQL в сценариях........................................................

69

4.2.2 Пакеты и команда GO .......................................................................................

74

4.2.3 Динамическое программирование на TSQL...................................................

75

4.3 Хранимые процедуры..............................................................................................

81

4.3.1 Общие сведения о хранимых процедурах. .....................................................

81

4.3.2 Обработка ошибок в процедурах. Операторы Try…Catch ...........................

86

4.3.3 Дополнительные сведения о процедурах........................................................

90

4.4 Пользовательские функции ....................................................................................

90

4.5 Транзакции и блокировки .......................................................................................

93

4.5.1

Основные понятия о транзакциях...................................................................

93

4.5.2

Основные понятия о блокировках ..................................................................

95

4.5.3. Проблемы, решаемые с помощью блокировок .............................................

95

4.5.4. Уровни изоляции транзакций..........................................................................

97

4.5.5 Уровни блокировок и эскалация блокировок................................................

99

4.6 Триггеры .................................................................................................................

101

4.6.1 Общие сведения о триггерах и DDL триггеры.............................................

101

4.6.2 DML триггеры..................................................................................................

103

Приложение 1 Типы данных SQL Server (2005 версия)..............................................

107

Приложение 2. Максимальные размеры и количества для различных объектов SQL

Server.................................................................................................................................

 

109

Приложение 3. Установка SQL Server’a .......................................................................

113

4

ГЛАВА 1. Введение в теорию информации.

1.1 Основы информатики.

Прежде чем подойди к вопросу о базах данных, определимся с понятиями информации и данных. Что такое информация и данные, и какая между ними разница?

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

Данные – формализованная (т.е. пригодная для обработки и передачи) и интересующая нас в текущем процессе часть информации. Т.е. по сути данные также являются информацией.

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

ИНФОРМАЦИЯ

Процесс получения данных (может быть различным:

чтение книг, опрос людей и пр.)

Данные 1

::::::::::::

Данные N

 

 

 

ИНФОРМАЦИЯ (полученная из данных)

В свою очередь полученное множество данных также является информацией для другого процесса

Процесс получения данных (может быть различным:

чтение книг, опрос людей и пр.)

Новые Данные 1

::::::::::::

Новые Данные N

 

 

 

И т.д. данный процесс бесконечен

Информация является одним из видов ресурсов и наравне с людскими или земельными ресурсами может соревноваться в стоимости. Например, информация о дефолте в России в 1998 году, например, в 1997 году стоила бы огромных денег. Однако сейчас данная информация не стоит ничего, поскольку одним из важнейших свойств информации является ее актуальность.

5

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

Отвечая на вопрос «как хранить информацию?», еще в глубокой древности, людьми был придуман очень простой и эффективный метод кодирования информации с помощью знаковых систем. Для начала, опять же, определимся, что значит кодирование информации и, что значит знаковая система.

Знаковая система – набор знаков (графических, звуковых или иных сигналов) и правил определенного типа для записи информационного сообщения. Любая знаковая система включает эти два аспекта: набор знаков, называемый алфавитом системы, из которого строятся информационные сообщения и второй аспект - правила записи и чтения информации. Ярким пример знаковой системы является русский язык с его алфавитом и правилами написания слов и предложений, математика с ее множеством функций, формул и цифр, а также любые другие системы, которые передают какие-либо смысловые значения, т.е. несут некую информацию.

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

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

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

Перекодирование – преобразование знаков из одной знаковой системы в знаки другой знаковой системы. Ярким примером служит математическое преобразование числа из одной системы счисления в другую. Например, число 10 в десятичной системе и число X в римской системе.

Определившись с вопросом как хранить информацию, люди начали задумываться над вопросом, где ее хранить? И ответ на этот вопрос был обусловлен формой знаков в используемых знаковых системах. А именно графической формой представления информации, поскольку информация представленная в виде звуковых и иных видах волн нашими предками технически не могла быть подвергнута хранению. Точнее все воспринимаемые человеком виды волн хранятся в мозге, однако процесс извлечения, а тем более передачи этой информации ограничен человеческими возможностями, а именно речевыми описаниями (или жестами) и графическим

представлением. Поэтому графический способ представления информации стал основным способом для хранения и передачи информации. Сначала люди изображали знаки на земле, потом на глине, затем рисовали на камнях и скалах, на дереве и др. поверхностях. Смена поверхности и способ нанесения были обусловлены долговечностью хранения информации. И с появлением первых вычислительных машин, появилась возможность хранить информацию в электронном виде, т.е. в виде сигналов. С развитием техники и технологий, необходимая, для хранения единицы информации поверхность, все уменьшалась и сейчас так называемая flash память позволяет хранить огромное количество информации на 1 кв. см поверхности. Дальнейшие разработки в области нано технологий приведут к еще большему снижению требуемой площади на единицу информации.

Вся компьютерная техника построена на двоичной системе счисления и информацию, в ней принято измерять в битах. Бит – минимальная единица измерения информации. Он может принимать 2 состояния – 0 и 1. Для того чтобы привести информацию понятную человеку в форму понятную компьютеру, ее нужно закодировать в двоичной системе исчисления. На рисунке 1 приведена таблица кодирования символов для различных кодировок операционных систем.

И соответственно, от того, сколько бит выделяется под каждый символ, зависит, сколько памяти он будет занимать. Аналогичными способами кодируется звук и графика.

1.2 Множества и основы реляционной алгебры. Логика и бинарные операции.

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

1.2.1 «Множества»

Итак, начнем с понятия множества. Что такое множество? Множество – это одно из ключевых понятий математики. Его можно определить так:

Множество – совокупность объектов (как материальных, так и нематериальных),

объединенная в группу по определённому признаку и воспринимаемая как единое целое.

Одно из первых определений принадлежит Георгу Кантору (нем. Математик 18-19 века). Он определил множество как «единое имя для совокупности всех объектов, обладающих данным свойством».

7

Объекты, из которых состоит множество, называют элементами или точками множества. Множества принято обозначать большими буквами латинского алфавита, его элементы — маленькими.

Если а — элемент множества А, то записывают а А (а принадлежит А).

Если а не является элементом множества А, то записывают а А (а не принадлежит А). Каждый элемент множества уникален, и в множестве не может быть двух идентичных элементов: {6, 11} =

{11, 6} = {11, 11, 6, 11}.

Однако в математике также существуют мультимножества, которые могут включать один и тот же элемент несколько раз.

Мультимножество — множество, допускающее включение одного и того же

элемента по нескольку раз.

Число элементов в мультимножестве, с учетом повторяющихся элементов, называется его размером или мощностью. Забегая вперед, скажу, что любая таблица в БД реляционного типа является множеством записей и не может являться мультимножеством, и поэтому мы не будем использовать мультимножества при проектировании БД реляционного типа.

В математике часто исследуются так называемые числовые множества, т.е. множества, элементами которых являются числа. Для самых основных числовых множеств утвердились следующие обозначения: (от менее сильных к более)

N- множество всех натуральных чисел (ОТ 0 ДО );

Z- множество всех целых чисел (N + все целые отрицательные числа);

Q- множество всех рациональных чисел (Z + все рациональные дроби);

I – множество всех иррациональных чисел ( , , ) R- множество всех действительных чисел.(Q + I)

Способы задания множества:

Множество А считается заданным, если относительно любого объекта а можно установить, принадлежит этот объект множеству А или не принадлежит; другими словами, если можно определить, является ли а элементом множества А или не является. Существуют два основных способа задания множества:

1)перечисление элементов множества;

2) указание характеристического свойства элементов множества, т.е. такого свойства, которым обладают все элементы данного множества, и только они.

Первым способом особенно часто задаются конечные множества. Например, множество студентов учебной группы задаётся их списком. Множество, состоящее из элементов a, b, c, … ,d ,обозначают с помощью фигурных скобок: А={a; b; c; …;d} . Множество корней уравнения х25х+6=0 состоит из двух чисел 2 и 3: А={2; 3}. Множество В целых решений неравенства -2 < х < 3 состоит из чисел –1, 0, 1, 2, поэтому В={–1; 0; 1; 2}.

Второй способ задания множества является более универсальным. Множество элементов х, обладающих данным характеристическим свойством Р(х), также записывают с помощью фигурных скобок: Х={х | Р (х)}, и читают: множество Х состоит из элементов х, таких, что выполняется свойство Р(х). Например, А={х | х2-5х+6=0}. Решив уравнение х2-5х+6=0, мы можем записать множество А первым способом: А={2; 3}.

Другой пример: Х={х | -1 ≤ х < 4, х Z}, т.е. Х есть множество целых чисел х, таких, что –1 ≤ х < 4, значит, по-другому: Х={-1; 0; 1; 2; 3}.

Может случиться, что характеристическим свойством, определяющим множество А, не обладает ни один объект. Тогда говорят, что множество А - пустое (не содержит ни одного элемента) и пишут: А= .

устое множество — множество, не содержащее ни одного элемента. Оно входит в любое множество.

ниверсальное множество — множество, содержащее все мыслимые объекты. ниверсальное множество единственно. Любое множество включено в универсальное.

8

Отношения между множествами:

Для двух множеств А и В можно определить следующие отношения между ними:

1) включено в , если каждый элемент множества принадлежит также и множеству :

Каждое множество является подмножеством самого себя: Х Х.

2) включает , если включено в :

3) равно , если и включены друг в друга:

4) строго включено в , если включено в , но не равно ему то же что и 1:

5) строго включает , если строго включено в то же что и 4:

6) и не пересекаются, если у них нет общих элементов:

и не пересекаются

Операции между множествами:

Для двух множеств А и В можно определить следующие операции:

Произведение множеств

Пусть даны два множества X и Y. Прямое произведение множества X и множества Y есть такое множество , элементами которого являются упорядоченные пары (x,y) для

всевозможных и . Например А{1,2,3} и B{a,b} произведением будет множество

{1а,1b,2a,2b,3a,3b}

Дополнение множества B

U = B B

__

B = U \ B

Пересечение множеств

Пусть A={1,2,3,4} B={3,4,5,6} , то пересечение будет {3,4}

9

Объединение множеств

Пусть A={1,2,3,4} B={3,4,5,6}, то объединение будет {1,2,3,4,5,6}

Разность множеств

Пусть A={1,2,3,4} B={3,4,5,6} , то разность A-B будет ={1,2, } и B- A={5,6}

Симметрическая разность

Пусть A={1,2,3,4} B={3,4,5,6}, то разность A-B будет ={1,2,5,6 }

1.2.2 «Логика»

Далее перейдем к рассмотрению раздела «Логика». И начнем мы с самых простых понятий: Что такое логика? Что является основой логики?

Логика – раздел философии, изучающий способы получения знаний об объекте или явлении путем последовательных рассуждений в форме доказательств и опровержений.

Логика неразрывно связана с мышлениями и рассуждениями, и логичность мышления формируется в человеке с ранних лет, и он может мыслить логически, даже не осознавая этого. Вся логика основана на последовательном рассуждении – т.е. что из чего следует. Основная цель логики – исследование того, как из одних утверждений можно выводить другие на основе знаний. Т.е. важным составляющим рассуждений являются знания об объектах или явлениях и их связях. Следствие можно определить, только зная хотя бы предварительный результат явлений. Представим немного абсурдный пример: пусть человеку говорят, что сегодня ожидаются осадки, но он не знает слово осадки и не может его связать, скажем, с дождем и не берет зонт и как следствие промокает. Так и в реальной жизни нельзя вывести следствие из высказываний, в которых используются незнакомые понятия.

Мы не будем вдаваться в «дебри» логики и вернемся к основным понятиям, как мы выяснили, в логике все строится на знаниях и рассуждениях или высказываниях. Если знания это информация об объектах, явлениях и связях между ними, то, что же такое высказывание?

Высказывание (рассуждение) – это повествовательное предложение, про которое можно определенно сказать истинно оно или ложно.

Самая большая опасность таиться в знаниях, точнее в трактовке этих знаний. Поскольку понятия со временем меняются или видоизменяются, может случиться очень неприятная ситуация. Простой пример: сейчас люди, говоря, база данных, подразумевают именно

10