Создание веб-интерфейса для построения генеалогических деревьев

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



-"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 Вычисление степеней родства

Степени родства между персонами в одном генеалогическом дереве должны определяться в двух случаях:

а)определение кровности родства между двумя персонами в одном генеалогическом дереве;

б)определение в дереве всех персон с заданным типом родственной связи для некоторой выбранной персоны.

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

Определение в одном дереве всех персон с заданным типом родственной связи для некоторой выбранной персоны реализуется по набору существующих названий отношений между родственниками. Для этого разработан набор терминов родственных связей, с которым можно ознакомиться в Приложении Б. Выбрав некоторую персону в генеалогическом дереве и тип родственной связи из данного набора, можно получить всех персон в этом дереве, которые связаны с выбранной персоной выбранным типом родственного отношения. Например, для любой персоны дерева можно получить всех братьев или всех бабушек этой персоны.

Заключение

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

Разработанный сервис имеет практическую ценность для работы с генеалогическими деревьями в веб-среде.

Для достижения по