|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
Добрый день, уважаемые форумчане! Направьте меня на правильный путь. Простецкое задание по созданию базы данных банка, но я уже 3й день не могу додуматься, как правильно организовать базу в Access. В общем суть вопроса - контрольная работа. Нужно создать базу данных банка. С кредитами и счетами клентов. Я это представил себе так: Создаются таблицы: клиенты, тип кредита, кредит, погашения по кредиту, тип вкладов, транзакции по вкладу. Сначала хотел все усложнить с различными типами кредитов, различными типами вкладов, но вскоре понял, что я не понимаю, как правильно построить связи и как производить вычисления. Я бы не писал сюда, если бы изначально не пытался сам все вычитать и понять, но мне кажется, что я совсем не там копаю. Допустим, создал все таблицы. В таблице клиенты: Код клиента Фамилия Имя Отчество Тип кредита: Код кредита код клиента Сумма кредита // Не более 2 500 000р. залог //Нужен для того, чтобы получить кредит более 2 500 000р Срок //в годах Процент по кредиту //выбирается от балды Процент //сделал отдельное поле для простоты вычисления. делит процент на 100 и прибавляет единицу Плтаеж //Вычисляет сумму ежемесячного платежа Дата получения кредита Полностью погаен //логика да/нет Сумма кредита + процент Погашение кредита: Код погашения Код кредита Сумма погашения //можно выбрать либо минимальный платеж из таблицы "тип кредита", либо любую сумму Дата погашения Скорее всего я неправильно понимаю, как работать с запросами Сделал запрос погашения кредитов, где вывожу номер кредита, сумму погашения и дату погашения. но сумма погашения выходит не числом, а id Как построить логику просрочек платежей? Как сделать, чтобы вместо id высвечивались данные из конкретной ячейки //фамилии, суммы... Как построить логику погашения кредита, чтобы он погасился и не было такой ситуации, что погасили больше, чем сам кредит? По счетам Счет клиента: Код счета Код клиента Дата клиента Сумма на счету //я так понимаю ее можно обновлять запросом, но все равно не получилось сделать Транзакции: Код транзакции Код счета Сумма внесения Сумма снятия //как сделать, чтобы снять нельзя было больше, чем имеется на счету. из разряда: if ( [Сумма на счету] <= [Сумма снятия] ) { "Недостаточно средств" } Прикладываю одну из самых полных баз, которую начинал делать Буду очень признателен в помощи Не прошу сделать ее за меня, прошу помочь разобраться ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 11:10 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 11:11 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
g4ssam Направьте меня на правильный путь. Простецкое задание по созданию базы данных банка, но я уже 3й день не могу додуматься, как правильно организовать базу в Access. банка Сделать базу в postgresql, очевидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 11:27 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
g4ssam, Начинаем разговор....(Карлсон который живет на крыше) -гляньте это -с банковскими "делами" знаком очень поверхностно-если нужно хранить еще какие-то данные-имеется ввиду еще какую-то сущность (а не наполнение созданных таблиц)-укажите -всякие дополнения на хранимых данных,типа графика платежей(задолженности на конкретную дату,остатков по выплатам и т.д и т.п-это позже) а пока определитесь какие еще данные(именно данные,а не инфу которую можно получить из этих данных)необходимо хранить ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 13:05 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
sdku, добрый день Если я правильно понял 1. То хранить дополнительные данные должны быть, допустим, сумма платежей клиента по его кредиту, чтобы используя эту информацию вычислять и обновлять "остаток кредита" Но это нужно только для того, чтобы последний платеж был не больше остатка по кредиту. Как-то так 2. Хочу уже максимально упростить базу, чтобы не запутаться в ней. Чтобы не было ничего лишнего Есть клиент он может взять кредит и открыть счет он может гасить кредит(главное, чтобы он не выплатил по кредиту больше, чем нужно) Когда клиент погасит кредит, то на этом кредите просто появится логическая галочка, что кредит погашен он может пополнять и снимать со счета деньги(главное, чтобы он не смог снять больше остатка) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 13:42 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
g4ssam, Гляньте это Если устроит доработаем учет выплат, расходы по счету,округление и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 18:07 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
вдогонку:в тбл."счет" записи с кодом<11 удалить(созданы при отладке) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 22:43 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
Хм... У нас есть клиент. Он может открыть дебетовый счёт в банке, закрыть этот счёт в банке, положить деньги, снять деньги не более того, что есть на счету, перевести часть денег куда-то, получить откуда-то деньги. Клиент так-же может открыть кредитовый счёт, снять с него деньги не более лимита (усложнять логику не будем), перевести куда-то деньги (оплатить покупку), положить деньги (погасить кредит), либо кто-то другой положит деньги. Исходя из этого имеем: Таблицу с клиентам и: банковский номер клиента, ФИО, разные другие данные. Таблицу со счетами : Тип счёта (дебет, кредит). номер счёта. Какому клиенту принадлежит. Статус счёта (рабочий, закрытый). Баланс счёта (сколько денег лежит на счету) обновляется после каждой транзакции. Таблицу с транзакциями : Номер счёт. Сумма прихода или расхода (приход идёт плюсом, расход идёт минусовой суммой. Источник прихода или расхода (магазин, банкомат, касса банка). Может быть понадобится Тип операции (приход денег, снятие денег наличкой, оплата). Это минимум! Информацию по кредиту - срок, проценты и прочее можно вынести в отдельную таблицу, а можно хранить в таблице со счетами. Но лучше вынести. После этого уже можно и запросы, и формы строить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 15:53 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
Stanislav P Хм... У нас есть клиент. Он может открыть дебетовый счёт в банке, закрыть этот счёт в банке, положить деньги, снять деньги не более того, что есть на счету, перевести часть денег куда-то, получить откуда-то деньги. Клиент так-же может открыть кредитовый счёт, снять с него деньги не более лимита (усложнять логику не будем), перевести куда-то деньги (оплатить покупку), положить деньги (погасить кредит), либо кто-то другой положит деньги. Исходя из этого имеем: Таблицу с клиентам и: банковский номер клиента, ФИО, разные другие данные. Таблицу со счетами : Тип счёта (дебет, кредит). номер счёта. Какому клиенту принадлежит. Статус счёта (рабочий, закрытый). Баланс счёта (сколько денег лежит на счету) обновляется после каждой транзакции. Таблицу с транзакциями : Номер счёт. Сумма прихода или расхода (приход идёт плюсом, расход идёт минусовой суммой. Источник прихода или расхода (магазин, банкомат, касса банка). Может быть понадобится Тип операции (приход денег, снятие денег наличкой, оплата). Это минимум! Информацию по кредиту - срок, проценты и прочее можно вынести в отдельную таблицу, а можно хранить в таблице со счетами. Но лучше вынести. После этого уже можно и запросы, и формы строить. Смешно. Щас мы ТС легко до полной АБС все нарастим. Беда в том, что я настолько хорошо знаю внутреннюю механику по кредитам, что не смогу выделить для него искусственный игрушечный пример. Из банковского могу предложить маленький кусок - банковский план счетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 22:52 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
План счетов ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 22:59 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
Программист-Любитель, Да этому студенту (скорее всего) нужно 5-10 таблиц с минимальной логикой чтоб сдать зачет или курсач... Если это даже местный "занимала" - то всё равно не более того... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 23:10 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
Программист-Любитель Смешно. Щас мы ТС легко до полной АБС все нарастим. Беда в том, что я настолько хорошо знаю внутреннюю механику по кредитам, что не смогу выделить для него искусственный игрушечный пример. Из банковского могу предложить маленький кусок - банковский план счетов. ТСу нужен минимум чтобы понять как строить БД, а то он плодит бессмысленные сущности. А усложнить мы можем всегда, даже без использования всей механики российской банковской системы, применяя только обычную логику. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 10:35 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
vmag, Все верно) максимально упрощенная логика работы БД. Поковырявшись еще пару днем немного доделал ее. Осталось разобраться с погашением суммы и как сделать Счет. Что я представляю под счетом Есть 3 связанные таблицы Клиент Счет: код счета, клиент, дата открытия, сумма на счету Транзакции: код транзакции, код клиента, код счета, Пополнение, Снятие Но я не понимаю логику создание, скажем так, самой транзакции Как сделать, чтобы после добавления записи в таблицу транзакций в таблице счета обновлялись данные в графе сумма на счету ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 15:03 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
Приложу, что в данный момент у меня вышло ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 15:05 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
g4ssam Как сделать, чтобы после добавления записи в таблицу транзакций в таблице счета обновлялись данные в графе сумма на счету Делаешь функцию в которую передаёшь код счёта и сумму которая в транзакции. В самой функции находишь счёт по его коду и прибавляешь сумму транзакции к итоговой сумме на счету. Ещё нужны проверки, так как с дебетового счёта снять больше чем есть нельзя. А с кредитового нельзя выше лимита, если он есть в логике приложения. По сути получается так: при заполнении транзакции, после нажатия кнопки "Провести/сохранить/ок" проверяются лимиты счёта и если всё нормально, то транзакция записывается и обновляется сумма счёта. А если нет, то транзакция не проводится о чём сообщается юзеру вводящему данные. PS. Транзакции в твоей программе это просто запись в таблице транзакций: Код счёта, сумма, дата и источник денег. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 10:15 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
Stanislav P, Эту функцию нужно создавать в событиях? и подскажите, как сделать, чтобы он находил нужную ячейку по коду? Проверку понимаю, как написать В данный момент в форме транзакции сделал так Клиент Счет Пополнение Снятие дата Сумма на счету Сумма на счету выводится из таблицы счета То есть все как надо Но вопрос не закрыт, как обновить это значение?) Глаза уже замылились ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 10:38 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
Stanislav P, Даже так Какая функция поможет мне обратиться к определенному полю в таблице, грубо говоря: функция1 ([нужное поле];"таблица";фильтр выбора определенного поля(по ключевому, доустим)) и был бы, макрос, наверное, который бы после нажатия кнопки добавить запись, которая стоит у меня в форме, изменял данные в той таблице функция1 =dlookup(которая бы брала первоначальные данные из нужного поля) + Формы!Транзакции!Пополнение - Формы!Транзакции!снятие ну, а в проверку поставить Снятие<=dlookup так вот! какая может быть эта функция1 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 12:09 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
g4ssam, Земляк,да что ж ты так упорно не желаешь разобраться в примере,что предложен и хочешь обновить какую-то сумму(вычисляемое поле,которого в таблице вообще быть не должно). Вся "транзакция" это не более чем запись в таблице. Недопустимость же снятия суммы превышающей остаток/лимит элементарно проверяется (и при необходимости событие отменяется) на BeforeUpdate ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 12:24 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
sdku, Ох, честно! Надоело разбираться в БД) Прислушаюсь ка я к вам Уберу к чертям сумму на счету в таблице счета Сделаю просто запрос на остаток ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 12:30 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
Спасибо всем за помощь и подсказки! получилось сделать то, что я хотел Остатки по кредитам и счетам реализовал через запросы А данные с запросов брал через функцию dLookUp Выложу ту базу, которая у меня получилась Может быть какому-нибудь студенту пригодится БД Банк кредит и счета ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 15:08 |
|
Нужна помощь в логике построения базы данных
|
|||
---|---|---|---|
#18+
g4ssam, Хотел бы еще подметить, что таблица кредит неправильно считает ежемесячный платеж Все дело в том, что источник строк у ставки и срока были не значения, которые задавались в таблице вид, а было ключевое поле Это для тех, кто будет качать, если она кому-то вообще пригодится) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 17:53 |
|
|
start [/forum/topic.php?fid=45&msg=39961902&tid=1610088]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 579ms |
0 / 0 |