powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Много похожих таблиц: как объеденить?
25 сообщений из 32, страница 1 из 2
Много похожих таблиц: как объеденить?
    #35007097
Amdei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сижу, БД проектирую.
В системе есть некий "обект", с которым можно что-то делать.
Назвал это что-то заданием - "Task" (по сути - только группировка логически связанных подзаданий.).
Каждое задание состоит из подзананий - "Entry" (выполняют конкретные действия над некими элементами).
Эти Entry привязанны к различным таблицам, в соответствии с их предназначением.

В остальном структура Task и Entry полностью совпадает.
Пример диаграммы прилагается.
И таких заданий еще пять штук . А потом может быть и больше.

Если немного конкретики - то допустим система управляет устройствами, обедененными в группы.
"Task1" для группы - смена конфигурации в зависимости от фазы луны. "Entry1" - смена конфигурации отдельного устройства.
Task2 - преобразование устройства в гигантского боевого человекоподобного робота. и т.д.


Вопрос: как бы все Task и все Entry объеденить в в одну таблицу соответственно?

Можно тупо оставить одну таблицу Task и одну таблицу Entry .
Прописать в Entry какое-нибуть поле Type и на его основе принимать решение какими связями пользоваться.
Но тогда и в таблицу Task поле Type тоже добавлять надо. Ибо по логике приложения плевало оно на то какие там подзадания.

Можно слить в одну таблицу только Task. И в зависимости от типа выбирать соответствующий Entry.
Но это тоже не кошерно - дублирование информации в разных таблицах...

Может кто-нибуть посоветовать что-нибуть лишенное этих недостатков?
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35007774
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmdeiИ таких заданий еще пять штук . А потом может быть и больше.если немного больше, то делайте отдельные таблицы и не переживайте.
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35008138
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amdei
Можно тупо оставить одну таблицу Task и одну таблицу Entry .
Прописать в Entry какое-нибуть поле Type и на его основе принимать решение какими связями пользоваться.
Но тогда и в таблицу Task поле Type тоже добавлять надо.


А зачем в Task поле Type? Почему на один кортеж Task не может быть несколько Entry, с разными Type?
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35008270
Amdei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KGP Amdei
Можно тупо оставить одну таблицу Task и одну таблицу Entry .
Прописать в Entry какое-нибуть поле Type и на его основе принимать решение какими связями пользоваться.
Но тогда и в таблицу Task поле Type тоже добавлять надо.
А зачем в Task поле Type? Почему на один кортеж Task не может быть несколько Entry, с разными Type?
По логике - не положено.
Все Entry функционально одинаковы и принадлежат только одному Task.
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35008334
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amdei KGP Amdei
Можно тупо оставить одну таблицу Task и одну таблицу Entry .
Прописать в Entry какое-нибуть поле Type и на его основе принимать решение какими связями пользоваться.
Но тогда и в таблицу Task поле Type тоже добавлять надо.
А зачем в Task поле Type? Почему на один кортеж Task не может быть несколько Entry, с разными Type?
По логике - не положено.
Все Entry функционально одинаковы и принадлежат только одному Task.

Если у вас по логике в Task должны быть только однотипные Entry, то зачем Type в Entry?
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35008497
Amdei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KGPЕсли у вас по логике в Task должны быть только однотипные Entry, то зачем Type в Entry?Ну, в общем ты прав. Можно оставить Type только в Task. И по мере надобности его оттуда вытаскивать.

Меня смущает другое: а именно то, что если забубенить все Entry в одну таблицу, и принимать решение о том, какие связи из Entry использовать на основани Type того Task которому они принадлежат - то таблица Entry распухнет от неиспользуемых связей.
А так как большая часть Entry имеет непересекающиеся связи, то все они должны быть необязательными.
И как её целостность тогда поддерживать? Страшными тригерами в больших количествах?
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35008548
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amdei
Меня смущает другое: а именно то, что если забубенить все Entry в одну таблицу ...

Может и все Entry, но не всё вообще, что относиться к Entry.
Приведите конкретный пример - получите более конкретный ответ ... или поищите по слову реализация наследования, ООП
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35008908
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmdeiМеня смущает другое: а именно то, что если забубенить все Entry в одну таблицу, и принимать решение о том, какие связи из Entry использовать на основани Type того Task которому они принадлежат - то таблица Entry распухнет от неиспользуемых связей.
А так как большая часть Entry имеет непересекающиеся связи, то все они должны быть необязательными.
И как её целостность тогда поддерживать? Страшными тригерами в больших количествах?Я что-то не понял:
1) Почему должна распухнуть таблица Entry?
Если в нее не добавлять несуществующие связи, то и пухнуть она не будет.
2) Посмотри вот сюда , может чем поможет.
ИМХО - ситуация похожа, просто есть еще одна таблица.
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35009021
Amdei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely1) Почему должна распухнуть таблица Entry?
Если в нее не добавлять несуществующие связи, то и пухнуть она не будет.
Я в том смысле что полей для связей там будет много. Часть из них будет использоваться (в зависимости от типа Task), часть - нет.
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35009686
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amdei Bely1) Почему должна распухнуть таблица Entry?
Если в нее не добавлять несуществующие связи, то и пухнуть она не будет.
Я в том смысле что полей для связей там будет много. Часть из них будет использоваться (в зависимости от типа Task), часть - нет.Я что-то не понял....
таблица "Entry" будет ссылаться на доп таблицы?
Можно сделать по другому - пусть доп таблицы ссылаются на таблицу Entry.
И никаких доп. полей в Entry заводить не надо.

посмотрите еще раз на ссылку, которую я дал - там детальные таблицы ссылаются на основную (а не наоборот).
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35009729
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmdeiСижу, БД проектирую.
В системе есть некий "обект", с которым можно что-то делать.
Назвал это что-то заданием - "Task" (по сути - только группировка логически связанных подзаданий.).
Каждое задание состоит из подзананий - "Entry" (выполняют конкретные действия над некими элементами).
Эти Entry привязанны к различным таблицам, в соответствии с их предназначением.Расскажите поподробней про саму задачу.
Мне не очень понятно что значит "Эти Entry привязанны к различным таблицам" .

Эта привязка - что это означает?
У Entry есть несколько свойств, которые ссылаются на справочники?
Или у каждого Entry есть еще доп.параметры, которые лежат в других таблицах (например список товаров, которые надо закупить для выполнения задания).

Опишите задачу обычными словами, что необходимо...
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35010484
Amdei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyЭта привязка - что это означает?
Или у каждого Entry есть еще доп.параметры, которые лежат в других таблицах (например список товаров, которые надо закупить для выполнения задания).Да, именно так. В зависимости от типа задания логика выполнения каждого его элемента (элементы - это Entry) различна.
По логике одного задания (допустим, смена конфигурации устройства) - две связи с таблицей конфигураций (что на что сменить).
Для превращения в ус-ва в ГБЧР - связь с таблицей этих самых ГБЧР. И т.д.

Допустим Task - "Покрасить все дома в районе".
Тогда Entry - "Покрасить дом №7"
Entry привязана к таблице "Краска" (из которой берет параметр "Цвет") и к таблице "Характеристики дома", из которой берет параметр "Площадь фасада".

Так нормально?
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35010597
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmdeiДопустим Task - "Покрасить все дома в районе".
Тогда Entry - "Покрасить дом №7"
Entry привязана к таблице "Краска" (из которой берет параметр "Цвет") и к таблице "Характеристики дома", из которой берет параметр "Площадь фасада".Я бы предложил следующий вариант:

Код: plaintext
1.
2.
3.
4.
5.
 | TASK | <-- | TASK_ITEMS | <--+---- | TSK_ITEM_TYPE_1 |
                                |
                                +---- | TSK_ITEM_TYPE_2 |
                                |
                                +---- | TSK_ITEM_TYPE_3 |
 
Собственно, TASK_ITEM не будет никуда ссылаться, он просто будет хранить только общую для всех действий по заданию информацию.
В зависимости от типа в TASK_ITEMS - мы должны лезть в соответствующую таблицу:
TSK_ITEM_TYPE_1,2,3

вот в них уже будут ссылки на конкретные елементы в других таблицах.
Где надо - на справочник красок, где надо - на документ счета, где надо - на ответственного сотрудника.

примерно так...
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35011632
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я мыслю Вашу структуру так.

1. Таблица ПРОЕКТЫ - укрупненный взгляд на предметную область имеют название, может иметь срок готовности, ответсвенного и т.п.

2. Таблица СОСТАВ ЗАДАЧ - имеет иерархическую структуру, то есть задача имеет подзадачи любой степени вложенности. "Корень" задачи хранится в таблице ПРОЕКТЫ и Вы можете раскрутить задачи от корня до листьев. Задачи состоят из ОПЕРАЦИЙ.

3. Таблицы РЕСУРЫ имеется в виду все, что необходимо для обеспечения выполнения ЗАДАЧ. Некоторые ресурса также могут иметь иерархическую структуру ил "раскручиваться" по входящим.

А двльше уже идут Ваши объекты предметной области, на которые необходимо завести нормы расхода РЕСУРСОВ с учетом ОПЕРАЦИЙ (например капитальный ремонт, покраска, ремонт кровли...).

То есть предлагается наполнить Ваши отношения функциональностью и уйти от "всеядности" таблиц.
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35013828
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
последние сущности ссылаются на TaskEntry (1-к-1)
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35014149
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынникпоследние сущности ссылаются на TaskEntry (1-к-1)

То есть покраска 3-х домов по очереди (три по плану, один или два или три по факту) у вас будет занимать 3 таблицы?

имхо выб тогда уж и аттрибуты раскидали примерно - чтоб было ясно о чем речь.
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35014185
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KGPТо есть покраска 3-х домов по очереди (три по плану, один или два или три по факту) у вас будет занимать 3 таблицы?
имхо выб тогда уж и аттрибуты раскидали примерно - чтоб было ясно о чем речь.
Автор не объяснил что это за 3 последние таблицы (одна и две других в первом сообщении) , я просто ответил на вопрос, как это будет выглядеть теоритически. А теоретически - это агрегация/композиция на 1-к-1 связях.
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35014220
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник KGPТо есть покраска 3-х домов по очереди (три по плану, один или два или три по факту) у вас будет занимать 3 таблицы?
имхо выб тогда уж и аттрибуты раскидали примерно - чтоб было ясно о чем речь.
Автор не объяснил что это за 3 последние таблицы (одна и две других в первом сообщении) , я просто ответил на вопрос, как это будет выглядеть теоритически. А теоретически - это агрегация/композиция на 1-к-1 связях.

мне не понятно почему 1-к-1 ... теория без практики мертва, в частности мне не ясно КАК вы практическую покраску раскидаете аттрибутами по сущностям.
EntryN - эти таблицы ЧТО именно содержат, ЧТО вас привело к 1-к-1 ?
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35014405
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KGPEntryN - эти таблицы ЧТО именно содержат, ЧТО вас привело к 1-к-1 ?
Что за таблицы надо спросить у автора.
Может быть и не 1-к-1, а n-к-1 (тоже к автору), главное связь от EntryN к TaskEntry, а не наоборот.
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35014430
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник KGPEntryN - эти таблицы ЧТО именно содержат, ЧТО вас привело к 1-к-1 ?
Что за таблицы надо спросить у автора.
Может быть и не 1-к-1, а n-к-1 (тоже к автору), главное связь от EntryN к TaskEntry, а не наоборот.

Ясно, вы ведете речь просто о наличии в EntryN FK к TaskEntry
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35014444
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KGPЯсно, вы ведете речь просто о наличии в EntryN FK к TaskEntry
да
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35015086
Amdei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо.
Подумал и пришел к выводу, что без наследования действительно не обойтись.

Вот что у меня в результате получилось (наследование Complete и Mutually Exclusive)+
(Generate Parent+Generate Children+Inherit Only Primary Attributes).
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35015100
Amdei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, пардон, в таблице Task еще поле Type наличиствует.
По значению этого поля выбирается соответствующий наследник TaskEntry и из него - все необходимые атрибуты.
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35015176
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmdeiА, пардон, в таблице Task еще поле Type наличиствует.
По значению этого поля выбирается соответствующий наследник TaskEntry и из него - все необходимые атрибуты.

тогда верно отобразить Task Type как отдельную типовую сущность и связь
Task 0...n -> 1 Type
...
Рейтинг: 0 / 0
Много похожих таблиц: как объеденить?
    #35015205
Amdei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KGP AmdeiА, пардон, в таблице Task еще поле Type наличиствует.
По значению этого поля выбирается соответствующий наследник TaskEntry и из него - все необходимые атрибуты.

тогда верно отобразить Task Type как отдельную типовую сущность и связь
Task 0...n -> 1 TypeА есть ли в этом смысл, при условии что кол-во различных Type - ровно 6. И изменяться не будет. А даже если и будет, то это приведет к добавлению нового наследника от TaskEntry. Т.е. один хрен к редизайну базы?
Или в этом какие-то иные преимущества?
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Много похожих таблиц: как объеденить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]