Лучшее представление реляционной базы данных иерархий с указанием срока

Возможно, вы не хотите хранить конфиденциальные данные в общих настройках. Вместо этого вы можете захотеть посмотреть на плагин, подобный этому: https://pub.dartlang.org/packages/flutter_secure_storage

import 'package:flutter_secure_storage/flutter_secure_storage.dart';

// Create storage
final storage = new FlutterSecureStorage();

// Write value 
await storage.write(key: 'jwt', value: token);

5
задан Jonathan Leffler 19 April 2009 в 11:15
поделиться

4 ответа

Beh ... Метод method.invoke () коллировал не тот, кто бросал напрямую. Целевой метод также использовал invoke , и он выкинул, поэтому он всплыл.

Извлеченный урок: обрабатывать InvocationTargetException отдельно от других исключений.

Деревья и иерархии Джо Селко в SQL для умников "

Сложные части вашего вопроса, мне кажется, таковы:

  • Просмотр всей иерархии в диапазоне дат

  • Отчетность в целом поддеревья в диапазоне дат

Другие элементы, если не прямые, то могут управляться с использованием методов, изложенных в книгах, и в соответствии с рекомендациями, приведенными в других ответах. Часть проблемы заключается в понимании того, что эти два пункта точки означают. В каком-то смысле они «одинаковы», «вся иерархия» - это просто особый случай «целых поддеревьев». Но более глубокий вопрос заключается в том, «как вы хотите продемонстрировать - визуализировать, представить - изменения в иерархии с течением времени? Вы хотите сравнить состояния в начале и в конце времени, или вы тоже хотите увидеть промежуточные изменения? Как вы хотите изобразить движения человека в иерархии?

Больше вопросов, чем ответов - но я надеюсь, что указатели помогут.

8
ответ дан 14 December 2019 в 04:47
поделиться

Здесь может работать пара плоских столов. Для каждой строки нам нужны столбцы ID, Name, ParentID и InactivationDatetime (по умолчанию null). Установите дату и время для старого Документа, принадлежащего Джо, указывая, что эта запись больше не действительна, и переместите ее в архивную таблицу (для чистоты), а затем создайте новую строку (близкую копию исходной строки) для нового Документа с идентификатором Мо в качестве ParentID. Недостаток этого подхода в том, что перемещаемый человек должен получить новый идентификатор,

0
ответ дан 14 December 2019 в 04:47
поделиться

Я могу придумать пару разумных решений, в зависимости от того, как используются ваши данные и как они изменяются.

1) Предполагая, что сегодняшняя иерархия является наиболее важной. Я бы сохранил сегодняшнюю иерархию с обычным столбцом ParentId в каждой записи. Для предыдущих версий иерархии у меня была бы таблица истории

ItemId, ParentId, ValidFromDate, ValidToDate

. Каждый раз, когда иерархия изменяется, вы добавляете новую строку в таблицу истории.

2) Если какая-либо / все иерархии имеют равную важность, Я бы сохранил базовую иерархию строк и затем реализовал таблицу транзакций иерархии.

TransactionId, ItemId, Action (Move/Delete/Add), DateTime, OldParentId, NewParentId
0
ответ дан 14 December 2019 в 04:47
поделиться
table item(id, ...)

table item_link(parent_item, child_item, from_date, until_date)

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

Эта структура представляет сеть вместо простая иерархия, но она поддерживает перемещение вещей в иерархии, но также оглядывается назад во времени. Некоторые вещи должны быть проверены в логике приложения: запретить одновременное связывание joe в разных местах иерархии.

Отчетность относительно проста с предложением connect by before (в oracle)

Другие детали могут быть связаны с элемент или даже ссылка на элемент, если необходимо указать дополнительные данные об отношении.

0
ответ дан 14 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: