Форум программистов, компьютерный форум CyberForum.ru

Java и базы данных

Войти
Регистрация
Восстановить пароль
 
stalker033
0 / 0 / 0
Регистрация: 02.03.2014
Сообщений: 11
#1

Нетривиальное проектирование БД - Java БД

05.11.2016, 20:18. Просмотров 418. Ответов 2

Всем привет! Для курсовой сформулирована следующая задача, необходимо написать клиент-серверный менеджер документов, для хранения видов (Персональные, медицинские, финансовые и т.д.) и классов документов (паспорт, загранпаспорт, СНИЛС и т.д.), при этом должен быть реализован механизм документального наследования (например на базе паспорта создать экземпляр загранпаспорта, используя определенные реквизиты из оного). Документы можно создавать произвольного вида и с произвольным количеством полей-реквизитов. Данные должны быть иерархически связаны.
Использую СУБД MySQL, начал проектировать, были созданы 3 таблицы.

Кликните здесь для просмотра всего текста

Нетривиальное проектирование БД
Нетривиальное проектирование БД


Возникла идея реализации базы следующим образом, в таблице docs в поле doc будут храниться группы и классы документов, parentId - id родительской группы/класса. По полю isClass определяем является ли данная запись классом документа, если является, то создаем таблицу с одноименным названием, записи которой - экземпляры класса документа.

Помимо иерархии структуры документов, также должно существовать наследование экземпляров (набор документов, принадлежащих определенному физ. лицу, например, на базе паспорта создать экземпляр загранпаспорта, дополняя его лишь необходимыми реквизитами), которое думаю реализовать, используя в качестве связи поля таблиц классов документов parentType и parentId, которые в совокупности дадут нам однозначно определить экземпляр и класс родительского документа. Начав реализовывать подобную модель я сразу же столкнулся со сложностью самой модели и мыслью о том, что я вообще неправильно начал ее проектировать, надеюсь, что более опытные товарищи подскажут возможно ли упростить данную модель, либо подскажут инструменты, упрощающие реализацию подобного функционаа. К тому же, как генерировать сходу таблицы с заранее неизвестным количеством реквизитов, а потом их обрабатывать я пока не очень себе представляю.
Рассматривал различные алгоритмы хранения иерархичных данных в реляционных БД, на основе полученной информации попытался склепать нечто подходящее под мою задачу. Возможно ваши рекомендации помогут по новому взглянуть на поставленную задачу, спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2016, 20:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нетривиальное проектирование БД (Java БД):

Проектирование БД - Java БД
Здравствуйте! Цель создать БД - склад (для отслеживания товара) на котором будут находиться до 5 групп товаров одной отрасли ...

Проектирование БД - Java БД
Здравствуйте! Допустим есть склад учета товаров. Разные товары со своими характеристиками. Ясно что каждый товар должен иметь...

Проектирование БД - Java БД
Здравствуйте форумчане! Не могу разобраться с проектированием БД. Есть такие сущности как Folder, File, User, причем, каждая...

Проектирование клиент-сервера - Java
Подскажите pls Как можно реализовать следующее: На сервере крутится сервис который ждет подключения пользователя, пользователь...

Нетривиальное отображение графика функции - Maple
Добрый день, уважаемые форумчане! Нужна ваша помощь - есть функция вида: Y(x) = Yo + (Ey-Yo)*(x/Ex)^p) * (1+(x/Ex)^p) Yo и p -...

Как установить, при каком значении имеется нетривиальное решение системы, а также найти одно из них? - Геометрия
Например вот для этой системы: 12x + 15y + 11z = 83 11x - 14y + 13z = 70 13x + 11y - 12z = 90 Нетривиально решение - это...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Fene4ka_
89 / 89 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
07.11.2016, 22:32 #2
эмм, вам нужно множить не таблицы, а записи в таблицах, так что создавать динамически зачем-то таблицы сразу от этого откажитесь. В вашем случае самым простым, наверное, будет Docs - Type - Requisites и еще какая-то таблица, собственно где будут записываться данные ваших документов(id, docsId, fieldName, Value). Собственно в Docs лежит описание какого-то документа. В Type просто перечислены ваши типы документов и также иерархия наследования (Id, ParentId, TypeName). Ну а в Requisites содержится список полей для определенного типа (Id, TypeId, FieldName, Description). Ну а дальше тянуть инфу из базы по мере надобности.
KEKCoGEN
Эксперт Java
1914 / 1792 / 435
Регистрация: 28.12.2010
Сообщений: 7,227
07.11.2016, 23:37 #3
Цитата Сообщение от stalker033 Посмотреть сообщение
Использую СУБД MySQL
для вашей задачи имхо лучше бы подошла NoSQL БД.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2016, 23:37
Привет! Вот еще темы с ответами:

Проектирование БД - SQL Server
Добрый день всем. Задали создать приложение на свободную тему с БД(MVS + MS Server), решил сделать БД боксерских боев.Можно так связать...

Проектирование - C#
Добрый день. Возможно глупый вопрос, но нужно сделать приложение с некоторым функционалом, большое кол-во контролов, несколько пунктов...

Проектирование БД - Базы данных
Никак не нарисую себе правильную модель. Вот у меня есть талцица с данными о товаре (у каждого товара есть свой id - первичный ключ). И,...

Проектирование - Программирование
Подскажите литературу или другие ресурсы, на которых можно почитать про проектирование самого приложения (именно уже файликов с кодом)?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru