Мое приложение должно реализовать отношение один к одному между несколькими таблицами.У меня есть таблица, в которой хранятся компании (которые могут быть покупателями и поставщиками или и тем, и другим).Есть двухбитные поля, Клиент и Поставщик.
Тогда у меня есть разные таблицы для различных операций: счета-фактуры, банковские операции, операции Cashdesk.Мне нужно связать платежи со счетами.Платеж не является точной суммой счета, но его можно разделить на каждое количество счетов.Кроме того, счет может быть разделен на несколько платежей.Платежи могут быть как из банковских, так и из кассовых операций
Мой оригинальный подход заключался в том, чтобы иметь таблицу PaymentRelations с внешними ключами InvoiceID, BankOpID, CashOpID и Amount, и для любого платежа между ними я создаю запись сзаполнены только два иностранных удостоверения личности и соответствующая сумма.Таким образом, в любой момент я могу узнать для каждой операции (счет или платеж), сколько было оплачено.
Также существуют требования RI, поэтому, если документ связан с платежным отношением, его нельзя удалить (или там).Это каскадное удаление, поэтому при удалении документа оплаты счета-фактуры соответствующие записи PaymentRelations удаляются, поэтому операции с контрагентами освобождаются - они больше не участвуют в платежных отношениях, поэтому их сумма может полностью использоваться в других платежных отношениях).
Но появилась другая ситуация.Поскольку партнеры могут быть как клиентами, так и поставщиками, можно компенсировать один и тот же тип операции на стороне клиента и поставщика одного и того же партнера (например, партнер является как клиентом, так и поставщиком, он выставил счет в качестве поставщика на 100 и получил счет-фактуру).как клиент на 150, 50 получил компенсацию между полученным и отправленным счетом, а остальная часть оплачивается через одну или несколько платежных операций).Это может также произойти для других операций (например, он оплатил через банковскую операцию 100, он получил через другую банковскую операцию 200, и между этими двумя операциями должна быть произведена компенсация 50; то же самое относится и к операциям caskdesk).
Какой подход вы бы использовали для моделирования такого рода отношений?