Формирование системы 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.
Будем считать, что АИС создает универсальное отношение в качестве учебной (временной) БД и просит пользователя дать примеры гипотетических (возможных) объектов ПО. Предположим, пользователь ввел следующие данные (таблица 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-запросов, отображающей внешнее представление ПО в БД, позволяет пользователям, решающим практически полезные задачи, самостоятельно создавать необходимые АИС. Это существенно расширит использование АИС в различных областях деятельности человека при минимальных затратах на их создание и эксплуатацию.