Num_treaty: N(5) (??)
Kod_spec: N(5) (FK)
Kod_facul: N(2) (FK)
Num_stud: N(5) (FK)
Date_start: D(8)
Kurs: N(1)
|
|
Рис.4. Физическая модель данных
На основе физической модели выполнено описание структуры таблиц базы данных в табл. 1-7 представлено описание структуры файлов *.dbf.
Журнал комменданта (Logbook) зависимая Таблица 1
Заголовок поля |
Идентификатор
|
Ключ
|
Тип поля
|
Длина
|
1 |
Номер записи |
Num_rec |
PK |
NUMERIC |
5 |
2 |
Номер комнаты |
Num_room |
FK |
NUMERIC |
3 |
3 |
Номер договора |
Num_treaty |
FK |
NUMERIC |
5 |
4 |
Дата въезда |
Date_ent |
DATE |
8 |
5 |
Дата выезда |
Date_exit |
DATE |
8 |
6 |
Оплата за место |
Sum |
FLOAT |
6,2 |
7 |
факт проживания |
loglive |
LOGICAL |
1 |
Студент (Student): независимая Таблица 2
Заголовок поля |
Идентификатор
|
Ключ
|
Тип поля
|
Длина
|
1 |
Номер студ. билета |
Num_stud |
PK |
NUMERIC |
5 |
2 |
Имя |
Name |
CHARACTER |
15 |
3 |
Фамилия |
Surname |
CHARACTER |
15 |
4 |
Отчество |
Patronim |
CHARACTER |
19 |
5 |
Дата рождения |
BirthD |
DATE |
8 |
6 |
Номер паспорта |
N_pas |
NUMERIC |
6 |
7 |
Серия паспорта |
S_pas |
CHARACTER |
5 |
8 |
Индекс |
Zip |
NUMERIC |
6 |
9 |
Район |
District |
CHARACTER |
20 |
10 |
Город |
Np |
CHARACTER |
20 |
11 |
Улица |
street |
CHARACTER |
15 |
12 |
Дом |
dom |
NUMERIC |
3 |
13 |
Квартира |
flat |
NUMERIC |
3 |
14 |
Телефон домашний |
tel |
NUMERIC |
9 |
Договор (Treaty): зависимая Таблица 3
Заголовок поля |
Идентификатор
|
Ключ
|
Тип поля
|
Длина
|
1 |
Номер договора |
Num treaty |
PK |
NUMERIC |
5 |
2 |
Код специальности |
Kod spec |
FK |
NUMERIC |
5 |
3 |
Код факультета |
Kod facul |
FK |
NUMERIC |
2 |
4 |
Номер студ билета |
Num stud |
FK |
NUMERIC |
5 |
5 |
Дата заключения |
Date start |
DATE |
8 |
6 |
Курс |
Kurs |
NUMERIC |
1 |
Специальность (Speciali): независимая Таблица 4
Заголовок поля |
Идентификатор
|
Ключ
|
Тип поля
|
Длина
|
1 |
Код специальности |
kod spec |
PK |
NUMERIC |
5 |
2 |
Название |
naz spec |
CHARACTER |
35 |
3 |
Короткое название |
short spec |
CHARACTER |
10 |
Факультет (Faculti): независимая Таблица 5
Заголовок поля |
Идентификатор
|
Ключ
|
Тип поля
|
Длина
|
1 |
Код факультета |
kod facul |
PK |
NUMERIC |
2 |
2 |
Название |
naz facul |
CHARACTER |
35 |
3 |
Короткое название |
short facul |
CHARACTER |
5 |
4 |
ФИО декана |
SNP decan |
CHARACTER |
20 |
5 |
Телефон декана |
tel decan |
NUMERIC |
6 |
Комната (Room): независимая Таблица 6
Заголовок поля |
Идентификатор
|
Ключ
|
Тип поля
|
Длина
|
1 |
Номер комнаты |
Num room |
PK |
NUMERIC |
3 |
2 |
Количество мест |
kol mest |
NUMERIC |
1 |
3 |
Качество |
Quality |
NUMERIC |
2 |
4 |
Примечания |
note |
MEMO |
30 |
Квитанция (Receipt):зависимая Таблица 7
Заголовок поля |
Идентификатор
|
Ключ
|
Тип поля
|
Длина
|
1 |
Номер квитанции |
num receipt |
PK |
NUMERIC |
6 |
2 |
Номер записи |
num rec |
FK |
NUMERIC |
5 |
3 |
дата оплаты |
date ammou |
DATE |
8 |
4 |
оплаченная сумма |
sum total |
FLOAT |
6,2 |
2.3. Файлы вида
Для просмотра информации одновременно во всех таблицах их необходимо связать (установить отношения). Отношения сохраняются в файле вида (kadastr.vue). На рис. 5 отражена схема взаимосвязи таблиц.
SET RELATION TO ... INTO...
|
|
Рис. 5. Схема отношений между таблицами базы данных
3. Описание запросов к базе данных
1. Показать количество студентов, проживающих в комнате (№2):
SELECT Logbook.*, Student.surname, Student.name, Student.patronic;
FROM Logbook, Student, Treaty;
WHERE Treaty.num_treaty = Logbook.num_treaty;
AND Student.num_stud = Treaty.num_stud;
AND Logbook.lognote = .T.;
GROUP BY Logbook.num_room, Student.num_stud;
HAVING Logbook.num_room = 2
2. Перечень всех студентов 4 курса проживающих в общежитии
SELECT Logbook.num_rec, Logbook.num_room, Logbook.num_treaty,;
Logbook.lognote, Student.surname, Student.name, Student.patronic,;
Treaty.kurs;
FROM Logbook, Student, Treaty;
WHERE Treaty.num_treaty = Logbook.num_treaty;
AND Student.num_stud = Treaty.num_stud;
AND Logbook.lognote = .T.;
GROUP BY Treaty.kurs, Student.num_stud;
HAVING Treaty.kurs = 4;
ORDER BY Student.surname
3. Просмотр информации о комнатах общежития: количество комнат с 4-мя местами:
SELECT Room.kolmest, COUNT(Room.num_room), Room.qualit, Room.num_room;
FROM Room;
GROUP BY Room.kolmest;
HAVING Room.kolmest = 4
4. Покозать распределение студентов по комнатам
SELECT Student.surname, Student.name, Student.patronic, Treaty.num_stud,;
Treaty.kurs, Logbook.num_room, Faculty.shot_facul, Speciali.shot_spec;
FROM Student, Room, Treaty, Logbook, Faculty, Speciali;
WHERE Treaty.num_stud = Student.num_stud;
AND Logbook.num_room = Room.num_room;
AND Student.num_stud = Treaty.num_stud;
AND Student.num_stud = Treaty.num_stud;
AND Room.num_room = Logbook.num_room;
AND Faculty.kod_facul = Treaty.kod_facul;
AND Speciali.kod_spec = Treaty.kod_spec;
AND Logbook.lognote = .T.;
GROUP BY Room.num_room, Student.num_stud
4. Описание отчетов и этикеток
На рис 6. представлена схема отчета “Отчет о проживающих студентах в комнате №2”
Рис.6.
На рис 7. представлена схема отчета “Список студентов 4-го курса”
Рис.7
На рис. 8. Представлена схема этикетки «Наклейка на конверт студенту»
Рис. 8
5.Описание экранов
На рис. 8 представлена схема экрана “Информация о комнате”
Рис.8.
На рис. 9 представлено сгенерированное окно “Сведения о комнате”