powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реализация журнала проводок.
27 сообщений из 27, показаны все 2 страниц
Реализация журнала проводок.
    #34909697
Бизон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите советом для реализации такой схемы. Есть у меня таблица – журнал проводок. Основные поля. ID – суррогатный ключ, Data – дата проводки, Db – счет дебета, Kt – счет кредита, а вот дальше у меня затык надо реализовать ссылку на документ выполнивший эту проводку, а они находятся в разных таблицах, и эти таблицы имеют различную структуру. В качестве сервера БД – FireBerd. Заранее спасибо.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34909782
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавить поля ID документа и поле "имя таблицы"
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34909830
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бизон пишет:
> Помогите советом для реализации такой схемы. Есть у меня таблица –
> журнал проводок. Основные поля. ID – суррогатный ключ, Data – дата
> проводки, Db – счет дебета, Kt – счет кредита, а вот дальше у меня затык

Суммы, суммы нет еще. Где сумма ?

> надо реализовать ссылку на документ выполнивший эту проводку, а они
> находятся в разных таблицах, и эти таблицы имеют различную структуру. В

Используй отношение подкатегории. Оно же наследование в OOA/OOD.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34909837
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey888 пишет:

> добавить поля ID документа и поле "имя таблицы"

Это -- из цикла "советы как ненадо делать".
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34910072
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
sergey888 пишет:
> добавить поля ID документа и поле "имя таблицы"
Это -- из цикла "советы как ненадо делать".
Я не агитирую за такой метод, но хотелось бы понять Ваши мысли, почему именно так не надо делать. Ибо если не вдаваться в тонкости, метод кажется весьма железобетонным для новичка, особенно если уметь писать триггеры.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34910641
Бизон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Используй отношение подкатегории. Оно же наследование в OOA/OOD.
Posted via ActualForum NNTP Server 1.4

Можно подробней. Спасибо.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34910661
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34910675
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов пишет:
> Я не агитирую за такой метод, но хотелось бы понять Ваши мысли, почему
> именно так не надо делать. Ибо если не вдаваться в тонкости, метод
> кажется весьма железобетонным для новичка, особенно если уметь писать
> триггеры.

И динамические запросы. А динамические запросы есть зло.

В хорошо спроектированной БД информация о том, где что лежит, должна
быть статической, должна быть метаинформацией, а не информацией как таковой,
используемой в работе. Короче, такие хачки только для Клиппера и DBase-а
проходят, да и то (я бы сказал) очень плохим стилем считаются.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34910699
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бизон пишет:
> Используй отношение подкатегории. Оно же наследование в OOA/OOD.

> Можно подробней. Спасибо.


CREATE TABLE DOCUMENT (doc_id int primary key , ....)

create table INVOICE (invoice_id int primary key, ..... constraint
DOC_in_INVIOCE foreign key (invoice_id) referencing DOCUMENT)

create table INVOICEXXX (invoicexxx_id int primary key, ..... constraint
DOC_in_INVIOCEXXX foreign key (invoicexxx_id) reference DOCUMENT)

....

create table TRANS (
trans_id int primary key,
trans_date date,
db_id int reference ACCOUNT,
cr_id int reference ACCOUNT,
summ numeric(20,2),
doc_id int reference DOCUMENT)



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34911292
Бизон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OOA/OOD скажите как расшифровать?
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34911305
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бизон пишет:
> OOA/OOD скажите как расшифровать?

Object-Oriented Analysis/Object-Oriented Design
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34912144
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivИ динамические запросы.
В общем случае - нет.

Абстрактный пример каскадного удаления с динамикой в триггере на Y (мог и наврать немного по мелочи, хотел смысл передать):
'delete from '+@X+' from deleted where '+@X+'.id_Y=deleted.id_Y and deleted.type='''+@X+''''

То же самое без динамики, если известно, какие таблицы каскадно удаляются.
delete from child1 from deleted where child1.id_Y=deleted.id_Y and deleted.type='child1'
delete from child2 from deleted where child2.id_Y=deleted.id_Y and deleted.type='child2'
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34912285
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бизоннадо реализовать ссылку на документ выполнивший эту проводку, а они находятся в разных таблицах, и эти таблицы имеют различную структуру.
Я бы конечно сделал бы одну таблицу Документы, но если уж разные, то надо обеспечить сквозной уникальный doc_id и union по всем таблицам
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34912622
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод
то надо обеспечить сквозной уникальный doc_id и union по всем таблицам

Сквозной уникальный не обязателен - можно составной ключ сделать.
Имхо это проще и нагляднее.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34921669
Cheprasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется лучше завести еще одну таблицу, где будут храниться все номера документов, и сквозная нумерация всех документов.
Именно по этому сквозному номеру находить тип документа а потом сам документ.
Чтобы упростить запросы сделать представленя UNION всех докуменов и от туда вытаскивать данные необходимые для проводок.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34923957
Pusto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БизонОсновные поля. ID – суррогатный ключ, Data – дата проводки, Db – счет дебета, Kt – счет кредита...
Я в свое время так и сделал. Но в банковском бухучете есть проводки, у которых по Дт идет одна сумма, а по Кт - другая. Причем и валюты у этих сумм разные! В этом случае надо либо вводить фиктивные счета, либо делить проводки на пары "Дт-Сумма" и "Кт-Сумма".
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34982497
Бизон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheprasovМне кажется лучше завести еще одну таблицу, где будут храниться все номера документов, и сквозная нумерация всех документов.
Именно по этому сквозному номеру находить тип документа а потом сам документ.
Чтобы упростить запросы сделать представленя UNION всех докуменов и от туда вытаскивать данные необходимые для проводок.

Можно подробней. Пытался реализовать. Получается полная ерунда.
Как с точки зрения реляционной модели реализовать, ссылку на несколько таблиц из одного поля. Столкнулся с еще одним местом где это надо применит. При вводе документа на основании другого. Тоже необходимо сохранить ссылку на документ родитель, а из может быть несколько.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34984091
SPQR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БизонКак с точки зрения реляционной модели реализовать, ссылку на несколько таблиц из одного поля.
Никак. Все д.б. наоборот - эти "несколько таблиц" должны ссылать на одно поле в таблице документов.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34985978
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPQR БизонКак с точки зрения реляционной модели реализовать, ссылку на несколько таблиц из одного поля.
Никак. Все д.б. наоборот - эти "несколько таблиц" должны ссылать на одно поле в таблице документов.
+1
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34986153
Бизон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо ввести промежуточную таблицу, что-то типа журнал документов. Я правильно понял? И на ее основе организовать связь многие ко многим.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34987956
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БизонНеобходимо ввести промежуточную таблицу, что-то типа журнал документов. Я правильно понял? И на ее основе организовать связь многие ко многим.
мысль что документ ссылается на проводки. а не наоборот.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34988217
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совсем рядом на сегодня.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34989539
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему Вы считаете, что Ваш проект не постигнет участь открытых бизнес*систем, которые не развившись и не избавившись от багов замирают?
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34989653
Бизон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apapacyПочему Вы считаете, что Ваш проект не постигнет участь открытых бизнес*систем, которые не развившись и не избавившись от багов замирают?

Это в к чему сказали?
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34989737
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри! Видно использовал кнопку "Предыдущая страница". Пост к другой теме относился.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34989780
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправляюсь.

1. То что Вы хототе организовать - это объект документ и объекты порожденные от объекта документ. В такой БД как PostgreSQL наследование включено в функционал БД. Если БД не поддерживает такой функционал - и литература и визуальные средства предлагают реализовать наследование при помощи заведения в таблицу-родитель специального поля "дискриминант"

Таблица-родитель
ИД-документа
--------------------
Дискриминант (int)

Таблица-потомок А
ИД-документа (ссылка на ИД-родителя)
--------------------------------------------
поле1...

Таблица-потомок Б
ИД-документа (ссылка на ИД-родителя)
--------------------------------------------
поле1...

Насколько это соответсвует реляционной модели данных? Вобщем, исходя из требования извлекать информацию только из таблиц, наверное, нужно еще создать еще таблицу

Дискриминанты
Дискриминант (int)
-----------------------------------
ИмяТаблицы (varchar)

2. Хранить в документе ссылку на проводку кажется хорошим ходом. Поскольку именно из документа Вы проводите и отменяете проведения документа.

Выбор того или иного варианта реляционной модели зависит от того как Вы собираетесь использовать данные. Например получить ссылку на документ из таблицы проводок скорее важно для большей информативности. Посмотреть что и как бало проведено. Поэтому думать о производительности в данном случае не так важно. В то же время проводиться и отменяться документы будут в массовом порядке. Поэтому хранить в документе ИД проводки - я за.
...
Рейтинг: 0 / 0
Реализация журнала проводок.
    #34989857
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPQR БизонКак с точки зрения реляционной модели реализовать, ссылку на несколько таблиц из одного поля.
Никак. Все д.б. наоборот - эти "несколько таблиц" должны ссылать на одно поле в таблице документов.

Ссылка в смысле Foreign key? Так просто создаёшь несколько ограничений FK для одного поля таблицы на PK в разных других таблицах. Только толку от таких FK обычно не много.

Формально можно смоделировать сущность документ, и дочерние к этой сущности специализированные сущности для конкретных видов документов. Связать их по PK. Из сущности проводка смоделировать связь с сущностью документ.

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

В объектных БД гораздо проще смоделировать абстрактный тип документ и специализированные подтипы конкретных видов документов.

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


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