powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Обсуждение возможного построения БД
16 сообщений из 16, страница 1 из 1
Обсуждение возможного построения БД
    #33069748
boo-mmx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо построить БД в которой будут документы "Платежное требование",
"Счет", "Счет-фактура", "Информационные письма", "Банковская выписка" и пр.
Очень хочется, чтобы в БД присутствовали связи.

Рассмотрим отдельный случай:
Есть документ платежное требование, который может быть создан на основании счета и на основании счета-фактуры. Я вижу два решения (со связями между таблицами):

1 вариант

* - ключи

Таблица "Счетов"
-------------
*Номер счета
Данные счета

Таблица "Счетов-фактур"
-------------
*Номер счета-фактуры
Данные счета-фактуры

Таблица "Платежные требования на основании счета"
-------------
*Номер платежного требования
Данные платежного требования

Таблица "Платежные требования на основании счетов-фактур"
-------------
*Номер платежного требования
Данные платежного требования

связи
*Счет.Номер счета <-> * Платежное требование на основании счета.Номер платежного требования на основании счета
*Счет-фактура.Номер счета-фактуры <-> Платежное требование на основании счета-фактуры.Номер платежного требования на основании счета-фактуры

Вариант 2

Таблица Документ
--------
* Номер документа
* Тип документа
Общие данные для всех документов (Дата, пользователь добавивший документ и т.п.)

Таблица Счет
--------
* Номер счета
Данные счета

Таблица Счет-фактура
--------
*Номер счет-фактуры
Данные счет-фактуры

Таблица Платежные требования
--------
*Номер платежного требования
Тип документа основания
Номер документа основания

связи
*Документ.Номер документа <-> *Счет.Номер счета
*Документ.Номер документа <-> *Счет-фактура.Номер счет-фактуры
*Документ.Номер документа <-> *Платежное требование.Номер платежного требования
*Документ.Номер документа <-> * Платежное требование.Номер документа основания
*Документ.Тип документа <-> Платежное требование.Тип документа основания

Как сделать лучше.
Предполагается, что база будет большая.
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33069824
Paul Sacks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй вариан считается более премлимый в практике потому, что он является вариантом классического бухучета.
База данных может быть ну очень большая.
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33069970
boo-mmx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Paul SacksВторой вариан считается более премлимый в практике потому, что он является вариантом классического бухучета.
А если смотреть на базу данных не только с точки зрения бухучета, а с точки зрения программирования и администрирования базы данных. Таблица
Код: plaintext
Документ
становится узким местом базы данных.
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33070735
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boo-mmx пишет:

> А если смотреть на базу данных не только с точки зрения бухучета, а с
> точки зрения программирования и администрирования базы данных. Таблица
> Документ
> становится узким местом базы данных.

И в чем же узость? Большая база - это сколько?
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071078
boo-mmx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр Гoлдун
И в чем же узость?

1. Для доступа к любому документу программы будет использоваться таблица Документ.
2. Количество строк таблицы Документ из 2 варианта будет в несколько раз больше чем количество строк в любой таблице содержащей документ из 1 варианта (поскольку количество строк в таблице Документ = количество строк в таблице Счет + количество строк в таблице Счет-фактура ...), соответственно я считаю, что поиск по ней, join'ы буду обрабатываться дольше.

Большая - это 30-40 Гб
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071091
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А создай оба варианта, влей в них тестовые данные и погоняй. Это ж просто...
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071141
boo-mmx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если ставить вопрос таким образом, то мне неначем было начинать это обсуждение. Я хотел бы получить мнение разных людей, тем более кто-то может уже и решал похожие вопросы. Вариант №2 более близок мне, но я могу не видеть множества подводных камней, очевидных для других людей.
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071488
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boo-mmxБольшая - это 30-40 Гб
30-40 Гб счетов и прочей подобной лабуды? За какой срок? Что-то мне верится с трудом в такие объемы подобных документов.
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071551
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boo-mmx пишет:

>> И в чем же узость?
>
> 1. Для доступа к любому документу программы будет использоваться таблица
> Документ.

Эта таблица очень узкая и, соответственно очень эффективная в выборках и
связках. В вырожденном случае это 2 поля: код документа и тип документа.

> 2. Количество строк таблицы Документ из 2 варианта будет в несколько раз
> больше чем количество строк в любой таблице содержащей документ из 1
> варианта (поскольку количество строк в таблице Документ = количество
> строк в таблице Счет + количество строк в таблице Счет-фактура ...),
> соответственно я считаю, что поиск по ней, join'ы буду обрабатываться
> дольше.

Знакомо понятие индекса? Это будут простые и эффективные джойны. А вот
заморачивание без этой таблицы может заметно усложнить жизнь как при
эксплуатации, так и при развитии системы.

> Большая - это 30-40 Гб

Это если хранить в базе отсканированные документы в формате BMP?
Сколько документов в день предполагается?
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071553
ОПС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а я не понял зачем во втором варианте нужна таблица документов с общими данными.

Можно же просто как в первом, но при этом все платежные требования хранить в одной табличке.
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071576
boo-mmx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
30-40 Гб - может быть и перегиб, но это размер работающей сейчас БД. Учитывая полнейшую анархию в БД реальный её размер может быть значительно меньше. Полнейшая анархия - это когда в базе данных стали появляться таблицы вида ИМЯ_ПОЛЬЗОВАТЕЛЯ_ИМЯ_ТАБЛИЦЫ, т.е. каждый разработчик создает необходимые себе таблицы для реализации своих задач. Есть задача по созданию новой БД и закачки данных из старой. Задача не только акуальная, но, что важнее, политическая.
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071589
boo-mmx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОПСа я не понял зачем во втором варианте нужна таблица документов с общими данными.
Под общими данными документа я понимаю следующие:
Дата документа
Дата внесения документа в БД
Пользователь добавивший документ
Флаг - распечатан документ или нет
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071703
ОПС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у нас все эти данные храняться в каждом документе(в той же самой таблице есть поля)
--
creation_date
created_by
--
last_update_date
last_update_by
--
причем такой подход и встречал и в других системах.
--
для каких целей вы хотите их вынести в одну таблицу?
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071757
boo-mmx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to ОПС: Вероятно это издержки объектно-ориентированного программирования. Вы правы - данные о том кто и когда создал документ логично распологать вместе с документом.
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071786
boo-mmx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Александр Гoлдун: с Вашими замечаниями, после некоторых раздумий не согласиться сложно.

Всем спасибо.
...
Рейтинг: 0 / 0
Обсуждение возможного построения БД
    #33071959
bla-bla-bla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну есть еще вариант, покрасивее предыдущих(хотя можно и поспорить интересно послушать)...короче я бы сделал так:
1. документ(id, type,parent_id,parent_type,......)
2. счет(id, type,...) (наследник документа)
3. счет-фактура(id, type,...) (наследник документа)
4. платежка(id, type,...) (наследник документа)

иерархия в документе введена, чтобы, в частности, реализовать создание платежки на основании счета и счетов фактур
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Обсуждение возможного построения БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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