|
|
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
Добрый вечер! Мне нужно создать базу данных для программы управления проектом. Project - общее описание всех проектов, Tasks - описание иерархической последовательности выполнения псевдо задач (групп задач) проекта, ProjectTasks - разделение каждой псевдо задачи на модели, происходит фиксация плановых сроков и стоимости, а так же фактических сроков и стоимости, ProjectProcedure - задания входящие в модели псевдо задач, эти задачи выпорлняются исполнителями, происходит их планирование, PlannedProjectTasks, PlannedProjectProcedure - история планирования псевдо задач и задая соответственно. Вопросы: Правильно я поступая, делая в каждой таблице один уникальный индефикатор, т.е. у меня получается так, что чтобы узнать название проекта по задаче нужно будет последовательно осуществить поиск по таблицам (ProjectProcedure -> ProjectTasks->Tasks)? не делаю многосоставной ключ из-за того что тогда не получится связать ProjectTasks с PlannedProjectTasks и ProjectProcedure с PlannedProjectProcedure, или может быть лучше отказаться этого ограничения целостности и сделать везде многосоставной ключ? Заранее спасибо! С уважением, Kosteles ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2008, 23:37 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
Единственная причина для пересмотра - возможная экономия на джойнах. Учитывая что джойны будут по индексированным ID и база видимо не такая уж объемная, больших потерь (и соответсвенно экономии) не должно быть. Нужно подумать, а много ли будет запросов, где нужно скажем для данной PlannedProjectProcedure вытащить данные Project, но без данных 3-х промежуточных таблиц?- это собственно единственный ресурс экономии. С целостностью же на приведенной диаграмме все в порядке т.к. ссылки (связи) образуют чистую иерархию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2008, 11:47 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
База данных будет большой, где-то по 500 записей в таб. Tasks, по 1500 в таб.ProjectTasks, по 6000 в ProjectProcedure В ГОД. Вот из-за этого и сомнения о правильности такой схемы данных... Работа будет в основном с таблицами Project, Tasks, ProjectTasks и ProjectProcedure... Эти таблицы будут использоваться для контроля текущего состояния, будет постоянные обновления в клименте данных.... Пользоваться обратным ходом по иерархие придется где-то в 5 раз меньше. Для сбора статистики, анализ проенктов... С уважением, From Kosteles ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2008, 12:40 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
KostelesБаза данных будет большой, где-то по 500 записей в таб. Tasks, по 1500 в таб.ProjectTasks, по 6000 в ProjectProcedure В ГОД. Ну если Вы не потери нуля 3-4 в количествах, то данные по 1 проекту за все годы целиком закэшируются в оперативку, вообще никаких проблем с производительностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2008, 13:25 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
KostelesБаза данных будет большой, где-то по 500 записей в таб. Tasks, по 1500 в таб.ProjectTasks, по 6000 в ProjectProcedure В ГОД . Вот из-за этого и сомнения о правильности такой схемы данных...Это не большая база... Мне в этой схеме другое непонятно: Что будет храниться в таблицах "PlannedProjectTasks" и "PlannedProjectProcedure"? И почему они завязаны именно на "ProjectTasks" и "ProjectProcedure" В то время как в соответствующих таблицах есть тоже планируемое время. Непонятно...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2008, 13:39 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
во время выполнения проекта запланированные сроки и стоимость меняются, для сохранения истории по изменению этих запланированных параметров используются таблдицы Planned...; в таблицах ProjectTask и ProjectProvcedure хранятся текущие запланированные параметры, чтобы каждый раз не лазить в таблицы историй изменения запланированных параметров, Вроде так нормально дублировать, или лучше текущие искать в таблицах истоии? С уважением, Kosteles ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2008, 15:29 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
Kostelesво время выполнения проекта запланированные сроки и стоимость меняются, для сохранения истории по изменению этих запланированных параметров используются таблдицы Planned...; в таблицах ProjectTask и ProjectProvcedure хранятся текущие запланированные параметры, чтобы каждый раз не лазить в таблицы историй изменения запланированных параметров,Теперь понятно. KostelesВроде так нормально дублировать, или лучше текущие искать в таблицах истоии?По теории - это не правильно, но часто так делается для практики. И еще - елси это история изменения, то и назовите таблицы соответственно "xxxx_CHANGE_HIST". Грамотно выбранное название - 50% понимания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2008, 19:26 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
Bely По теории - это не правильно, но часто так делается для практики. Интересно, а как по теории подобную иерархию отображают? и в чем будет проигрышь по теории? по скорости? как я понимаю в идеале нормализованных бд почти не бывает, надо искать соотношение скорости и нормализации... С уважением, Kosteles ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2008, 21:05 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
а может быть будет лучше, если я объеденю похожие таблицы; можно объединить: 1) PlannedProjectProcedure и PlannedProjectTasks 2) ProjectProcedure и ProjectTasks правда придется тогда использовать фиктивные значения там где не должно быть данных... сущности будут с разнородными данными С уважением, Kosteles ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2008, 21:24 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
Kosteles Bely По теории - это не правильно, но часто так делается для практики. Интересно, а как по теории подобную иерархию отображают? и в чем будет проигрышь по теории? по скорости?да так же и отображают, только вычислять значение атрибута по таблице истории - ближе к нормализации структуры, чем кэшировать значения. Подробнее можно поискать по форуму "остатки на складах". Kostelesа может быть будет лучше, если я объеденю похожие таблицы; можно объединить: 1) PlannedProjectProcedure и PlannedProjectTasks 2) ProjectProcedure и ProjectTasks правда придется тогда использовать фиктивные значения там где не должно быть данных... сущности будут с разнородными данными А вот этого - не советовал бы делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2008, 11:56 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
Переделал схему данных. Хотелось бы узнать мнение на счет новой схемы. Стоит ли так делать? Какой вариант будет граммотней? Я вынес общие параметры в 2 таблицы: RealParams (реальные параметры сроков, стоимости), PlannedParams (плановые параметры стоимости, сроков). PlannedParams хранит все варианты плановых параметров во время выполнения проекта. Необходимо учитывать, что в плановые папраметры так же входят назначения исполнителей, может быть на одно задание несколько исполнителей. Назначения исполнителей находятся в таблице Appointments. Назначения принадлежат к конкретной версии плановых параметров. В id_project_task(procedure) может находиться id как из таблицы ProjectTask так и из таблицы ProjectProcedure. По иерархии ProjectTasks включает ProjectProcedure, т.е. для каждой задачи есть набор процедур, плановые параметры должны быть для обоих, но назначения (таб. Appointments) и один столбец id_iteration(количество повторных подходов из-за ошибок по по работе) только для процедур. Заранее Спасибо, Kostya ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2008, 12:32 |
|
||
|
Последовательная взаимосвязь таблиц
|
|||
|---|---|---|---|
|
#18+
Ошибся немного, поправил схему. id_project_task(procedure), id_planned_task(procedure) не совсем подходит для связи, т.к. id_project_task и id_project_procedure могут содержать одинаковые значения. Добавил id_real_param и id_planned_param в таб. ProjectTasks и ProjectProcedure и PlannedParams. С помощью этих параметров связал таблицы с RealParams и PlannedParams. Ещё убрал параметр id_planned_param_ver, т.к. он может повторяться и по нему нельза связать PlannedParams с Appointments. Связь сделал по id_project_planned. На всякий случай связи моих таб.: ProjectTasks и RealParams связь по id_real_param ProjectProcedure и RealParams связь по id_real_param ProjectTasks и PlannedParams связь по id_planned_param ProjectProcedure и PlannedParams связь по id_planned_param PlannedParams и Appointments связь по id_project_planned Смущает немного полученные связи: 1. между ProjectTasks и RealParams многие к одному. получилось, что в RealParams уник. 2. между ProjectTasks и PlannedParams один к многим. может тут должна быть связь многие к многим, т.к. ни там ни там не ключ... Вобщем как то запутанно получается, может и не стоит пытаться соединить похожие атрибуты из разных таблиц, хотя это реально... Новая схема во вложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2008, 13:23 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35184900&tid=1543991]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 491ms |

| 0 / 0 |
