|
|
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Немного залип на задании спроектировать бд. Даны три сущности: 1. Клиенты - id, ФИО, дата открытия, дата закрытия 2. Счета - номер счёта, клиент, баланс счёта, даты открытия и закрытия 3. Платежи - id, дата, сумма, номер счета дебета, номер счета кредита, описание платежа. Плохо понимаю типы взаимосвязей между сущностями. По идее у клиента со счетами связь один ко многим ( у одного клиента много счетов), в то же время у счета с платежом та же связь (на один счет может поступать множество платежей). Судя по полям в платежах, счета нужно разбить на две сущности - счета дебета и счета кредита, но не уверен. Также была мысль вынести дату открытия-закрытия в отдельную сущность, т.к. поле встречается сразу в трёх таблицах. Куда думать дальше и какие ошибки я уже совершил? :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:24 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolf, учтите, что платежи могут быть не только между клиентами, а на счета в другие банки, банковские комиссии, начисления процентов и прочие клиентами могут быть не только физические лица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:33 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Naf, настолько глубоко углубляться пока не нужно ) " что платежи могут быть не только между клиентами " Я думал что платежи могут быть только между счетами :D причём не до конца понятно как именно со счетами связаны. Возможно ли, что когда совершает платёж, он заносится и в счёт дебета, и в счёт кредита одновременно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:37 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolfNaf, настолько глубоко углубляться пока не нужно ) " что платежи могут быть не только между клиентами " Я думал что платежи могут быть только между счетами :D причём не до конца понятно как именно со счетами связаны. Возможно ли, что когда совершает платёж, он заносится и в счёт дебета, и в счёт кредита одновременно? Да, между счетами, я имел ввиду, что счета между которыми проводятся переводы принадлежат не только клиентам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:42 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Вот простейшая схема. Здесь текущий баланс счета получается расчетным путем. Можно в счета добавить атрибут "Сумма баланса". Тогда нужно обеспечить непротиворечивость между таблицами платежей и счетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 13:52 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Naf, немного не понимаю в схеме - над стрелками написаны атрибуты или сущности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 14:07 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolf, Хммм.... Счета в банке не бывают дебетовыми или кредитовыми. Naf описал более правильную схему: 1) у клиента есть счета. При этом клиентом может выступать кто угодно: Юр лицо, Физ лицо, другой банк, свой банк. У клиента есть разделение (в зависимости от типа, какие счета на него можно открывать, об этом ниже в банковском плане счетов) 2) У проводки есть 2 счета дебетовый и кредитовый. Любой счет может выступать как по дебету так и по кредиту. (У проводки, кстати, еще нужна сумма). Одновременно (!) один и тот же счет и по дебету и по кредиту выступать не может (это бессмысленно) 3) Счета четко относятся к банковскому плану счетов. Первая цифра - раздел плана счетов - по сути определяю отношение этого счета к типу клиенту Первые три цифры (вместе с первой) - счет первого порядка - разъясняют предназначение счета, например 423 - вклады, 408 - расчетные счета Первые пять цифр (вместе с разделом и счетом первого порядка) - счета второго порядка - уточняют предназначение. например 42301 - вклады до востребования, 42302 - вклады до 1 месяцы и тд. Так же в плане счетов стоит важное уточнение что за тип этого счета - актив или пассив. Сумма указанная в проводке изменяет на это значение остаток обоих счетов одновременно (т.е. не может быть такого что проводка поменяла остаток только одного счета), но знак изменения определяет совокупным фактором для каждого счета: а) где стоит этот счет - по дебету или по кредиту б) что у него за тип - активный или пассивный Если, например, проводка между активным и пассивным счетом, то сумма одновременно увеличивается на двух счетах или уменьшается на двух счетах. И это только относительно текущих "таблиц" )))) что бы понять куда расширять эту схему нужно понять что вы вообще описываете. Т.к. если уходить в процессинг (пластик), то там одно. Если в учет ценносей в банке - другое, вклады, кредиты, внебалансы (не знаю используются ли еще), межбанк, внутрибанк, комиссии - это я просто термины набросал, но за ними куча разных процессов и таблиц ))) Если у вас задача спроектировать реальную АБС, то бросьте. Если для курсового - давайте тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 18:23 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Naf, Атрибуты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 19:19 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolfДаны три сущности: 1. Клиенты - id, ФИО, дата открытия, дата закрытия 2. Счета - номер счёта, клиент, баланс счёта, даты открытия и закрытия 3. Платежи - id, дата, сумма, номер счета дебета, номер счета кредита, описание платежа.кем даны и почему именно такие? если это "типа курсовая", то делайте именно так как поставлена задача не нужно городить реальный банк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 19:36 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
аффтар АБС собственную пилит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 20:57 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
lLocust, Ууу, засыпали :D Задачку дали решить, так что слишком сильно углубляться не нужно. Всё что написал - данное мне условие слово в слово. По нему необходимо спроектировать простенькую БД, но так как я с банковскими системами не знаком совершенно не понимаю как сущности связаны между собой. Но ваш пост здорово помог в этом плане! Если рассматривать модель исключительно в рамках условия, то насколько всё плохо в диаграмме? Правильно ли разделены сущности и взаимосвязи? Стоит ли что-то ещё выделить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 21:37 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Дедушка, дали задачку чтобы вспомнить проектирование бд и sql. Я и не собирался выходить за рамки условия, но если есть какие-нибудь мелочи которые можно добавить, то они пойдут в плюс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 21:41 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolfЕсли рассматривать модель исключительно в рамках условия, то насколько всё плохо в диаграмме? В диаграмме все достаточно плохо. Возьмите, действительно, лучше за основу схему Naf'а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 22:27 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Как в этой схеме реализуется связь между счетами и платежами? D: В платежах два внешних ключа "отправитель" и "получатель"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 23:17 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolf Как в этой схеме реализуется связь между счетами и платежами? D: В платежах два внешних ключа "отправитель" и "получатель"? Да ( лучше назвать "счет дебета" и "счет кредита", как написано у Вас в постановке) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 23:30 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, А на какое поле в счёте они должны ссылаться? Оба на клиента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 23:32 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
зачем на клиента - на счет же (на первичный ключ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2016, 23:38 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolf...Всё что написал - данное мне условие слово в слово. По нему необходимо спроектировать простенькую БД... coffe4wolf...Даны три сущности: 1. Клиенты - id, ФИО, дата открытия, дата закрытия 2. Счета - номер счёта, клиент, баланс счёта, даты открытия и закрытия 3. Платежи - id, дата, сумма, номер счета дебета, номер счета кредита, описание платежа. ... Если постановка в виде таблиц, то... сочувствую ))) Просто делайте таблицы как сказано в вашей же постановке. Если хотите, то небольшие уточнения к постановке: 1) баланс счёта (в счете, соответственно) - это, наверное, актуальный остаток. Если хотите, то более правильно вынести это в отдельную таблицу. Т.к. может потребоваться получать остаток на определенную дату (и часто), в текущей постановке это не реализуемо. Можно, конечно, рассчитывать его динамически каждый раз, но это накладно в продуктивной среде при больших объемах. Соответственно при создании проводки нужно пересчитывать остаток счета(ов). 2) Обратите внимание что в постановке в счете нет IDшника, а в платежах ссылка на "номер счета ..". Возможны межбанковские операции. В этом случае заводить в свою систему счета клиентов чужих банков не рационально (да и не возможно), поэтому в этом случае в платежах просто указывается номер счета. (а связь как таковую делать не с чем). Мне кажется что автор постановки это подразумевал, хотя и не факт. 3) да, даты открытия и закрытия можно вынести в отдельную таблицу, только где у вас связь со счетом? (Кстати, было бы неплохо, если бы вы иногда выкладывали обновленную схему) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 10:51 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
да, да выкладывайте. глядишь, совместными усилиями форумчан родится новая АБС-ка в пику поделкам диасофта, бисквитам, инверсиям, кворумам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 19:54 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
lLocust, "(Кстати, было бы неплохо, если бы вы иногда выкладывали обновленную схему) " Просто в моём случае всё настолько аутентично х) "3) да, даты открытия и закрытия можно вынести в отдельную таблицу, только где у вас связь со счетом?" На тот момент я её не связал, таблицу просто вынес для себя. Если вынести даты открытия-закрытия, то на неё 1-к-1 будут ссылаться своими первичными ключами клиенты и счета? Кстати ещё дополнение к заданию, написать запросы: - получить список платежей за прошлый месяц по заданному клиенту и общую сумму проводок за этот период - отобрать открытых клиентов, у которых все счета закрыты - изменить описания проводок по заданному счёту по шаблону «Проводка №» + ID + «по счёту» + номер_счёта + «за дату» + дата_проводки + «на сумму» + сумма_проводки - увеличить текущий баланс заданного счёта на сумму всех проводок за прошлый месяц, где счёт кредита равен заданному счёту Допустим первое частично написал SELECT idpayments, sum(sum_pay) FROM payments WHERE `date_pay` > LAST_DAY( DATE_SUB( CURDATE( ) , INTERVAL 2 MONTH ) ) + INTERVAL 1 DAY AND `date_pay` < DATE_ADD( LAST_DAY( CURDATE( ) - INTERVAL 1 MONTH ) , INTERVAL 1 DAY ) Как мне сюда привязать условие по клиенту? :с ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 00:14 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolfКак мне сюда привязать условие по клиенту?т.к. клиент в данном случае у вас переменная запроса, то я шёл бы от клиента к его счетам (в состоянии открыт в период прошлого месяца) к платежам в которых эти счета либо как счёт дебета, либо счёт кредита и дата платежа в интервале прошлого месяца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 02:18 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Дедушка, Кстати что если сделать внешний ключ из платежей на внешний ключ fkClients в таблице счетов? Или нехорошо получится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 13:05 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolfКстати что если сделать внешний ключ из платежей на внешний ключ fkClients в таблице счетов?Чего вы хотите этим достичь? Почитайте про то зачем нужны внешние ключи (ссылочная целостность, каскадные операции...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 13:16 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
coffe4wolf"3) да, даты открытия и закрытия можно вынести в отдельную таблицу, только где у вас связь со счетом?" На тот момент я её не связал, таблицу просто вынес для себя. Если вынести даты открытия-закрытия, то на неё 1-к-1 будут ссылаться своими первичными ключами клиенты и счета?Почему? Если я правильно помню (просто уже более 6 лет как в банке не работаю :) ), то счета могут переоткрываться. Т.е. на один счет может быть несколько открытий и закрытий. Поэтому я говорил о вынесении этого в отдельную таблицу. Если у Вас упрощенная схема с одним открытием, то отдельная таблица со связью 1 к 1му - излишня (оставляйте тот вариант что сейчас выложили) coffe4wolfКстати ещё дополнение к заданию, написать запросы: По запросам - неееее )))) пробуйте сами coffe4wolf- изменить описания проводок по заданному счёту по шаблону «Проводка №» + ID + «по счёту» + номер_счёта + «за дату» + дата_проводки + «на сумму» + сумма_проводки Что бы выполнить этот запрос нужно дополнить схему комментарием платежа (куда вы будете записывать описание проводки). coffe4wolfSELECT idpayments, sum(sum_pay) FROM payments WHERE `date_pay` > LAST_DAY( DATE_SUB( CURDATE( ) , INTERVAL 2 MONTH ) ) + INTERVAL 1 DAY AND `date_pay` < DATE_ADD( LAST_DAY( CURDATE( ) - INTERVAL 1 MONTH ) , INTERVAL 1 DAY ) Как мне сюда привязать условие по клиенту? :с Нужно взять счета нужного вам клиента (из таблицы Счетов), привязать все платежи по этим счетам (нужно учитывать и дебет и кредит) и эти платежи отфильтровать по дате. И уже в полученных строчках посчитать сумму платежей. ндааааАктив, пассив, дебет, кредит.... о чем я вообще ))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 14:39 |
|
||
|
Нормализация банковской базы
|
|||
|---|---|---|---|
|
#18+
Дедушкаcoffe4wolfКстати что если сделать внешний ключ из платежей на внешний ключ fkClients в таблице счетов?Чего вы хотите этим достичь? Почитайте про то зачем нужны внешние ключи (ссылочная целостность, каскадные операции...). подумал что так будет проще выводить клиента с платежа х.х ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2016, 16:23 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=13&tid=1540269]: |
0ms |
get settings: |
18ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
2ms |
| others: | 298ms |
| total: | 484ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...