Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
Необходимо построить БД в которой будут документы "Платежное требование", "Счет", "Счет-фактура", "Информационные письма", "Банковская выписка" и пр. Очень хочется, чтобы в БД присутствовали связи. Рассмотрим отдельный случай: Есть документ платежное требование, который может быть создан на основании счета и на основании счета-фактуры. Я вижу два решения (со связями между таблицами): 1 вариант * - ключи Таблица "Счетов" ------------- *Номер счета Данные счета Таблица "Счетов-фактур" ------------- *Номер счета-фактуры Данные счета-фактуры Таблица "Платежные требования на основании счета" ------------- *Номер платежного требования Данные платежного требования Таблица "Платежные требования на основании счетов-фактур" ------------- *Номер платежного требования Данные платежного требования связи *Счет.Номер счета <-> * Платежное требование на основании счета.Номер платежного требования на основании счета *Счет-фактура.Номер счета-фактуры <-> Платежное требование на основании счета-фактуры.Номер платежного требования на основании счета-фактуры Вариант 2 Таблица Документ -------- * Номер документа * Тип документа Общие данные для всех документов (Дата, пользователь добавивший документ и т.п.) Таблица Счет -------- * Номер счета Данные счета Таблица Счет-фактура -------- *Номер счет-фактуры Данные счет-фактуры Таблица Платежные требования -------- *Номер платежного требования Тип документа основания Номер документа основания связи *Документ.Номер документа <-> *Счет.Номер счета *Документ.Номер документа <-> *Счет-фактура.Номер счет-фактуры *Документ.Номер документа <-> *Платежное требование.Номер платежного требования *Документ.Номер документа <-> * Платежное требование.Номер документа основания *Документ.Тип документа <-> Платежное требование.Тип документа основания Как сделать лучше. Предполагается, что база будет большая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 15:18 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
Второй вариан считается более премлимый в практике потому, что он является вариантом классического бухучета. База данных может быть ну очень большая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 15:36 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
Paul SacksВторой вариан считается более премлимый в практике потому, что он является вариантом классического бухучета. А если смотреть на базу данных не только с точки зрения бухучета, а с точки зрения программирования и администрирования базы данных. Таблица Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 16:07 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
boo-mmx пишет: > А если смотреть на базу данных не только с точки зрения бухучета, а с > точки зрения программирования и администрирования базы данных. Таблица > Документ > становится узким местом базы данных. И в чем же узость? Большая база - это сколько? Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 21:04 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун И в чем же узость? 1. Для доступа к любому документу программы будет использоваться таблица Документ. 2. Количество строк таблицы Документ из 2 варианта будет в несколько раз больше чем количество строк в любой таблице содержащей документ из 1 варианта (поскольку количество строк в таблице Документ = количество строк в таблице Счет + количество строк в таблице Счет-фактура ...), соответственно я считаю, что поиск по ней, join'ы буду обрабатываться дольше. Большая - это 30-40 Гб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 09:08 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
А создай оба варианта, влей в них тестовые данные и погоняй. Это ж просто... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 09:17 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
Если ставить вопрос таким образом, то мне неначем было начинать это обсуждение. Я хотел бы получить мнение разных людей, тем более кто-то может уже и решал похожие вопросы. Вариант №2 более близок мне, но я могу не видеть множества подводных камней, очевидных для других людей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 09:42 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
boo-mmxБольшая - это 30-40 Гб 30-40 Гб счетов и прочей подобной лабуды? За какой срок? Что-то мне верится с трудом в такие объемы подобных документов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 11:21 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
boo-mmx пишет: >> И в чем же узость? > > 1. Для доступа к любому документу программы будет использоваться таблица > Документ. Эта таблица очень узкая и, соответственно очень эффективная в выборках и связках. В вырожденном случае это 2 поля: код документа и тип документа. > 2. Количество строк таблицы Документ из 2 варианта будет в несколько раз > больше чем количество строк в любой таблице содержащей документ из 1 > варианта (поскольку количество строк в таблице Документ = количество > строк в таблице Счет + количество строк в таблице Счет-фактура ...), > соответственно я считаю, что поиск по ней, join'ы буду обрабатываться > дольше. Знакомо понятие индекса? Это будут простые и эффективные джойны. А вот заморачивание без этой таблицы может заметно усложнить жизнь как при эксплуатации, так и при развитии системы. > Большая - это 30-40 Гб Это если хранить в базе отсканированные документы в формате BMP? Сколько документов в день предполагается? Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 11:40 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
а я не понял зачем во втором варианте нужна таблица документов с общими данными. Можно же просто как в первом, но при этом все платежные требования хранить в одной табличке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 11:40 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
30-40 Гб - может быть и перегиб, но это размер работающей сейчас БД. Учитывая полнейшую анархию в БД реальный её размер может быть значительно меньше. Полнейшая анархия - это когда в базе данных стали появляться таблицы вида ИМЯ_ПОЛЬЗОВАТЕЛЯ_ИМЯ_ТАБЛИЦЫ, т.е. каждый разработчик создает необходимые себе таблицы для реализации своих задач. Есть задача по созданию новой БД и закачки данных из старой. Задача не только акуальная, но, что важнее, политическая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 11:45 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
ОПСа я не понял зачем во втором варианте нужна таблица документов с общими данными. Под общими данными документа я понимаю следующие: Дата документа Дата внесения документа в БД Пользователь добавивший документ Флаг - распечатан документ или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 11:48 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
у нас все эти данные храняться в каждом документе(в той же самой таблице есть поля) -- creation_date created_by -- last_update_date last_update_by -- причем такой подход и встречал и в других системах. -- для каких целей вы хотите их вынести в одну таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 12:25 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
to ОПС: Вероятно это издержки объектно-ориентированного программирования. Вы правы - данные о том кто и когда создал документ логично распологать вместе с документом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 12:42 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
to Александр Гoлдун: с Вашими замечаниями, после некоторых раздумий не согласиться сложно. Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 12:51 |
|
||
|
Обсуждение возможного построения БД
|
|||
|---|---|---|---|
|
#18+
ну есть еще вариант, покрасивее предыдущих(хотя можно и поспорить интересно послушать)...короче я бы сделал так: 1. документ(id, type,parent_id,parent_type,......) 2. счет(id, type,...) (наследник документа) 3. счет-фактура(id, type,...) (наследник документа) 4. платежка(id, type,...) (наследник документа) иерархия в документе введена, чтобы, в частности, реализовать создание платежки на основании счета и счетов фактур ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 13:32 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=154&tid=1545877]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 273ms |
| total: | 388ms |

| 0 / 0 |
