Формирование системы SQL-запросов для отображения объектного пользовательского представления предметной области в базу данных

Автор: Дрождин , Зинченко

Журнал: Проблемы информатики @problem-info

Рубрика: Программные системы информатики

Статья в выпуске: 1 (1), 2008 года.

Бесплатный доступ

Короткий адрес: https://sciup.org/14319965

IDR: 14319965

Текст статьи Формирование системы SQL-запросов для отображения объектного пользовательского представления предметной области в базу данных

O v 2 ( O i 1 ... O m 1 , Yv 1 , Yv 2

Zs rs )

Yv tv )

X 2 n 2 )   ...    O mk ( Xm 1 , Xm 2 ,..., Xm nm )

U ( X 11, X 12,..., X 1 n ,..., Xm 1, Xm 2,..., Xmn ,..., Zs 1, Zs 2,..., Zsr ) ,

где Oij i -й компонент уровня j , включающий в себя хотя бы один объект уровня j –1 и, возможно, объекты более низких уровней l , а также собственные атрибуты.

Тогда универсальное отношение U будет иметь схему:

U ( X 11, X 12,..., X 1 n ,..., Xm 1, Xm 2,..., Xmn ,..., Zs 1, Zs 2,..., Zsr ).

Система базовых SQL-запросов примет вид:

1) Объект O11 :

Select X11, X12, ..., X1 n 1

From U

  • 2)    Объект O12 :

Select

  • X11, X12, ..., X1 n 1 , X21, X22, ..., X2 n 1, Y11, Y12, ..., Y1 t 1 From U

  • 3)    Объект Osk :

Select Xi1,..., Xj1, Yi2,..., Yj2, Zs1 , Zs2,..., Zs r s, From U

Создание универсального отношения осуществляется командой:

Create table U

(

A1 Text,

A2 Text,

AN Text )

где N – общее количество атрибутов в универсальном отношении и каждый атрибут Aij сопоставлен атрибуту объекта пользовательского представления ПО.

Хотя организация БД в форме универсального отношения имеет право на существование, однако будет требовать очень больших затрат на ведение

Проблемы информатики, №1, 2008 г.

Табл. 1.

Фамилия Имя Отчество Дата рождения Адрес Паспорт № зачетки Группа Специальность Факультет Андреев Иван Семенович 02.11.1982 Пенза 9811 Николаев Петр Петрович 13.02.1982 Пенза 7314 Андреев Илья Семенович 22.03.1981 Тамбов 2538 Куликов Петр Иванович 28.03.1982 Пенза 1033 Семенов Кирилл Иванович 22.03.1981 Пенза 8588 Козлов Петр Викторович 15.11.1982 Кузнецк 4031 Денисов Николай Андреевич 03.08.1982 Пенза 5781 Алексеев Семен Анатольевич 28.04.1981 Кузнецк 3781 Иванов Иван Иванович 07.08.1981 Пенза 6114 9811 5 ПЭ1 ПЭ ФЭМИ 7314 2 ПЭ2 ПЭ ФЭМИ 2538 6 МИ1 МИ ФМФ 1033 7 МИ1 МИ ФМФ 8588 4 ПЭ2 ПЭ ФЭМИ 4031 10 ПЭ1 ПЭ ФЭМИ 5781 8 МИ2 МИ ФМФ 3781 1 МИ2 МИ ФМФ 6114 3 МП1 МП ФЭМИ 9811 9 МИ1 МИ ФМФ и иметь слишком низкую надежность вследствие возникновения коллизий. Следовательно, необходима разработка БД более точно моделирующей ПО. Создание такой БД целесообразно осуществить на основе обучения АИС.

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

Тогда, используя алгоритм выявления функциональных зависимостей, предложенный Д. Мейе-ром1, АИС для заданного набора данных определяем следующий минимальный набор зависимостей F :

специальность → факультет группа → специальность

№_зачетки → паспорт, группа паспорт → фамилия, имя, отчество, дата_рож-дения, адрес

С помощью алгоритма проектирования БД в 3НФ [1] АИС разрабатывает схему БД вида:

R1 ( специальность , факультет)

R2 ( группа , специальность)

R3 ( паспорт , фамилия, имя, отчество, дата_ рождения, адрес)

R4 ( №_зачетки , паспорт, группа)

Одиночным подчеркиванием отмечены первичные ключи отношений.

Для устранения дублирования данных в каждом отношении создадим атрибут ID с уникальными числовыми значениями, который будет использоваться в качестве первичного ключа отношения, а все внешние ключи заменим на ID_Ri. Тогда получаем следующую схему БД:

R1 ( ID , специальность , факультет)

R2 ( ID , группа , ID_R1)

R3 ( ID , паспорт , фамилия, имя, отчество, дата_ рождения, адрес)

R4 ( ID , № зачетки , ID_R3, ID_R2)

Двойным подчеркиванием отмечены возможные ключи отношений.

Учитывая, что отношение R3 содержит всю информацию об объекте ПО «человек», а отношение R4 позволяет с помощью операции естественного соединения собрать все данные об объекте ПО «студент», переименуем эти отношения соответственно в «человек» и «студент». Объекты, хранящиеся в отношениях R1 и R2, не имеют интерпретации в терминах ПО и представляют более «тонкую» (точную) структуру ПО, хотя, возможно, сложившуюся в данном состоянии ПО (заданном примере), о которой пользователь не имеет никакого представления или такая «тонкая» структура ПО не требуется ему для решения предполагаемых (конкретных) задач.

Создание разработанной БД осуществляется набором операторов:

Create table R1 (

ID Integer Constraint R1ID Primary key, специальность Text, факультет Text )

Create table R2 (

ID Integer Constraint R2ID Primary key, группа Text,

ID_R1 Integer Constraint A_ID_R1 references R1,

Constraint unique группа

Create table Человек (

ID Integer Constraint ЧеловекID Primary key, паспорт Text, фамилия Text, имя Text, отчество Text, дата_рождения Text, адрес Text, Constraint unique паспорт ) Create table Студент (

ID Integer Constraint СтудентID Primary key, №_зачетки Text, ID_R2 Integer Constraint A_ID_R2 references R2,

ID_R3 Integer Constraint A_ID_R3 references R3,

Constraint unique №_зачетки )

В общем случае оператор создания отношения БД имеет следующий вид:

Create table Ri (

ID Integer Constraint RiID Primary key, ID_Rj Integer Constraint A_ID_Rj[_ γ ] references Rj,

Ak Text,

Constraint unique Ak1[,Ak2,…] )

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

На основе соответствия атрибутов новой схемы БД и универсального отношения и использования операции естественного соединения отношений (Join) получаем следующую систему базовых SQL-запросов:

From Человек

  • 2)    студент:

Select *

From R1 Join R2 Join Студент

Join Человек

В общем случае SQL-запрос, позволяющий получить информацию об объекте ПО, имеет вид: Select *

From Ri Join Rj Join …

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

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

Статья