Создание веб-интерфейса для построения генеалогических деревьев
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
-"families": коллекция семей, участвующих в дереве;
-"peoples": коллекция персон, участвующих в дереве.
Описание FAMILY_K:
-"id": хранит id семьи;
-"hasbent": хранит id персоны, которая является мужем семьи;
-"wife": хранит id персоны, которая является женой семьи;
-"children": хранит список, состоящий из id персон, являющихся детьми семьи;
-"parent_families": хранит список, состоящий из id семей, являющихся родительскими по отношению к мужу и жене семьи;
-"child_families": хранит список, состоящий из id семей, которые были образованы детьми семьи.
Описание PEOPLE_K:
-"id": хранит id персоны;
-"lastname": хранит фамилию персоны;
-"name": хранит имя персоны;
-"patronymic": хранит отчество персоны;
-"sex": хранит пол персоны;
-"birthday": хранит дату рождения персоны;
-"deathdate": хранит дату смерти персоны;
-"parent_families": хранит список, состоящий из id семей, являющихся родительскими по отношению к персоне;
-"self_families ": хранит список, состоящий из id семей, которые были образованы персоной.
3.Описание реализации работы с данными
3.1 Структура классов для манипуляции с данными
Для манипуляции с данными используются следующие классы:
а)class User (login, password, firstname, lastname, patronymic, phone, email, sex, birthday, deathday, city_id, city_area_id, address, registration_date, update_data, ip_info) - используется для записи данных в таблицу user;
б)class Region (title) - используется для записи данных в таблицу region;
в)class RegionArea (title, region_id) - используется для записи данных в таблицу region_area;
г)class City (title, region_area_id) - используется для записи данных в таблицу city;
д)class CityArea (title, city_id) - используется для записи данных в таблицу city_area;
е)class Media (type, title, path, owner_id) - используется для записи данных в таблицу media;
ж)class Photo (media_id, user_id, rectangle) - используется для записи данных в таблицу photo;
з)class Privilege (document_id, owner_id, user_id, privilege) - используется для записи данных в таблицу privilege;
и)class Album (owner_id, avatar_id, title, create_date, update_date) - используется для записи данных в таблицу album;
к)class MediaToAlbum (album_id, media_id) - используется для записи данных в таблицу media_to_album;
л)class DatabaseConnection(address, user, password) - используется для установки соединения с нереляционной базой данных;
м)DatabaseManager(connection, db_name) - используется для создания запросов к нереляционной базе данных.
3.2 Разграничение прав доступа к данным
Для решения задач проекта необходимо реализовать две системы прав доступа. Первая система прав доступа будет отвечать за разграничение прав доступа к ресурсам сервиса, а вторая - за разграничение доступа к пользовательским данным.
.2.1 Система прав доступа к ресурсам сервиса
Существуют три роли пользователей:
а)незарегистрированные пользователи;
б)зарегистрированные пользователи;
в)администраторы.
Незарегистрированные пользователи имеют доступ к:
-главной странице,
-странице регистрации,
-страницам пользователей, разрешивших полный доступ к своим данным.
Зарегистрированные пользователи имеют доступ к:
-главной странице,
-странице регистрации,
-страницам пользователей, разрешивших полный доступ к своим данным,
-страницам пользователей, разрешивших доступ к своим данным этому пользователю.
Администраторы имеют доступ как к вышеперечисленным данным, так и к интерфейсу администратора.
3.2.2 Система прав доступа к пользовательским данным
Система прав доступа к пользовательским данным базируется на трех операциях:
а)отсутствие доступа;
б)доступ на чтение;
в)доступ на запись.
Права доступа могут быть назначены пользователю или группе пользователей. При этом права, назначенные пользователю, имеют более высокий приоритет.
3.3 Вычисление степеней родства
Степени родства между персонами в одном генеалогическом дереве должны определяться в двух случаях:
а)определение кровности родства между двумя персонами в одном генеалогическом дереве;
б)определение в дереве всех персон с заданным типом родственной связи для некоторой выбранной персоны.
Задача определения кровного или некровного родства между двумя персонами в дереве была решена поиском пути, в котором все родственники между этими персонами являются кровными друг другу. Если такой путь существует, то родственники являются кровными. Если такой путь отсутствует, родство является некровным.
Определение в одном дереве всех персон с заданным типом родственной связи для некоторой выбранной персоны реализуется по набору существующих названий отношений между родственниками. Для этого разработан набор терминов родственных связей, с которым можно ознакомиться в Приложении Б. Выбрав некоторую персону в генеалогическом дереве и тип родственной связи из данного набора, можно получить всех персон в этом дереве, которые связаны с выбранной персоной выбранным типом родственного отношения. Например, для любой персоны дерева можно получить всех братьев или всех бабушек этой персоны.
Заключение
В результате проделанной работы полностью реализован запланированный объём работы, включающий в себя реализацию системы хранения данных проекта, реализацию системы разграничения прав доступа к ресурсам сервиса и реализацию возможности определения родства между персонами генеалогического дерева.
Разработанный сервис имеет практическую ценность для работы с генеалогическими деревьями в веб-среде.
Для достижения по