powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подкажите структуру БД
13 сообщений из 13, страница 1 из 1
Подкажите структуру БД
    #36799850
Yura Peregon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть задача учет происходящих событый в организации.
Собития имеют как общие аттрибуты (например, дата начала события, длительность, ответственный), так и специфические (например, собитие измерение давления - спец.параметр давление, или установка ограждения - спец.параметри, тип ограждения, к-во секций). Параметры не всегда простого типа, иногда это ссылки на справочники (например, тип ограждения).

Количество типов событий довольно большое - в районе 500 типов.
Самих событий тоже много, за месяц - приблизительно милион.

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

Какие еще есть варианты реализации для такой задачи (реализация будет на MSSQL)?
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36799872
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yura Peregonеще больше будет процедур которые их обслуживаютпочему это?
insert, update, delete, select - всего четыре
правда эти четыре процедуры будут здоровенными
но большинство кода в них, наверное, Вы сгенерируете автоматически
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800563
Yura Peregon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель,

Потому, что каждое событие наверняка потребует проверки бизнес логики, что туда заходит, и как минимум, для каждой из них нужно будет писать процедуру check...

И еще, насколько я Вас понял, если единая процедура селект, то как минумум светит динамический SQL, что по скорости не совсем хорошо, на таких объемах данных.
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800619
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yura Peregonчто туда заходит, и как минимум, для каждой из них нужно будет писать процедуру checkне обязательно
роль процедур могут выполнять check констрейнты

Yura Peregonесли единая процедура селект, то как минумум светит динамический SQL.не обязательно
можно в этой процедуре перечислить все таблицы через union all
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800641
Yura Peregon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель,

1. Чеки констрайнты проходят, только для простых проверок внутри таблицы, а если сложные, выходящие за рамки таблицы?

2. Стоп, а что даст UNION ALL если в этих таблицах РАЗНЫЕ поля (общие и так в отдельной таблице)?
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800645
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yura Peregon wrote:

> Количество типов событий довольно большое - в районе 500 типов.
> Самих событий тоже много, за месяц - приблизительно милион.

Применять EAV для событий и их атрибутов.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800662
Yura Peregon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Можно поподробнее, что такое EAV? Может ссылочку?
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800723
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yura Peregonа если сложные, выходящие за рамки таблицыих ведь меньшинство?
напишите их всех в одной процедуре и дергайте ее из процедур insert, update и delete

Yura Peregonа что даст UNION ALL если в этих таблицах РАЗНЫЕ поля
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select E.Field1, E.Field2, t1.field3, null as field4, null as field5
  from Events E
  join Type1 t1 on t1.e_id = E.id
union all  
select E.Field1, E.Field2, null as field3, t2.field4, null as field5
  from Events E
  join Type2 t2 on t2.e_id = E.id
union all  
select E.Field1, E.Field2, null as field3, null as field4, t3.field5
  from Events E
  join Type3 t3 on t3.e_id = E.id
Вам ведь такая выборка нужна будет?
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800939
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yura Peregon Количество типов событий довольно большое - в районе 500 типов.
И у каждого из 500 типов свое уникальное поле? Или можно выделить группы подтипов.

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

Yura Peregon Но таких таблиц будет много, еще больше будет процедур которые их обслуживают.Это как раз вас должно меньше всего волновать. Ибо нормальная задача пишется гораздо быстрее чем эксплуатируется.

Yura Peregon Можно поподробнее, что такое EAV? Может ссылочку?Wiki, поиск по форуму.
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800950
Yura Peregon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель,

Селект с юнион - это просто жесть. Представьте себе 500 таблиц и полей так 3000+ (кстати, вам хватит ширины вьюшки? а добавить новое событие?). Вы бы сделали такую систему? А ресурсов под нее сколько нужно было бы?

С чего вы взяли что такая выборка нужна? Нужно как раз другое, скармливаем ИД получаем набор специфических параметров, то есть для каждого типа, своя структура на выходе итого, если одна процедура селект, то динамического СКЛ не избежать.... или куча мелких и быстрых процедур.
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800976
Yura Peregon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257,

Основное назначение пока выглядит так, есть форма событий за период (например, день) которая показывает список всех общих параметров событий, при переходе между событиями с доп области показываются доп параметры.
Тоесть, главный список выгребается одно процедурой по общей таблице, детализация же использует процедуру с параметром ИД для отображения деталей одного спец события.

Отчетность строится по группам событий, тоесть по факту соединяем главную таблицу и до 5 подчиненных.

Для каждого события есть load, save, delete, check процедуры - потому их получается довольно много, зато для клиента все в принципе прозрачно - есть тип собития, дабавляем его к load и грузим данные.

Пока так, но вопрос задал для того, что понять может есть более оптимальные способы хранения информации.
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36800996
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yura PeregonС чего вы взяли что такая выборка нужна?Потому что до этого момента Вы не говорили, какая выборка нужна

Yura Peregonскармливаем ИД получаем набор специфических параметров, то есть для каждого типа, своя структура на выходе итогоТогда пусть клиент сам формирует текст SQL запроса
...
Рейтинг: 0 / 0
Подкажите структуру БД
    #36801241
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yura Peregon wrote:
> Можно поподробнее, что такое EAV? Может ссылочку?

http://en.wikipedia.org/wiki/Entity-attribute-value_model
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подкажите структуру БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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