logo
ГОСЫ / ГОСБилеты

2. Реляционная модель данных. Базовые понятия. Отношения и свойства отношений. Составляющие реляционной модели данных.

Реляционная база данных — база данных, основанная на реляционной модели. Слово «реляционный» происходит от английского «relation» (отношение[1]). Для работы с реляционными БД применяют Реляционные СУБД.

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

• Данные хранятся в таблицах, состоящих из столбцов ("атрибутов") и строк ("записей");

• На пересечении каждого столбца и строчки стоит в точности одно значение;

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

• Запросы к базе данных возвращают результат в виде таблиц, которые тоже могут выступать как объект запросов.

Строки в реляционной базе данных неупорядочены - упорядочивание производится в момент формирования ответа на запрос.

Общепринятым стандартом языка работы с реляционными базами данных является язык SQL.

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

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

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

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

• работа с пользовательским интерфейсом, обозначение обязательных и необязательных для заполнения полей.

• забота о безопасности, если это необходимо: шифрование данных, ограничение прав доступа.

3. Информация о студенте включает: ФИО, порядковый номер, название факультета, номер специальности, дату рождения, адрес проживания, телефон. Информация о студентах хранится в виде записей в массиве. Число записей в массиве 100. Отсортировать всех студентов в алфавитном порядке. Обосновать выбор алгоритма сортировки.

program Project12;

{$APPTYPE CONSOLE}

uses

SysUtils,

Windows;

//Program Zad_12;

//Uses Crt;

Type

Student = Record

Number:Word;

FIO:String[20];

Fakul:String[10];

Spech:String[6];

DateRog:String[10];

Addres:String[15];

Teleph:String[10];

End;

Var Spisok: array [1..101] of Student;

N,i,j,Imin:Integer;

Min:String;

Begin

//ClrScr;

Write('Number of Students = ');

Readln(N);

For i:=1 To N do

Begin

Write('Poridkovyi nomer == ');

Readln(Spisok[i].Number);

Write('FIO == ');

Readln(Spisok[i].FIO);

Write('Naimenovanie fakulteta == ');

Readln(Spisok[i].Fakul);

Write('Number spechialnosti == ');

Readln(Spisok[i].Spech);

Write('Date rogdeniya == ');

Readln(Spisok[i].DateRog);

Write('Address == ');

Readln(Spisok[i].Addres);

Write('Telephone == ');

Readln(Spisok[i].Teleph);

End;

For i:=1 To N-1 Do

Begin

Min:=Spisok[i].FIO;

Imin:=i;

For j:=i+1 To N Do

If Spisok[j].FIO < Min Then

Begin

Min :=Spisok[j].FIO;

Imin:=j;

End;

Spisok[N+1].Number:=Spisok[i].Number;

Spisok[N+1].FIO:=Spisok[i].FIO;

Spisok[N+1].Fakul:=Spisok[i].Fakul;

Spisok[N+1].Spech:=Spisok[i].Spech;

Spisok[N+1].DateRog:=Spisok[i].DateRog;

Spisok[N+1].Addres:=Spisok[i].Addres;

Spisok[N+1].Teleph:=Spisok[i].Teleph;

Spisok[i].Number:=Spisok[Imin].Number;

Spisok[i].FIO:=Min;

Spisok[i].Fakul:=Spisok[Imin].Fakul;

Spisok[i].Spech:=Spisok[Imin].Spech;

Spisok[i].DateRog:=Spisok[Imin].DateRog;

Spisok[i].Addres:=Spisok[Imin].Addres;

Spisok[i].Teleph:=Spisok[Imin].Teleph;

Spisok[Imin].Number:=Spisok[N+1].Number;

Spisok[Imin].FIO:=Spisok[N+1].FIO;

Spisok[Imin].Fakul:=Spisok[N+1].Fakul;

Spisok[Imin].Spech:=Spisok[N+1].Spech;

Spisok[Imin].DateRog:=Spisok[N+1].DateRog;

Spisok[Imin].Addres:=Spisok[N+1].Addres;

Spisok[Imin].Teleph:=Spisok[N+1].Teleph;

End;

//Clrscr;

For i:=1 To N Do

Begin

Writeln(Spisok[i].Number,' ', Spisok[i].FIO,' ', Spisok[i].Fakul,' ' ,Spisok[i].Spech, ' ',Spisok[i].DateRog);

Writeln(' ',Spisok[i].Addres,' ',Spisok[i].Teleph);

End;

Readln;

End.