Научная статья на тему 'Преобразование заполненных таблиц к первой нормальной форме'

Преобразование заполненных таблиц к первой нормальной форме Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
183
35
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Преобразование заполненных таблиц к первой нормальной форме»

р электронной журнал

ОБРАЗОВАНИЕ

Инженерное образование Ассоциация технических университетов

#2 февраль 2007

Общие проблемы

инженерного

образования

Инженер в современной России

Наука в образовании: Электронное научное издание

CALS-технологии

Зарубежное образование

История технического прогресса

Учебные программы Будущий инженер Вне рубрик

English Library

Пресс-релизы

Библиотека

Конференции

Выставки

Форум

Доска объявлений

Архив

Переписка

Информация о проекте About project

Найти!

# Гос. регистрации 0420700025

issn 1994-0408 Ред. совет Специальности Рецензентам Авторам English Koi-8 Win

Найти выделенное

Преобразование заполненных таблиц к первой нормальной форме #2 февраль 2007

УДК 681.3.07

А.В. Брешенков

В работах [1-3] обоснована актуальность проблемы преобразования заполненных нереляционных таблиц в реляционные таблицы, сформулированы задачи преобразования, намечены пути решения отдельных задач. Здесь рассматривается одна из этих задач - избавление от сложных атрибутов в заполненных нереляционных таблицах. Простые атрибуты - это первое условие нормализации реляционных таблиц [4]. При проектировании таблиц баз данных это условие закладывается изначально. В нереляционных таблицах или в данных табличного вида оно, как правило, не обеспечивается.

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

Для формализации процесса избавления от сложных атрибутов определим необходимые понятия.

Ячейка - это фрагмент таблицы, который имеет четыре ограничителя: верхний, нижний, левый и правый. В зависимости от формата представления данных табличного вида в качестве ограничителей могут выступать пробелы, символы табуляции, точки, вертикальные линии, горизонтальные линии или другие специальные символы. В электронных таблицах ячейка имеет адрес. В связи с этим, одной из причин участия человека в процессе преобразования, является необходимость указания им символов ограничителей ячеек. Ячейка характеризуется номером строки таблицы данных и номером в строке. Таким образом, Яу - это область таблицы, выделенная ограничителями, находящаяся в i-ой строке таблицы и занимающая j-ю позицию. ЛГ(Я-) - левый ограничитель Я-; ПГ(Я-) - правый ограничитель Я-; УГ -указатель на правую или левую границу ячейки. С(Я-) - содержимое ячейки; CTi - i-ая строка.

Алгоритм избавления от сложных атрибутов выглядит следующим образом:

П1: {Подсчет числа ячеек в 1-ой, 2-ой, и 3-ей строках таблицы.}

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

М1 := 1;

УГ := ЛГ(Я11);

WHILE ПГ(Я1М1) not EMPTY M1 := M1 + 1;

М2 := 1;

УГ := ЛГ(Я21);

WHILE ПГ(Я2М2) not EMPTY M2 := M2 + 1;

М3 := 1;

УГ := ЛГ(Я31);

WHILE ПГ(Я3М3) not EMPTY M3 := M3 + 1;

IF М2 = М1 THEN GOTO П4; {нет подзаголовков}

IF (М2 > М1) and (M2 = M3) THEN GOTO П2;

IF М3 > М2 THEN GOTO П3;

{один уровень подзаголовков}

П2: k := 1;

j := 1;

УГ:= ЛГ(Я21);

WHILE j <> M2

WHILE ПГ(ЯЖ) <> ПГ (Я2Х)

C^2J)= Concat(C^1K),' ',C^2J)); j := j + 1;

БиГОР

База и Г енератор Образовательных Ресурсов

END WHILE; k := k + 1; j := j + 1;

END WHILE;

DELETE CTj;

GOTO П4;

{два уровня подзаголовков}

П3: к := 1;

n := 1;

j := 1;

WHILE j <> M3

WHILE ПГ(Я2п) <> ПГ (Я^)

C(Язj) = Сспса1(С(Я1к),' ',С(Я2п),' ,,C(Язj)); j := j + 1;

END WHILE;

IF ПГ(Я1к) = ПГ(Я^) THEN к :=к + 1; n := п + 1; j := j + 1;

END WHILE;

DELETE CT1;

DELETE CT2;

П4: END.

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

В алгоритме задействован оператор DELETE, применение которого реализует удаление строк. В П2 удаляется 1-ая строка CT^ со сложными атрибутами. В П3 удаляется 1-ая и 2-ая строки (CT^ , CT2) со

сложными атрибутами. Следует обратить внимание, что алгоритм предназначен для реализации в человеко-машинных процедурах. Это связано с тем, что сформированные в соответствии с алгоритмом атрибуты могут быть длинными и не удовлетворять требованиям инструментальной СУБД. Они могут оказаться семантически избыточными и нуждаться в корректировке. Кроме того, в атрибутах могут быть символы, недопустимые с точки зрения инструментальной СУБД. В качестве таких символов могут выступать “!”, “.”, и другие. В связи с этим при реализации алгоритма необходимо предусмотреть автоматизированное исключение из атрибутов символов, указанных пользователем.

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

Кроме того, алгоритм обладает малой вычислительной сложностью, которую можно оценить следующим образом. Для П1 максимальное число итераций оценивается как N*3, где N - число простых атрибутов или количество ячеек в строках с данными или степень таблицы данных. Для П2 и П3 максимальное число операций N. Так как П2 и П3 алгоритма альтернативны, то общая вычислительная сложность алгоритма N*4, т.е. линейна. Причем значение коэффициента невелико.

Нетрудно показать, что таблица, полученная в результате работы алгоритма, удовлетворяет 1-ой нормальной форме. Действительно, в соответствии с требованиями алгоритма (П1), преобразование сложных атрибутов в простые начинает выполняться, когда количество атрибутов (заголовков) будет равным числу элементов в строке с данными - N. Если бы в результате выполнения алгоритма атрибуты остались сложными, то количество заголовков должно было получиться меньшим количества элементов в строке с данными, а это противоречит предыдущему высказыванию. Таким образом, число атрибутов после выполнения алгоритма соответствует количеству ячеек в строках с данными и эти атрибуты неделимы. Кроме того, в соответствии с пунктами алгоритма (П2, П3) вся необходимая информация о семантике столбцов собирается и сохраняется в простых атрибутах. В связи с этим после удаления строк со сложными атрибутами смысловое назначение столбцов таблицы не утрачивается.

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

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

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

А _ . В . К* или С 0 Е. F G н f J

' Длта Горал 111 ■ ШЫ 1 ■ 4ï 11. Qrij 3 на ишфуглш-щич i

2 Регии и II Ы Д il'l И K'/FN1 KvtÜHIII.I J 11.1 ич:.Л К .1 И I MC. pyiï- ими S

3 1Ли©ЛЛО*®НМЯ1

4 0 1 <1>0Ш 5 J £ 9 5 ti fl

5 MSR E2SS9-MSR 10.01.01 РУ Аяпато в а И. 2 1 760

G MSH E2S69-MSR 10.01.01 шк Аяпато ва И. 3 Бшисс lavTft- м 507,00

7 M5R E2ST0-M5R 10.01.01 ШИ Аяпато аа и. 3 люкс 13VTR- м 549,00

6 NSR E2Ê71-MSR 1Û.01.01 РУ LU варе вС. 3 Бизнес 94,00

Ч HSR Ë2ST2-MSR 10.01.01 шк LUeape ■ Ci 3 люкс Î6O0S

10 НЪЙ E2ST3-MSR 11.01.01 РУ UUsape в С. 6 Люкс 13VTR- м 707,00

Рис. 1. Исходная таблица со сложными атрибутами

Как видно из рис. 1, в таблице имеются два сложных атрибута - “Тип оборудования” и ’’Цена”. Выполним импорт этой таблицы в СУБД Access. Для этого используется меню Файл/Внешние данные/Импорт. В процессе выполнения шагов мастера импорта указывается лист рабочей книги Microsoft Excel, назначается строка заголовка, имя создаваемой таблицы. Окно мастера на его очередном шаге имеет вид рис 2.

Hü Hhmuiji illüKlpühhüH убийцы

Сохранение ланиьг/ допускается г новой или в существующей таблице.

данные меопхолимо сохранить: Р е нов.ой таблице Г Е; существующей таблице!

г Продавец Се гм Тип о Й о руловаыил Полов Цена

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1 ?. Kynö каОины Пай едка а гпые;. py-Ö .

Э 4 6 Э Э 16

4 ИлпатоЕя И. г

s A JTI] то пгэ И. 3 Bn^riSt 13VTR-H 507

6 4. лначчэ ва И. 3 Шоке 13VTF-M 549 '1

Jj .J ±

Отмене

< Цазад I ¡¿Lanes > |

Готеео

Рис. 2. Окно мастера импорта таблиц

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

В ntCTli *1

rîùnçl № nfti Дата Город Продавец Сеги Тю'йодоймймя Полез Цена Лм*1|

±_ еыдэчи К^пе кабины Лебедка s тыс руб или i

предложения

0 1 2 3 Ï SB 9 16 17

MSR EÎ96S-MSR Э6Э01 |РУ Алпатова И г 1750

MSP EΣ£S.M3fi 36801 шк Алпатова И 3 бизнес 13VTR-M 507

MSR E2S70-M3R ш шк Алпатова И 3 Люкс I3VTP-M 5Î9

¡SR E2S71-MS? ш\ РУ ÜI&îpeB С Э Бганес 94

NSP E2S72-MSJÏ ш\ шк llfïîpea С. 3 Люкс 290ÛÎ

— NSR E2S73-M3R Ш2 РУ Шырев С 5 Люк 13VTR-M 76Г

CTR E2S7*Mj§ Ш2 РУ КлэлоЕсная Л 5 Л int ЙУПШ 1307

Рис. 3. Исходная таблица в формате Microsoft Access

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

Редактирование заголовков реализуется, когда таблица открыта в режиме Конструктора; редактирование полей таблицы реализуется, когда таблица открыта в режиме Просмотра.

После выполнения необходимых действий в режиме Конструктора и в режиме Просмотра таблица примет вид рис. 4.

ПистІ таблица А

Регион fia п/п Дата выдачи Город Продавец |Сеш| Купе кабины Ле£ед*а Цена в тыс руб Цена в І

ш E2S6S-MS3 36901 РУ Аллаха И 2 1750

MSR E2959-M5Î! 3690t ШК Алпатсва VI 3 Бизнес 13VTR-M 50/

MSP E2S70-M5ÎÏ 36901 !JJK Алпатова i-1 3 Люкс 13VÎR-M 549

№ E2S71-MSR 36901 РУ Шварев С. 3 бизнес 94

NSR E2S72-MSR 36901 ж Шварев С. 3 Люкс 2500$

NSR E2S73-MSÎ1 36902 РУ Шварее С. 5 Люкс 13VTR-M 767

CTR E2S7iMSfl $902 РУ Козтювгкая Л 5 Люкс 13VTR-M 1307

Рис. 4. Преобразованная таблица в формате Microsoft Access

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

Исключение подзаголовков, расположенных внутри таблицы

Информация табличного вида нередко представлена таким образом, что заголовки (атрибуты) таблицы чередуются со значениями атрибутов. Другими словами то, что должно использоваться в качестве заголовков таблицы используется в качестве их значений. Это недопустимо в таблицах, используемых в реляционных БД. От такого положения вещей следует избавляться. Рассмотрим пример, приведенный в табл. 1.

Т а б л и ц а 1

Оборудование Цена Количество

Москва, Подмосковье

Эскалаторы 50000 9

Траволаторы 70000 11

Лифты 40000 7

Моторы 7000 77

Сибирь, Урал

Эскалаторы 40000 5

Траволаторы 60000 9

Лифты 30000 5

... ... ...

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

В связи с этим эту таблицу оправданно представить в виде 2-х связанных реляционных таблиц: ’’Продажи” и “Регионы”.

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

Результат формирование нового столбца с номерами регионов и заполнением столбца приведен в таблице 2.

Т а б л и ц а 2

№ Оборудование Цена Количество

1 Москва, Подмосковье

1 Эскалаторы 50000 9

1 Траволаторы 70000 11

1 Лифты 40000 7

1 Моторы 7000 77

2 Сибирь, Урал

2 Эскалаторы 40000 5

2 Траволаторы 60000 9

2 Лифты 30000 5

m ...

m ... ... ...

Результат Формирования новой таблицы регионов и исключения записей с регионами из исходной таблицы приведены соответственно в табл. 3 и табл. 4.

Т а б л и ц а 3

№ Регион

1 Москва, Подмосковье

2 Урал, Сибирь

...

m

Т а б л и ц а 4

№ Оборудование Цена Количество

1 Эскалаторы 50000 9

1 Траволаторы 70000 11

1 Лифты 40000 7

1 Моторы 7000 77

2 Эскалаторы 40000 5

2 Траволаторы 60000 9

2 Лифты 30000 5

m ... ... ...

Для таблиц данного вида вполне можно строить реляционные запросы.

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

В связи с этим предлагается машинный алгоритм преобразования.

Предварительно представим таблицу (отношение) рассматриваемого типа в общем виде (табл. 5).

Т а б л и ц а 5

A1 Ai ... Ak

a11 NULL ... NULL

a21 a2i ... a2k

aj1 NULL ... NULL

...

af1 NULL ... NULL

am1 ... ami ... amk

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

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

П1: Выполняется сканирование всех записей отношения R. Каждая запись проверяется на наличие в ней только одного значения атрибута. Записи такого рода подсчитываются. Если таких записей несколько, то подзаголовки в отношении R присутствуют и выполняется переход к следующему пункту (П2). В противном случае алгоритм завершает работу.

П2: К отношению R приписывается дополнительный атрибут KR с типом ’’числовой” (формируется

R'),.

COUNTER := 0;

П3: Выполняется сканирование всех записей отношения R'. Если в записи имеется только одно заполненное значение атрибута, то счетчик подзаголовков COUNTER увеличивается на 1.

Значению атрибута KR присваивается значение COUNTER.

П4: Создается новое отношение R2, включающее в себя 2-а атрибута NR и атрибут с подзаголовком.

Выполняется сканирование всех записей отношений R'. Записи, которые имеют только одно, кроме ключевого, заполненное значение атрибута перемещаются в отношение R2.

В результате выполнения алгоритма сформируются отношение R2 (с подзаголовками исходной

таблицы) и отношение R1 без подзаголовков. Связи между таблицами обеспечиваются посредством ключевых атрибутов KR, которые присутствуют в обоих отношениях.

Формализованный алгоритм исключения внутренних подзаголовков выглядит следующим образом. COUNTER = 0 FOR r = 1 то m COUNTER1 =0 FOR f = 1 то k IF ark = NULL THEN COUNTER1 = COUNTER1 + 1

NEXT f

IF COUNTER1 = k-1 THEN COUNTER = COUNTER + 1 NEXT r

IF COUNTER < 2 THEN EXIT REM Формирование двух отношений R’ = R (Aj,Aj, Ak) + R (KR)

COUNTER = 0 FOR r = 1 то m COUNTER1 = 0 FOR f = 1 то k IF ark = NULL THEN COUNTER1 = COUNTER1 + 1

NEXT f

IF COUNTER1 = k - 1 THEN

COUNTER = COUNTER + 1

Z(R2 COUNTER,1) = COUNTER

Z(R2 COUNTER,2) = ark

DELETE * FROM R’ WHERE (Aj = ark)

ELSE

Z(R’r, j) = COUNTER

END IF NEXT r

Здесь m-мощность R. k - степень R.

Выражение R’ = R + R (KR) означает добавление к R атрибута с именем KR.

Выражение Z(R2counter l) означает значение элемента R2 в строке COUNTER и 1-м столбце. Выражение Z(R’r 1) означает значение элемента R’ в строке r и 1-м столбце.

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

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

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

- 3 sj (sj е s) V (aJt = NULL) (aJt esj), j = 1, m; t = 1, k-1.

Здесь s - множество строк таблицы. ajt - значение t-го атрибута в j-й строке.

m - мощность таблицы; k - степень таблицы.

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

А 0 . ...с .. О Е F

1 Рргіїон NO п/п Длтл выдачи ГОРОД ГТрїиігврц

а Минь

5 SFR Ë2S5-SFR 22.01 01 Владивосток Малышев А ОАО"ПИРОУ‘ ул Русски 19

А CTR E2S66-CTR 28 02 01 г Од-имцрво Кисель В flto Bockpac омское

5 Июль

Б MSR E2SÎ9-MSR 22 01 0 1 ШК Annjr.jSii 1'1 "МіуЮ£кЄ(Закк"

7 NSR E2S3-22-NSP 27Û301 Кдпниккгрля Нагорный О УЖКХ МЭРИИ г Калининграда

В АВГУСТ

9 son E2S3JS-SOR 01 03.01 Красноцзр Моисеенков 8 МУП "Горжипхоэ"

10 UVR E2S3-83-UVR 11 М.01 ЕкатесинО/рг бегпянцна р УРГЭУ

Рис. 5. Фрагмент таблице в формате Microsoft Excel с заголовками внутри таблицы После импорта данной таблицы в формат БД Microsoft Access она примет вид, представленный на рис.

6

Регион № п/п Дата выдачи Город Продавец Заказчик Сегмент

► ШК

SFR E2S5‘SFR 2201.200t Владивосток Малышев А. ОАОЧП11РОУ ул Русская 19 3

CTR E2SB6-CTR 20.02.2001 Г ОДіїНЦСВО Кисель 6 Воскресенское і

Июль-

МЕР E2S79-MSR 22.01 2001 ШК Алпатова И. "Инпенсбанк' 3

NSR E2S322-NSR 27.03.2001 Калининград Нагорный 0 УЖКХ МЭРИИ г. Калининграда 1

Леггет

SOR E233Í8-30R 01.03.2001 Краснодар Мочсегнков В МУЛ Т срж>1лкоз' 1

IM? E2S383-LM! 1 ! 04.3001 Екатеринбург бегяянина Р ЇРГЗУ 9

Рис. 6. Результат импорта таблицы в СУБД Microsoft Access

Нетрудно заметить, что заголовки, расположенные внутри таблицы, превратились в значения ячеек с заголовком ’’Регион”.

Для приведения таблицы к приемлемому виду можно в режиме Конструктора определить новый столбец ’Месяц”, а потом в режиме Просмотра этот столбец вручную заполнить. Результат такого преобразования представлен на рис. 7.

1ист2: t-íG.ii'Uí і

Ы?СЯЦ Регион Не п/п Даті еыдачи Шп Продавец Зайчик

Июнь

Ичзнь SfR E2S5-SFR 22.01 Щ ВлЙДИВОСГЦї МзлушївА ОАО"ПИРОУуЛ Ясская 19

Илнь СП? EÎSÊ6-CTR 26.02.2001 г Одинцвво Кисель В д\о Воскресенское

Июль

Ишь MSR E2S?9-MSR 22.Ü13001 ШК AnnSTOSi И ■ИнПЁкСбанк"

Июль NSP E2S322-NSR 27.03.2001 Калининград Нагорный Û УШ МЭРИИ г Кэлини.нграда

Лапает

Август SÛR Ë233i8‘SOR 01.03 3001 Краснрдар lylQiiteêHKOÊ В мул Торюиш'

Август UVR E2S333-LM? її т 2oot Екатеринбург Белянина Р УРГЭУ

Рис. 7. Преобразованная таблица

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

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

Эта же самая таблица, импортированная в формат Microsoft SQl Server, выглядит следующим образом (рис 8).

Регтеж №nír 1 Дата выдачи Город Продан ЗЖ№к 1 Сегмент [Количество

Witt» íNUU> Щ> <MU> <Ш1> <NUU> <HU1> íMJLL>

ÏR E255-5FR 2£JÛ1.2D0l ІИДИЮСТОК МалыаебА. ОАОТИРОУ" ул. РуС0Г0Я ] g у 1

CTR ЕЖ-СП! 28X2,2001 г.Одинш Кисель Б* Воскресенское 4 3

Шгъ <WAL> <Ш1> <NULL> <NULL> <t#JLL> <Ш> <MJLL>

M5R E2579-M5R 22,01,2001 ж АплаганИ, "Инпексйанк1 3 1

W5R EftE2-N5R 2Ш2001 Калинч-рад Кзгарьыи 0. ШМЗРШг.Кашнрш 1 1

негуст <гш> <MAL> <NULL> 4Ш> <т>

Ш M-50A ошж Краснодар МжйикобВ. ИУП Торишоз' 1 30

1 UVR 1ЖШ, 11.04.2001 Екатеринбург SiTJfWHâf, ургэу| 9 5

Рис. 8. Результат импорта таблицы в СУБД Microsoft SQl Server

Результат импорта таблицы в БД Microsoft SQl Server внешне несущественно отличается от результата импорта таблицы в БД Microsoft Access (рис. 7). Однако из рисунка видно, что незаполненные ячейки явно

представлены значением ”NULL”. Такое представление незаполненных ячеек выгодно отличается от представления незаполненных ячеек в СУБД Microsoft Access. Дело в том, что в СУБД Microsoft Access незаполненные ячейки и пустые строки (””) отображаются одинаково - пустыми ячейками. Таким образом, в СУБД Microsoft Access визуально невозможно определить содержит ли ячейка данные или нет. Пустая строка является данными. Значение ”NULL” свидетельствует об отсутствии данных. В рассматриваемом случае это важно, так как именно отсутствие данных в определенных ячейках позволяет принять решение о необходимости нормализации таблицы на основе использования стандартных средств СУБД. Таким образом, в качестве инструментальных средств, используемых для приведения таблиц к 1-й нормальной форме, предпочтительно применение средств СУБД Microsoft SQl Server.

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

Литература

1. Брешенков А.В. Неформальная постановка проблемы преобразования информации табличного вида в файлы баз данных. Сб. трудов АУ МВД России "Актуальные вопросы технологий в деятельности органов внутренних дел". - М.: 2004. - 20 с.

2. Брешенков А.В., Бараков Д.Д. Вопросы преобразования электронных таблиц в таблицы реляционных баз данных. Современные информационные технологии. Сб. трудов каф. ИУ-6, посвященный 175-летию МГТУ им. Н.Э. Баумана. - М.: Эликс +, 2004. - 15 с.

3. Брешенков А.В., Бараков Д. Д. Методика назначения ключевых полей в заполненных реляционных таблицах. Современные информационные технологии. Сб. трудов каф. ИУ-6, посвященный 175-летию МГТУ им. Н.Э. Баумана. - М.: Эликс +, 2005. - 16 с.

4. Гэри Хансен, Джэймс Хансен. Базы данных: разработка и управление. : Пер. с англ. - М.: Бином, 1999. - 699 с.

Публикации с ключевыми словами: базы данных - нереляционные таблицы - реляционные таблицы Публикации со словами: базы данных - нереляционные таблицы - реляционные таблицы См. также:

■ Приведение заполненных реляционных таблиц к четвертой нормальной форме

■ Преобразование заполненных реляционных таблиц ко второй нормальной форме

■ Книга. Информационные технологии бухгалтерского учета.

■ Базы данных. Проектирование, реализация и сопровождение

■ Основы пространственных баз данных

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

■ Системы баз данных: Проектирование, реализация и управление

■ Базы данных: учебник для высших учебных заведений Написать комментарий >>

Журнал | Портал | Раздел Copyright © 2003 «Наука и образование. Инженерное образование»

E-mail: [email protected] | тел.: +7 (495) 263-68-67

Вход для редакторов

i Надоели баннеры? Вы всегда можете отключить рекламу.