|
|
|
Forum Member
      
участник
Last Login: 10.10.2005 16:12
Сообщ.: 43,
Visits: 474
|
|
Доброго времени суток!
Может быть кто-нибудь сталкивался с похожей проблемой и сможет дать совет. Сам как-то не могу придумать структуры БД. Общая идея БД состоит в следующем:
1. Существует набор компаний.
2. Существует набор подразделений - подразделения имеют уникальные ID.
3. Набор под-подразделений.
4. Набор сотрудников.
Есть Подчиненность подразделений - они входят в компании и им, в свою очередь подчиняются какие-то под-подразделения (возможны разне количества). Например: Компания А1 состоит из двух подразделений B1 (состоящий из подотделов C1 и C2) и B2 (состоящий из отделов C3, C4 и C5). Отделы и подотделы могут передаваться в подчинение от одного родителя другому.
В эту же схему включены сотрудники - руководители и замы компаний, отделов и подотделов. Тоже могут со временем переходить из одного отдела в другой как "вбок" так и "вверх" и "вниз".
Ну и всё это завязяно на время.
Задача нарисовать базу так чтобы в любой момент по любому периоду времени можно было получить отчет - кто из сотрудников в этот конкретный момент чем руководил, в какую компанию в этот период был включен этот конкретный отдел и т.д.
Может кто-то что-то похожее делал уже? Самый простой вариант кажется - сделать кучу таблиц по каждому отделу и каждому сотруднику с включенной хронологией, но таких таблиц потребуется очень уж много (порядок сотен). а как хранить все связи с учетом периодов времени - придумать не могу :(
|
|
|
|
|
Supreme Being
      
участник
Last Login: 29.09.2007 22:12
Сообщ.: 343,
Visits: 3 388
|
|
| Сколько платишь за проетирование ТВОЕЙ БД ? Думаю, за $500 можно договориться.. Я не жадный
|
|
|
|
|
Forum Member
      
участник
Last Login: 10.10.2005 16:12
Сообщ.: 43,
Visits: 474
|
|
| А я небогатый :) Так что мне достаточно общей идеи как это реализовать. Создать таблицу перемещений что-ли или... И из нее черпать данные на каждый момент времени...
|
|
|
|
|
Supreme Being
      
участник
Last Login: 01.09.2007 21:18
Сообщ.: 407,
Visits: 4 434
|
|
Я думаю решение не зависит от структуры базы данных.
Зависит от того какие требования выставляются к обработке архивов.
Решения бывают разные. К примеру:
1. Для каждой таблицы - архивная таблица
2. Для каждого архивного периода - своя база.
3. В каждой таблице заводятся поля указывающие на период и на статус троки (удалено, изменено, добавлено)
4. При любом изменении ннформации в базе пишутся соответствующие логи.
При вариантах 1-3 информацию можно обрабатывать обычными запросами.
Вариант 3 будет медленно работать при большом количестве архивных записей.
|
|
|
|