Создание веб-интерфейса для построения генеалогических деревьев
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
°нит список, состоящий из 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. Разграничение прав доступа к данным
Для решения задач проекта необходимо реализовать две системы прав доступа. Первая система прав доступа будет отвечать за разграничение прав доступа к ресурсам сервиса, а вторая - за разграничение доступа к пользовательским данным.
3.2.1 Система прав доступа к ресурсам сервиса
Существуют три роли пользователей:
а)незарегистрированные пользователи;
б)зарегистрированные пользователи;
в)администраторы.
Незарегистрированные пользователи имеют доступ к:
-главной странице,
-странице регистрации,
-страницам пользователей, разрешивших полный доступ к своим данным.
Зарегистрированные пользователи имеют доступ к:
-главной странице,
-странице регистрации,
-страницам пользователей, разрешивших полный доступ к своим данным,
-страницам пользователей, разрешивших доступ к своим данным этому пользователю.
Администраторы имеют доступ как к вышеперечисленным данным, так и к интерфейсу администратора.
3.2.2 Система прав доступа к пользовательским данным
Система прав доступа к пользовательским данным базируется на трех операциях:
а)отсутствие доступа;
б)доступ на чтение;
в)доступ на запись.
Права доступа могут быть назначены пользователю или группе пользователей. При этом права, назначенные пользователю, имеют более высокий приоритет.
3.3 Вычисление степеней родства
Степени родства между персонами в одном генеалогическом дереве должны определяться в двух случаях:
а)определение кровности родства между двумя персонами в одном генеалогическом дереве;
б)определение в дереве всех персон с заданным типом родственной связи для некоторой выбранной персоны.
Задача определения кровного или некровного родства между двумя персонами в дереве была решена поиском пути, в котором все родственники между этими персонами являются кровными друг другу. Если такой путь существует, то родственники являются кровными. Если такой путь отсутствует, родство является некровным.
Определение в одном дереве всех персон с заданным типом родственной связи для некоторой выбранной персоны реализуется по набору существующих названий отношений между родственниками. Для этого разработан набор терминов родственных связей, с которым можно ознакомиться в Приложении Б. Выбрав некоторую персону в генеалогическом дереве и тип родственной связи из данного набора, можно получить всех персон в этом дереве, которые связаны с выбранной персоной выбранным типом родственного отношения. Например, для любой персоны дерева можно получить всех братьев или всех бабушек этой персоны.
Заключение
В результате проделанной работы полностью реализован запланированный объём работы, включающий в себя реализацию системы хранения данных проекта, реализацию системы разграничения прав доступа к ресурсам сервиса и реализацию возможности определения родства между персонами генеалогического дерева.
Разработанный сервис имеет практическую ценность для работы с генеалогическими деревьями в веб-среде.
Для достижения поставленной цели проделаны следующие виды работ:
-исследована предметная область;
-найдены и исследованы существующие аналоги;
-составлены общие и функциональные требования;
-исследованы возможные средства разработки для решения поставленной задачи;
-выбраны и изучены средства разработки: объектно-реляционная СУБД PostgreSQL, документо-ориентированная СУБД CouchDB, язык программирования Python, фреймворк Django, язык программирования JavaScript;
-разработана и реализована архитектура реляционной базы данных;
-разработана и реализована архитектура нереляционной базы данных;
-разработан и реализован интерфейс для доступа к хранимым данным;
-разработана и реализована система разграничения прав доступа для разных групп пользователей;
-разработано и реализовано вычисление степеней родства между двумя персонами в генеалогическом дереве;
-проведена отладка и т