Мегаобучалка Главная | О нас | Обратная связь


Система обозначений для описания синтаксиса языка SQL



2019-07-03 236 Обсуждений (0)
Система обозначений для описания синтаксиса языка SQL 0.00 из 5.00 0 оценок




ОГЛАВЛЕНИЕ

введение. 5

Глава 1. Организация хранения данных. 6

Глава 2. Реляционные базы данных. 8

2.1. Основные принципы построения реляционных баз данных. 8

2.2. Реляционная модель данных. 9

2.3. Табличное представление данных; нормализация отношений. 13

2.4. Нереляционные операции с данными в базе. 20

Глава 3. Основы языка SQL. 21

3.1. Унификация доступа к данным.. 22

3.2. Язык управления доступом к данным.. 23

3.3. Язык определения данных. 24

3.4. Язык управления порядком доступа к данным.. 24

3.5. Данные и метаданные. 25

3.6. Уровни реализации языка SQL.. 25

Глава 4. Управление доступом в SQL. 26

4.1. Выборка данных. Команда Select 26

4.2. Добавление данных. Команда INSERT. 34

4.3. Обновление данных. Команда Update. 35

4.4. Удаление данных. Команда Delete. 36

4.5. Дополнительные возможности команд изменения данных. 36

4.6. Работа с DML в Oracle. 37

4.7. Встроенные функции. 40

Глава 5. Описание данных на основе SQL. 44

5.1. Организация данных в InterBase. Типы данных. 44

5.2. Домены.. 46

5.3. Таблицы.. 49

5.4. Индексы.. 53

5.5. Исключения. 56

Глава 6. Средства обработки данных внутри базы данных. 57

6.1. Триггеры и их назначение. 57

6.2. Хранимые процедуры и функции и их назначение. 58

6.3. SQL для триггеров, функций и хранимых процедур в InterBase. 59

6.4. SQL для триггеров, функций и хранимых процедур в Oracle (PL/SQL) 75

6.5. Команды создания, удаления, модификации триггеров и работа с ними в InterBase. 88

6.6. Команды создания, удаления, модификации триггеров и работа с ними в Oracle. 92

6.7. Команды создания, удаления, модификации хранимых процедур; работа с ними в InterBase 94

6.8. Команды создания, удаления, модификации хранимых процедур; работа с ними в Oracle 99

6.9. Команды создания, удаления, модификации пользовательских функций; работа с ними в InterBase. 99

6.10. Команды создания, удаления, модификации функций; работа с ними в Oracle. 103

Глава 7. Расширенные возможности для работы с базой. 104

7.1. Обзоры (представления) 104

7.2. Триггеры для обзоров (представлений) 107

7.3. Работа с обзорами (представлениями) в Oracle. 110

7.4. Данные BLOB.. 111

7.5. Функции пользователя (UDF) 112

7.6. Модули (пакеты) package. 115

7.7. Динамическое формирование операторов SQL на этапе выполнения. 121

Глава 8. Организация хранения метаданных. 125

8.1. Назначение и порядок использования метаданных. 125

8.2. Системные таблицы.. 126

Глава 9. Администрирование базы данных. 126

9.1. Управление доступом к данным.. 126

9.2. Копирование и восстановление базы данных. 129

Глава 10. Транзакции. Механизм транзакций. 130

10.1. Понятие транзакции. Назначение транзакций. 130

10.2. Реализация механизма транзакций в InterBase. 136

Глава 11. Разработка приложений для работы с базами данных. 140

11.1. Разработка приложений на C++ Builder и Delphi 141

11.1. Настройка BDE.. 141

11.2. Организация доступа к объектам базы данных. 145

11.3. Разработка клиент – серверных приложений. 147

Глава 12. Обработка агрегатных данных. OLAP технология. 149

12.1. Формальная модель данных. 149

12.2. Назначение и структура хранилища данных. 152

12.3. Создание и поддержка актуальности хранилища данных. 161

12.4. Программные комплексы для реализации хранилищ данных. 167

12.5. Виртуальные и «самодельные» хранилища данных. 173

Приложение. Описание структуры базы данных примеров (TESTBASE) 175


Введение

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

Излагаемый курс можно условно разделить на четыре части. В первой части (главы 1-2) рассматриваются общие принципы построения баз данных, прежде всего реляционных, и основы реляционной алгебры. Вторая часть (главы 3-8) посвящена языку работы с базами данных – SQL. В третьей части (главы 9-11) излагается механизмы функционирования SQL серверов и основные подходы построения приложений для работы с ними. В четвертой части (глава 12) рассматриваются задачи автоматизации анализа данных, основанные на применении OLAP технологий.

В качестве базового SQL сервера, если не оговаривается иное, в книге используется InterBase, кроме того рассматриваются возможности работы в среде Oracle. В приложении приведена структура и состав учебной базы. Все примеры в книге протестированы в среде Firebird 2.5, 3.0.

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


 

Гла­ва 1. Ор­га­ни­за­ция хра­не­ния дан­ных

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

Ие­рар­хи­че­ская мо­дель

Пер­вые ие­рар­хи­че­ские и се­те­вые СУБД бы­ли соз­да­ны в на­ча­ле 60-х го­дов, что бы­ло вы­зва­но не­об­хо­ди­мо­стью управ­ле­ния мил­лио­на­ми свя­зан­ных друг с дру­гом за­пи­сей. Наибольшую известность из них получила сис­те­ма IMS (Information Management System ком­па­нии IBM).

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

Дос­то­ин­ст­ва ие­рар­хи­че­ской мо­де­ли дан­ных:

1. от­но­си­тель­ная про­сто­та ор­га­ни­за­ции дан­ных;

2. вы­со­кая ско­рость дос­ту­па, как по по­ис­ку, так и по об­нов­ле­нию дан­ных, имею­щих по сво­ей су­ти ие­рар­хи­че­скую струк­ту­ру.

Ог­ра­ни­че­ния ие­рар­хи­че­ской мо­де­ли:

3. от­сут­ст­вие яв­но­го раз­де­ле­ния ло­ги­че­ских и фи­зи­че­ских ха­рак­те­ри­стик мо­де­ли;

4. для пред­став­ле­ния не­ие­рар­хи­че­ских от­но­ше­ний дан­ных тре­бу­ют­ся до­пол­ни­тель­ные ма­ни­пу­ля­ции;

5. не­пред­ви­ден­ные за­про­сы мо­гут тре­бо­вать ее ре­ор­га­ни­за­ции.

Се­те­вая мо­дель

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

Се­те­вая мо­дель дан­ных – это пред­став­ле­ние дан­ных се­те­вы­ми струк­ту­ра­ми. Раз­ра­бо­тан­ные в 1971 го­ду CODASYL (Conference on Data Systems Languages) DTBG (Database Task Group) стан­дар­ты сис­тем управ­ле­ния ба­за­ми дан­ных ос­та­ют­ся ос­нов­ной фор­му­ли­ров­кой се­те­вой мо­де­ли. На ос­но­ве этой мо­де­ли раз­ра­бо­тан ряд се­те­вых сис­тем управ­ле­ния ба­за­ми дан­ных, в том чис­ле та­кие из­вест­ные ком­мер­че­ские реа­ли­за­ции, как IDS (Honeywell) и IDMS (Computer Associates).

В се­те­вой мо­де­ли су­ще­ст­ву­ет две ос­нов­ные струк­ту­ры дан­ных: ти­пы за­пи­сей и на­бо­ры.

Тип за­пи­сей. Со­во­куп­ность ло­ги­че­ски свя­зан­ных эле­мен­тов дан­ных.

На­бор. В мо­де­ли DTBG от­но­ше­ние один ко мно­гим ме­ж­ду дву­мя ти­па­ми за­пи­сей.

Про­стая сеть. Струк­ту­ра дан­ных, в ко­то­рой все би­нар­ные от­но­ше­ния име­ют мощ­ность один ко мно­гим.

Слож­ная сеть. Струк­ту­ра дан­ных, в ко­то­рой би­нар­ные от­но­ше­ния могут име­ть мощ­ность мно­гие ко мно­гим.

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

В мо­де­ли DBTG воз­мож­ны толь­ко про­стые се­ти. Все от­но­ше­ния име­ют мощ­ность один к од­но­му или один ко мно­гим, тем не менее, введением ис­кус­ст­вен­ных за­пи­сей, состоящих только из полей связей, на базе простых сетей реализуются и сложные.

Дос­то­ин­ст­ва се­те­вой мо­де­ли дан­ных:

6. гиб­кая ор­га­ни­за­ции дан­ных и, со­от­вет­ст­вен­но, воз­мож­ность пред­став­ле­ния в ба­зе са­мых раз­но­об­раз­ных дан­ных;

7. воз­мож­ность обес­пе­че­ния ис­клю­чи­тель­но вы­со­кой ско­ро­сти по­ис­ка.

Ог­ра­ни­че­ния се­те­вой мо­де­ли:

8. слож­ность про­це­дур об­нов­ле­ния дан­ных, свя­зан­ная с не­об­хо­ди­мо­стью пе­ре­строе­ния сис­те­мы свя­зей;

9. труд­ность под­дер­жа­ния ло­ги­че­ской це­ло­ст­но­сти дан­ных, вы­со­кий уро­вень рис­ка при воз­ник­но­ве­нии сбой­ных си­туа­ций.

Ре­ля­ци­он­ная мо­дель

В 1970–1971 го­дах Е.Ф.Кодд ввел ре­ля­ци­он­ную мо­дель дан­ных и ре­ля­ци­он­ные язы­ки об­ра­бот­ки дан­ных – ре­ля­ци­он­ную ал­геб­ру и ре­ля­ци­он­ное ис­чис­ле­ние [1, 2].

Ре­ля­ци­он­ная ал­геб­ра – про­це­дур­ный язык об­ра­бот­ки ре­ля­ци­он­ных таб­лиц.

Ре­ля­ци­он­ное ис­чис­ле­ние – не­про­це­дур­ный язык соз­да­ния за­про­сов.

Все су­ще­ст­вую­щие к то­му вре­ме­ни под­хо­ды к свя­зы­ва­нию за­пи­сей из раз­ных фай­лов ис­поль­зо­ва­ли фи­зи­че­ские ука­за­те­ли или ад­ре­са на дис­ке, которые меняются при реорганизации данных. Ре­ля­ци­он­ная мо­дель, ос­но­ван­ная на ло­ги­че­ских от­но­ше­ни­ях дан­ных, естественно преодолевает эти проблемы.

Су­ще­ст­ву­ет два под­хо­да к про­ек­ти­ро­ва­нию ре­ля­ци­он­ной ба­зы дан­ных.

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

Вто­рой под­ход ос­но­ван на ме­ха­ни­че­ском пре­об­ра­зо­ва­нии функ­цио­наль­ной мо­де­ли, соз­дан­ной ра­нее, в нор­ма­ли­зо­ван­ную ре­ля­ци­он­ную мо­дель. Этот под­ход ча­ще все­го ис­поль­зу­ет­ся при про­ек­ти­ро­ва­нии боль­ших слож­ных схем баз дан­ных, не­об­хо­ди­мых для кор­по­ра­тив­ных ин­фор­ма­ци­он­ных сис­тем.

Гла­ва 2. Ре­ля­ци­он­ные ба­зы дан­ных

2.1. Ос­нов­ные прин­ци­пы по­строе­ния ре­ля­ци­он­ных баз дан­ных

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

Клас­си­че­ская ре­ля­ци­он­ная мо­дель дан­ных пред­по­ла­га­ет, что дан­ные хра­ни­лись в так на­зы­вае­мых пло­ских таб­ли­цах. Фак­ти­че­ски дан­ные мо­гут быть ор­га­ни­зо­ва­ны и ина­че, но поль­зо­ва­те­ли и при­ло­же­ния, об­ра­щаю­щие­ся к дан­ным, долж­ны ра­бо­тать с дан­ны­ми так, как ес­ли бы они раз­ме­ща­лись в та­ких таб­ли­цах. В уп­ро­щен­ном ви­де пло­ская таб­ли­ца – это таб­ли­ца, ка­ж­дая ячей­ка ко­то­рой мо­жет быть од­но­знач­но иден­ти­фи­ци­ро­ва­на ука­за­ни­ем стро­ки и столб­ца таб­ли­цы. Кро­ме то­го, в од­ном столб­це все ячей­ки долж­ны со­дер­жать дан­ные од­но­го про­сто­го ти­па. Точ­ное оп­ре­де­ле­ние по­ня­тия «пло­ская таб­ли­ца» да­ет­ся в ре­ля­ци­он­ной мо­де­ли дан­ных.

2.2. Ре­ля­ци­он­ная мо­дель дан­ных

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

От­но­ше­ния и кор­те­жи

Под­мно­же­ст­во R = {(a1, a2,…,an) | aiÎAi} де­кар­то­во­го про­из­ве­де­ния мно­жеств A1´A2´…´An на­зы­ва­ет­ся от­но­ше­ни­ем сте­пе­ни n (n-ар­ным от­но­ше­ни­ем).

Эле­мен­ты мно­же­ст­ва r Î R (r = (a1, a2,…,an)) на­зы­ва­ют­ся кор­те­жа­ми.

Мощ­ность мно­же­ст­ва кор­те­жей, вхо­дя­щих в от­но­ше­ние R, на­зы­ва­ют мощ­но­стью от­но­ше­ния R.

Ес­ли мно­же­ст­во R ко­неч­ное, а при ра­бо­те с ба­за­ми дан­ных это все­гда так, то мощ­ность – это про­сто чис­ло кор­те­жей в от­но­ше­нии.

По­ня­тие от­но­ше­ния фак­ти­че­ски ле­жит в ос­но­ве всей ре­ля­ци­он­ной тео­рии баз дан­ных. От­но­ше­ния яв­ля­ют­ся ма­те­ма­ти­че­ским ана­ло­гом таб­лиц. В са­мом де­ле, мно­же­ст­во i-ых эле­мен­тов ai кор­те­жей мож­но трак­то­вать как i-ый стол­бец таб­ли­цы, а сам кор­теж – как ее стро­ку. При этом при­ро­да от­дель­ных эле­мен­тов кор­те­жей не име­ет зна­че­ния. Важ­но толь­ко то, что все они од­но­тип­ны (при­над­ле­жат од­но­му мно­же­ст­ву Ai).

Сам тер­мин «ре­ля­ци­он­ное пред­став­ле­ние дан­ных», впер­вые вве­ден­ный Код­дом, про­ис­хо­дит от тер­ми­на relation, по­ни­мае­мом имен­но в смыс­ле это­го оп­ре­де­ле­ния.

По­сколь­ку лю­бое подмно­же­ст­во мож­но рас­смат­ри­вать как де­кар­то­вое про­из­ве­де­ние сте­пе­ни 1, то его мож­но счи­тать от­но­ше­ни­ем сте­пе­ни 1. Это сви­де­тель­ст­вую­щий лишь о том, что тер­ми­ны «от­но­ше­ние сте­пе­ни 1» и «под­мно­же­ст­во» яв­ля­ют­ся си­но­ни­ма­ми. Не­три­ви­аль­ность по­ня­тия от­но­ше­ния про­яв­ля­ет­ся, ко­гда сте­пень от­но­ше­ния боль­ше 1. Клю­че­вы­ми здесь яв­ля­ют­ся два мо­мен­та: во-пер­вых, все эле­мен­ты от­но­ше­ния есть од­но­тип­ные кор­те­жи; во-вто­рых, за ис­клю­че­ни­ем край­не­го слу­чая, ко­гда от­но­ше­ние есть са­мо де­кар­то­во про­из­ве­де­ние A1 ´A2 ´… ´An, от­но­ше­ние вклю­ча­ет в се­бя не все воз­мож­ные кор­те­жи из де­кар­то­во­го про­из­ве­де­ния. Это зна­чит, что от­но­ше­ние за­да­ет кри­те­рий, по­зво­ляю­щий оп­ре­де­лить, ка­кие эле­мен­ты де­кар­то­ва про­из­ве­де­ния A1 ´A2 ´… ´An удов­ле­тво­ря­ют ему, а ка­кие – нет. Этот кри­те­рий, по су­ще­ст­ву, и оп­ре­де­ля­ет смысл (се­ман­ти­ку) от­но­ше­ния.

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

На­при­мер, от­но­ше­ние, со­стоя­щее из трех сле­дую­щих кор­те­жей {(1, "Ива­нов", 32), (2, "Пет­ров", 41), (3, "Си­до­ров", 64)} мож­но счи­тать таб­ли­цей, со­дер­жа­щей дан­ные о со­труд­ни­ках и их воз­рас­те и состоящей из трех стро­к и трех ко­лон­ок, при­чем в ка­ж­дой ко­лон­ке со­дер­жат­ся дан­ные од­но­го ти­па. С прак­ти­че­ской точ­ки зре­ния та­кая таб­ли­ца, ес­ли это све­де­ния о со­труд­ни­ках, пло­ха, по­сколь­ку дан­ные в ней при­дет­ся периодически об­нов­лять, луч­ше ука­зать год ро­ж­де­ния; ес­ли же это дан­ные о ме­ди­цин­ском об­сле­до­ва­нии, то она оп­ти­маль­на, ина­че не­об­хо­ди­мо бы­ло бы да­вать и год ро­ж­де­ния, и год об­сле­до­ва­ния. С точ­ки зре­ния ана­ли­за от­но­ше­ний, это не име­ет зна­че­ния, а вот на­ли­чие пер­во­го столб­ца су­ще­ст­вен­но. Ес­ли в таб­ли­цу бу­дут до­бав­лять­ся стро­ки, то нет га­ран­тии, что не поя­вит­ся Ива­нов "Вто­рой". Для таб­ли­цы это не­су­ще­ст­вен­но, но все эле­мен­ты мно­же­ст­ва, долж­ны быть раз­ли­чи­мы, а зна­чит, в на­шем от­но­ше­нии не мо­жет быть двух оди­на­ко­вых кор­те­жей. На­ли­чие же пер­во­го столб­ца с но­ме­ром по­зво­лит нам от­ли­чить Ива­но­ва "Пер­во­го" от Ива­но­ва "Вто­ро­го".

Опе­ра­ции с от­но­ше­ния­ми

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

Тео­ре­ти­ко-мно­же­ст­вен­ные опе­ра­то­ры: объ­е­ди­не­ние, пе­ре­се­че­ние, вы­чи­та­ние, де­кар­то­во про­из­ве­де­ние.

Спе­ци­аль­ные ре­ля­ци­он­ные опе­ра­то­ры: вы­бор­ка, про­ек­ция, со­еди­не­ние, де­ле­ние.

Не все они яв­ля­ют­ся не­за­ви­си­мы­ми, т.е. не­ко­то­рые из этих опе­ра­то­ров мо­гут быть вы­ра­же­ны че­рез дру­гие.

Опе­ра­тор объ­е­ди­не­ния

Пусть R1, R2 Ì A1 ´A2 ´… ´An, ai Î Ai, то­гда от­но­ше­ние
R= R1 È R2 на­зы­ва­ет­ся объ­е­ди­не­ни­ем R1, R2, т.е.

R = {rt = (a1t, a2t,…,ant) | rt ÎR1 или rt ÎR2}.

Опе­ра­тор пе­ре­се­че­ния

Пусть R1, R2 Ì A1´A2´…´An, ai Î Ai, то­гда от­но­ше­ние
R = R1 Ç R2 на­зы­ва­ет­ся пе­ре­се­че­ни­ем R1, R2, то есть
R = {rt = (a1t, a2t,…,ant) | rt ÎR1 и rt ÎR2}.

Опе­ра­тор вы­чи­та­ния

Пусть R1, R2 Ì A1 ´ A2 ´… ´An, ai Î Ai, то­гда от­но­ше­ние

R = R1 \ R2 на­зы­ва­ет­ся вы­чи­та­ни­ем R1, R2, то есть

R = {rt = (a1t, a2t,…,ant) | rt ÎR1 и rt ÏR2}.

Опе­ра­тор де­кар­то­во­го про­из­ве­де­ния

Пусть R1 Ì A1 ´ A2 ´… ´ An, R2 Ì B1 ´ B2 ´… ´Bm, ai Î Ai, bi Î Bi, то­гда от­но­ше­ние R = R1 ´ R2 на­зы­ва­ет­ся де­кар­то­вым про­из­ве­де­ни­ем R1, R2, то есть

R = {rt = (a1t, a2t,…,ant, b1t, b2t,…,bmt) | (a1t, a2t,…,ant) ÎR1 и (b1t, b2t,…,bmt) ÎR2}.

Опе­ра­тор вы­бор­ки

Пусть R1 Ì A1´A2´…´An, ai Î Ai, P – предикат на A1´A2´…´An, то­гда от­но­ше­ние R = (R1,P)= {rt = (a1t, a2t,…,ant) | rt ÎR1 и P(rt) = ис­ти­на} на­зы­ва­ет­ся вы­бор­кой (се­лек­ци­ей) R1 по P.

Опе­ра­тор про­ек­ции

Пусть R1 Ì A1 ´ A2 ´… ´ An, ai Î Ai, то­гда от­но­ше­ние R = R1[ k1, k2,..., km] =

на­зы­ва­ет­ся про­ек­ци­ей R1 по (k1, k2,…,km).

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

Опе­ра­тор со­еди­не­ния

Опе­ра­тор со­еди­не­ния оп­ре­де­ля­ет­ся че­рез опе­ра­то­ры де­кар­то­во­го про­из­ве­де­ния и вы­бор­ки:

R = ((S ´ T), P)

 Для опе­ра­то­ра ес­те­ст­вен­но­го со­еди­не­ния до­бав­ля­ет­ся опе­ра­тор про­ек­ции, то есть

R = ((S ´ T), P) [k1, k2, . . . , km]

Удоб­нее его обо­зна­чать по-другому. Пусть S={s}, T={t} от­но­ше­ния на мно­же­ст­вах столб­цов (X,U) и (X,V) со­от­вет­ст­вен­но, то есть s=(x1, x2,…,xf,u1, u2,…,ug), t=(x1, x2,…,xf, v1, v2,…,vh), то­гда R = S ÄX T = { rn = (x1n, x2n,…,xfn,u1n, u2n,…,ugn, v1n, v2n,…,vhn) | для "n $sk, tm, что для i Î (1, f) xin=xik=xim (xin Î rn, xik Î sk, xim Î tm)}.

Опе­ра­тор де­ле­ния

Пусть R1 Ì A1 ´ A2 ´… ´ An ´ B1 ´ B2 ´… ´Bm, R2 Ì B1 ´B2 ´… ´Bm, то­гда де­ле­ни­ем от­но­ше­ний R1 и R2 бу­дем на­зы­вать от­но­ше­ние R Ì A1 ´A2 ´… ´ An , R = R1/R2 такое, что R ´ R2 Ì R1 и для " R3, та­кого, что R Ì R3 и R3 ¹ R, R3 ´ R2 Ë R1. От­но­ше­ние R1 вы­сту­па­ет в ро­ли де­ли­мо­го, от­но­ше­ние R2 в ро­ли де­ли­те­ля, от­но­ше­ние R в ро­ли ча­ст­но­го от де­ле­ния. Де­ле­ние от­но­ше­ний в оп­ре­де­лен­ном смыс­ле ана­ло­гич­но де­ле­нию с ос­тат­ком для чи­сел.

Как уже от­ме­ча­лось, пе­ре­чис­лен­ные опе­ра­то­ры яв­ля­ют­ся, во­об­ще го­во­ря, за­ви­си­мы­ми. Од­на­ко из них мож­но вы­де­лить груп­пу не­за­ви­си­мых опе­ра­то­ров. На­при­мер, груп­па: объ­е­ди­не­ние, вы­чи­та­ние, де­кар­то­во про­из­ве­де­ние, вы­бор­ка, про­ек­ция или объ­е­ди­не­ние, пе­ре­се­че­ние. Опе­ра­то­ры та­кой груп­пы на­зы­ва­ют при­ми­тив­ны­ми.Со­став та­ких опе­ра­то­ров за­ви­сит от вы­бо­ра ба­зо­вой груп­пы (ли­бо пер­вая, ли­бо вто­рая).

2.3. Таб­лич­ное пред­став­ле­ние дан­ных; нор­ма­ли­за­ция от­но­ше­ний

По­строе­ние ба­зы дан­ных как сис­те­мы взаи­мо­свя­зан­ных таб­лиц яв­ля­ет­ся не­про­стой за­да­чей [3, 4, 5] основ­ное тре­бо­ва­ние со­сто­ит в том, что­бы при по­строе­нии ба­зы дан­ных из­бе­жать дуб­ли­ро­ва­ния дан­ных. При этом де­ло со­сто­ит не столь­ко в рос­те объ­е­мов хра­ни­мой ин­фор­ма­ции, сколь­ко в труд­но­сти обес­пе­че­ния их со­гла­со­ван­но­сти. Ес­ли дан­ные о тех­ни­че­ских ха­рак­те­ри­сти­ках обо­ру­до­ва­ния бу­дут хра­нить­ся в не­сколь­ких таб­ли­цах, на­при­мер таб­ли­цах, со­дер­жа­щих све­де­ния об ус­та­нов­лен­ном обо­ру­до­ва­нии, таб­ли­цах на­ли­чия обо­ру­до­ва­ния на скла­дах, таб­ли­цах спи­сан­но­го обо­ру­до­ва­ния, то из­ме­не­ния све­де­ний об от­дель­ном уз­ле по­тре­бу­ет­ся вно­сить во мно­же­ст­во строк в не­сколь­ких таб­ли­цах. При этом труд­но га­ран­ти­ро­вать пол­но­ту вне­се­ния из­ме­не­ний, что мо­жет при­вес­ти к про­ти­во­ре­чи­ям при вы­бор­ке и об­ра­бот­ке дан­ных, а это уже со­всем не­до­пус­ти­мо. По­след­нее оз­на­ча­ет, что все дан­ные долж­ны быть нор­ма­ли­зо­ва­ны с це­лью исключения дуб­ли­ро­ва­ния и, со­от­вет­ст­вен­но, од­но­крат­но­сти вво­да или из­ме­не­ния при мно­го­крат­но­сти ис­поль­зо­ва­ния дан­ных. На прак­ти­ке, ко­неч­но, для ус­ко­ре­ния по­ис­ка дан­ных оп­ре­де­лен­ное дуб­ли­ро­ва­ние до­пус­ка­ет­ся. Важ­но лишь, что­бы оно бы­ло за­ра­нее из­вест­но и кон­тро­ли­ро­ва­лось. Обыч­но это от­но­сит­ся к аг­ре­ги­ро­ван­ным дан­ным или дан­ным, по­лу­чен­ным в ре­зуль­та­те спе­ци­аль­ной об­ра­бот­ки.

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

Рас­смот­рим под­роб­нее про­це­ду­ры нор­ма­ли­за­ции.

Пер­вая нор­маль­ная фор­ма

Таб­ли­ца на­хо­дит­ся в Пер­вой Нор­маль­ной Фор­ме (1НФ), ес­ли она пред­став­ля­ет со­бой ото­бра­же­ние от­но­ше­ния. Это оз­на­ча­ет, что:

• все дан­ные в ка­ж­дом из ее столб­цов од­но­тип­ны;

• дан­ные ка­ж­до­го столб­ца эле­мен­тар­ны (ато­мар­ны), то есть с точ­ки зре­ния дан­но­го при­ло­же­ния не име­ют внут­рен­ней струк­ту­ры и долж­ны об­ра­ба­ты­вать­ся как еди­ное це­лое;

• все стро­ки таб­ли­цы раз­лич­ны.

Пе­ре­чис­лен­ные тре­бо­ва­ния, по су­ще­ст­ву, три­ви­аль­ны, тем не менее, они очень важ­ны. На­ру­ше­ние их прак­ти­че­ски де­ла­ет не­кон­тро­ли­руе­мой ло­ги­че­скую це­ло­ст­ность хра­ни­мых дан­ных. Все бо­лее вы­со­кие фор­мы нор­ма­ли­за­ции таб­лиц ба­зи­ру­ют­ся на 1НФ.

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

Под­мно­же­ст­во ат­ри­бу­тов K от­но­ше­ния R бу­дем на­зы­вать по­тен­ци­аль­ным клю­чом, ес­ли K об­ла­да­ет сле­дую­щи­ми свой­ст­ва­ми:

10. свой­ст­вом уни­каль­но­сти – в от­но­ше­нии не мо­жет быть двух раз­лич­ных кор­те­жей с оди­на­ко­вым зна­че­ни­ем K;

11. свой­ст­вом не­из­бы­точ­но­сти – ни­ка­кое соб­ст­вен­ное под­мно­же­ст­во в K не об­ла­да­ет свой­ст­вом уни­каль­но­сти.

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

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

От­но­ше­ние мо­жет иметь не­сколь­ко по­тен­ци­аль­ных клю­чей. Тра­ди­ци­он­но один из по­тен­ци­аль­ных клю­чей объ­яв­ля­ет­ся пер­вич­ным, а ос­таль­ные – аль­тер­на­тив­ны­ми. Раз­ли­чия ме­ж­ду пер­вич­ным и аль­тер­на­тив­ны­ми клю­ча­ми мо­гут быть важ­ны в кон­крет­ной реа­ли­за­ции ре­ля­ци­он­ной СУБД, но с точ­ки зре­ния ре­ля­ци­он­ной мо­де­ли дан­ных, нет ос­но­ва­ний вы­де­лять та­ким об­ра­зом один из по­тен­ци­аль­ных клю­чей.

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

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

Вто­рая Нор­маль­ная Фор­ма

От­но­ше­ние R на­хо­дит­ся во вто­рой нор­маль­ной фор­ме (2НФ) то­гда и толь­ко то­гда, ко­гда от­но­ше­ние на­хо­дит­ся в 1НФ и нет не­клю­че­вых ат­ри­бу­тов, за­ви­ся­щих от час­ти слож­но­го клю­ча. (Не­клю­че­вой ат­ри­бут – это ат­ри­бут, не вхо­дя­щий в со­став ни­ка­ко­го по­тен­ци­аль­но­го клю­ча). Ес­ли не­ко­то­рое мно­же­ст­во ат­ри­бу­тов за­ви­сит от дру­го­го мно­же­ст­ва ат­ри­бу­тов, то пер­вое мно­же­ст­во бу­дем на­зы­вать за­ви­си­мой ча­стью функ­цио­наль­ной за­ви­си­мо­сти, а вто­рое – его де­тер­ми­нан­том.

От­ме­тим, что, ес­ли по­тен­ци­аль­ный ключ от­но­ше­ния яв­ля­ет­ся про­стым, то от­но­ше­ние ав­то­ма­ти­че­ски на­хо­дит­ся в 2НФ.

Тре­тья Нор­маль­ная Фор­ма

Ат­ри­бу­ты на­зы­ва­ют­ся вза­им­но не­за­ви­си­мы­ми, ес­ли ни один из них не яв­ля­ет­ся функ­цио­наль­но за­ви­си­мым от дру­го­го.

От­но­ше­ние R на­хо­дит­ся в треть­ей нор­маль­ной фор­ме (3НФ) то­гда и толь­ко то­гда, ко­гда от­но­ше­ние на­хо­дит­ся в 2НФ и все не­клю­че­вые ат­ри­бу­ты вза­им­но не­за­ви­си­мы.

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

Нор­маль­ные фор­мы вы­со­ких по­ряд­ков

В боль­шин­ст­ве слу­ча­ев нор­ма­ли­за­ции до уров­ня треть­ей нор­маль­ной фор­мы (3НФ) впол­не дос­та­точ­но, что­бы раз­ра­ба­ты­вать впол­не ра­бо­то­спо­соб­ные ба­зы дан­ных. В то же вре­мя в не­ко­то­рых слу­ча­ях это­го уров­ня ока­зы­ва­ет­ся не­дос­та­точ­но из-за труд­но­стей с под­дер­жа­ни­ем ло­ги­че­ской це­ло­ст­но­сти дан­ных при об­нов­ле­нии ин­фор­ма­ции. Свя­за­но это с тем, что в 3НФ мо­гут со­хра­нять­ся не­ко­то­рые функ­цио­наль­ные за­ви­си­мо­сти.

НФБК (Нор­маль­ная Фор­ма Бой­са–Код­да)

При при­ве­де­нии от­но­ше­ний с по­мо­щью ал­го­рит­ма нор­ма­ли­за­ции к от­но­ше­ни­ям в 3НФ не­яв­но пред­по­ла­га­лось, что все от­но­ше­ния со­дер­жат один по­тен­ци­аль­ный ключ. Это не все­гда вер­но. Пусть от­но­ше­ние со­дер­жит два со­став­ных по­тен­ци­аль­ных клю­ча A+B и A+C и на­бор не­клю­че­вых ат­ри­бу­тов D. C и B на­хо­дят­ся в пря­мой за­ви­си­мо­сти друг от дру­га, то­гда во всех кор­те­жах, где встре­ча­ет­ся B, встре­ча­ет­ся и C. На­ли­цо из­бы­точ­ность. В то же вре­мя дан­ное от­но­ше­ние на­хо­дит­ся в 3НФ, по­сколь­ку не со­дер­жит не­клю­че­вых ат­ри­бу­тов, за­ви­ся­щих от час­ти слож­но­го клю­ча и не со­дер­жит за­ви­си­мых друг от дру­га не­клю­че­вых ат­ри­бу­тов.

В то же вре­мя лег­ко мож­но, раз­бив дан­ное от­но­ше­ние на 2 (B, C) и (A, B, D) или (A, C, D), уст­ра­нить из­бы­точ­ность. При та­ком дей­ст­вии уст­ра­ня­ет­ся за­ви­си­мость ме­ж­ду час­тя­ми по­тен­ци­аль­но­го клю­ча.

От­но­ше­ние R на­хо­дит­ся в нор­маль­ной фор­ме Бой­са–Код­да (НФБК) то­гда и толь­ко то­гда, ко­гда де­тер­ми­нан­ты всех функ­цио­наль­ных за­ви­си­мо­стей яв­ля­ют­ся по­тен­ци­аль­ны­ми клю­ча­ми.

4НФ и 5НФ (4-ая и 5-ая нор­маль­ные фор­мы)

В ря­де слу­ча­ев за­ви­си­мость ме­ж­ду ат­ри­бу­та­ми мо­жет при­сут­ст­во­вать, но при этом не быть од­но­знач­ной. На­при­мер, ес­ли от­но­ше­ние (A, B, C) да­же на­хо­дит­ся в нор­маль­ной фор­ме Бой­са–Код­да (НФБК), то это еще не оз­на­ча­ет, что его нель­зя пред­ста­вить в ви­де эк­ви­ва­лент­ной па­ры от­но­ше­ний (A, B) и (A, C). В по­след­нем слу­чае го­во­рят, что ат­ри­бу­ты (или груп­пы ат­ри­бу­тов) B и C на­хо­дят­ся в мно­го­знач­ной за­ви­си­мо­сти от A. Ес­ли та­кой за­ви­си­мо­сти не су­ще­ст­ву­ет, а зна­чит нель­зя про­вес­ти и эк­ви­ва­лент­ное раз­бие­ние от­но­ше­ния, то от­но­ше­ние на­хо­дит­ся в чет­вер­той нор­маль­ной фор­ме (4НФ).

Эк­ви­ва­лент­ность груп­пы от­но­ше­ний дан­но­му от­но­ше­нию оз­на­ча­ет, что со­еди­не­ние от­но­ше­ний этой груп­пы сов­па­да­ет с дан­ным от­но­ше­ни­ем.

Не­воз­мож­ность раз­бие­ния от­но­ше­ния на эк­ви­ва­лент­ную па­ру от­но­ше­ний опять же еще не оз­на­ча­ет от­сут­ст­вие за­ви­си­мо­стей внут­ри от­но­ше­ния. Пусть от­но­ше­ние об­ра­зу­ют ат­ри­бу­ты (груп­пы ат­ри­бу­тов) A, B, C, и от­но­ше­ние (A, B, C) на­хо­дит­ся в 4НФ. Од­на­ко мо­жет су­ще­ст­во­вать раз­бие­ние от­но­ше­ния на груп­пу из трех от­но­ше­ний (A, B), (A, C), (B,C), эк­ви­ва­лент­ных дан­но­му от­но­ше­нию. Ес­ли не су­ще­ст­ву­ет раз­бие­ния дан­но­го от­но­ше­ния ни на ка­кую груп­пу от­но­ше­ний, эк­ви­ва­лент­ную дан­но­му, то от­но­ше­ние на­хо­дит­ся в пя­той нор­маль­ной фор­ме (5НФ).

Отметим, что нор­ма­ли­за­ция к 4НФ и 5НФ воз­мож­на толь­ко в от­но­ше­ни­ях, не со­дер­жа­щих за­ви­си­мых столб­цов. Их сле­ду­ет рас­смат­ри­вать, как таб­ли­цы до­пус­ти­мых ком­би­на­ций со­став­ляю­щих их ат­ри­бу­тов, что можно ис­поль­зо­вать для вход­но­го кон­тро­ля дан­ных.

Свя­зи ме­ж­ду дан­ны­ми, ло­ги­че­ская це­ло­ст­ность дан­ных

Хра­ни­мые в ба­зе дан­ные таб­ли­цы ло­ги­че­ски свя­за­ны ме­ж­ду со­бой. В ча­ст­но­сти, од­ним из ре­зуль­та­тов про­це­дур нор­ма­ли­за­ции дан­ных яв­ля­ет­ся по­яв­ле­ние мно­же­ст­ва ло­ги­че­ски свя­зан­ных таб­лиц. В об­щем слу­чае мож­но го­во­рить о на­ли­чии пря­мой свя­зи ме­ж­ду таб­ли­ца­ми, ес­ли таб­ли­ца A со­дер­жит пер­вич­ный или уни­каль­ный ключ таб­ли­цы B.

С дру­гой сто­ро­ны, сам по се­бе факт, что дан­ные таб­ли­цы A де­та­ли­зи­ру­ют дан­ные таб­ли­цы B, ни­как не мо­жет по­ме­шать нам до­ба­вить в таб­ли­цу A но­вые стро­ки, для ко­то­рых не бу­дет со­от­вет­ст­вую­щих строк в таб­ли­це В. На­при­мер, ес­ли таб­ли­ца B со­дер­жит пе­ре­чень под­раз­де­ле­ний, а таб­ли­ца A – спи­сок со­труд­ни­ков, то нель­зя га­ран­ти­ро­вать, что у нас не поя­вят­ся со­труд­ни­ки «ни­ка­ко­го» под­раз­де­ле­ния, то есть не опи­сан­но­го в таб­ли­це B, под­раз­де­ле­ния. В по­доб­ных слу­ча­ях ре­зуль­та­ты ра­бо­ты про­грамм мо­гут ока­зать­ся не­ожи­дан­ны­ми.

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

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

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



2019-07-03 236 Обсуждений (0)
Система обозначений для описания синтаксиса языка SQL 0.00 из 5.00 0 оценок









Обсуждение в статье: Система обозначений для описания синтаксиса языка SQL

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (236)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.012 сек.)