powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Журнал документов - view или таблица
9 сообщений из 9, страница 1 из 1
Журнал документов - view или таблица
    #34805616
Casper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем !!!

Есть много разных документов. Документы будут строится по принципу "Шапка документа->Строки документа".

Вопрос: варианты построения общего журнала документов:
1. Вью с объединением нужных полей таблиц-шапок
2. Отдельная таблица с примерно следующими полями: идентификатор, дата документа, тип документа, владлец, сумма.
Идентификатор этой таблицы "ссылается" на нужную таблицу-шапку документа.

Вот не могу выбрать.. Вроде бы с точки разработчика 1 вариант удобнее и легче. Захотел новый документ добавить - переделал вью и все. Захотел поля изменить - пожалуйста.
Но вот объединение - будут ли индексы отрабатывать и использовании условий ? Большие объемы документов не вызовут "тормозов" при объединении ?
Во втором варианте тоже - физическая таблица с правильно построенными индексами предполагает хорошое будущее, но усложняет процесс разработки и сопровождения..

Что посоветуете ? Может есть еще какой-то вариант ?
Заранее спасибо
...
Рейтинг: 0 / 0
Журнал документов - view или таблица
    #34806217
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какого плана приложение ?
Например для торгово-складской системы можно все посадить в одну пару таблиц.
...
Рейтинг: 0 / 0
Журнал документов - view или таблица
    #34806456
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casper_ Идентификатор этой таблицы "ссылается" на нужную таблицу-шапку документа.
Вот это плохо.

Casper_ Вроде бы с точки разработчика 1 вариант удобнее и легче. Захотел новый документ добавить - переделал вью и все. Захотел поля изменить - пожалуйста.
Хм. Носиться по каждому чиху что-то переделывать.... View из 128-ми union all-ов.... перспектива слияния изменений, сделанных в этом view "командой, модифицирующей документ номер двенадцать" и "командой, модифицирующей документ номер восемьдесят два"....

Casper_ Но вот объединение - будут ли индексы отрабатывать и использовании условий ? Большие объемы документов не вызовут "тормозов" при объединении ?
Этот вопрос не стоит задавать вне контекста конкретной СУБД.

Casper_ Во втором варианте тоже - физическая таблица с правильно построенными индексами предполагает хорошое будущее, но усложняет процесс разработки и сопровождения..
Хм. Чем?

Casper_ Что посоветуете ? Может есть еще какой-то вариант ?
1. Таблица Com$Documents. Содержит "общие поля" документов - типа тех, что Вы перечислили.

2. Таблица "Документы типа 1". Ссылается на Com$Documents один к одному. Содержит поля, специфичные для этого типа документов.

3. Таблица "Документы типа 2". Ссылается на Com$Documents один к одному...
...
Рейтинг: 0 / 0
Журнал документов - view или таблица
    #34806466
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это типичная реализация наследования.

Есть два основных варианта:
1) - реализация наследования в виде связи 1-к-1 (атрибуты не дублируются в производных классах/таблицах )
Для вывода общего журнала документов делается простой select из главной(родительской) таблицы.
Document(ID, Date)
FinDocument(ID, Sum, ...) связан 1-к-1 с Document по ID.
2) - реализация наследования, когда атрибуты родительского класса/таблицы дублируются в производных. В этом варианте для построения общего журнала документов создается view с union all всех таблиц и общими атрибутами.
Document(ID, Date)
FinDocument(ID, Date, Sum) нет связей с Document, ID должен быть уникален в пределах БД.

select ID, Date from Document
union all
select ID, Date from FinDocument
union all
...

Минусы первого варианта - производительность (таблица Document разрастается, необходимость множества join-ов (зависит от уровня наследования) начинает
влиять на производительность)

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

Я, со своей стороны рекомендовал бы при начальном проектировании или на начальной стадии проекта использовать всегда 1-ый вариант, а в последствии, если возникают проблемы с производительностью, переходить ко второму варианту, но только когда это действительно необходимо. Таким образом, ничто не мешает комбинировать эти два подхода, что я c успехом и делаю :).
При этом, подобный редизайн можно даже возложить на dba, если предоставить ему детальную road-map на случай падения производительности в подобных схемах.
...
Рейтинг: 0 / 0
Журнал документов - view или таблица
    #34806993
Casper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю всех за ответы..

И так, насколько я понял, приемлен примерно такой вариант:

Есть таблица ОбщЖурДок с полями DocID, Date, Owner, Sum и т.д.

Есть Док1 с полями DocID, (специфические поля документа)
Есть Док1_Строки с полями StrID, DocID, (специфические поля строк)

Есть Док2 с полями DocID, (специфические поля документа)
Есть Док2_Строки с полями StrID, DocID, (специфические поля строк)

Есть ДокN с полями DocID, (специфические поля документа)
Есть ДокN_Строки с полями StrID, DocID, (специфические поля строк)

ОбщЖурДок связан с ДокN 1->1 (ОбщЖурДок.DocID->ДокN.DocID),
ДокN связан с ДокN_Строки 1->ко многим (ДокN.DocID->ДокN_Строки.DocID)

От создания вью с объединение всех таблиц ДокN желательно отказаться.

Заранее спасибо.
...
Рейтинг: 0 / 0
Журнал документов - view или таблица
    #34807080
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОбщЖурДок связан с ДокN 1->1 (ОбщЖурДок.DocID->ДокN.DocID),
только связь в другую сторону...:
ДокN связан с ОбщЖурДок 1->1 (ДокN.DocID(PK) -> ОбщЖурДок.DocID(PK)),
...
Рейтинг: 0 / 0
Журнал документов - view или таблица
    #34807749
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немножко разовью тему
Пользователи хотят в общем журнале видеть отдельно колонку сумма по разным документам, но вся фишка в том что:
1. В "поступлении товаров" эта величина - сумма колонки по табличной части документа
2. В "приходный кассовый ордер" это поле шапки документа
3. В "приказ на цены" эта колонка не заполняется, как не имеющая смысла
...
Рейтинг: 0 / 0
Журнал документов - view или таблица
    #34808954
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafПользователи хотят в общем журнале видеть отдельно колонку сумма по разным документам,
Нормально.

Naf
но вся фишка в том что:
1. В "поступлении товаров" эта величина - сумма колонки по табличной части документа
2. В "приходный кассовый ордер" это поле шапки документа
А кто и зачем так спроектировал? Надо объяснить ему, что не мешало бы думать об общих концепциях программирования.

Раз уж, как совершенно справедливо заметили, мы реализуем наследование, давайте и дальше говорить в терминах ООП. Итак, у нас есть общий атрибут - цена/сумма документа. У него есть разные реализации для разных документов - полиморфизм в действии. Что делает правильный объект в такой ситуации? Правильно, он инкапсулирует свои особенности. Наружу выставляется стандартный интерфейс, а "особенная реализация для этого случая" - дело внутренней реализации.

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

Naf3. В "приказ на цены" эта колонка не заполняется, как не имеющая смысла
И? Разве null-ы уже отменили?
...
Рейтинг: 0 / 0
Журнал документов - view или таблица
    #35475003
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как быть например, если надо в журнале отобразить поле комментарий. Если использовать подход - Отдельная таблица для определенных документов, то придется дублировать поле комментарий и в ней тоже, что повлечет за собой избыточность (комментарий есть и в таблице документа и в журнале). Как быть в этой ситуации?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Журнал документов - view или таблица
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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