powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД для банка
25 сообщений из 51, страница 1 из 3
Проектирование БД для банка
    #38981208
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

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

Для начала рассмотрим понятие Банк более детально
1. Физическое устройство банка (персонал, услуги, подразделения).
2. Клиенты (физ. лица, юр. лица).
3. Внутренние операции (счета, пополнение/вывод, перерасчет(кредит,или накопительный счет), поручения, архив, статистика).
4. Внешняя политика банка (инвестиции, займы).

Возможно имело бы смысл раскидать п. 3 по п. 1 и 2.,все-такие физ. лица и юридические лица совершают разные операции, но мне так кажется, что логически там большой разницы нету.

Хотелось бы, чтобы вы заценили. Если все норм, пойду расписывать каждый пункт более подробно, определять сушности и зависимости.

П. С. зачеркнутым я пометил то, что очень вероятно не стоит пока делать (а может и вообще не стоит)
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981345
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не взлетит.

Чтобы взлетело, упростить надо столько, что ничего не останется. Количество видов финансовых инструментов, видов сделок и сложность их внутренней механики такова, что новичку с нуля это не по плечу.

Попробуйте выбрать только один пункт/направление автоматизации и проработать его хоть насколько-то добросовестно.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981358
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemo... очень вероятно не стоит пока делать (а может и вообще не стоит)
Без знания предметной области Вам вообще нет смысла суетиться. Все уже "украдено" до Вас.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981365
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторБез знания предметной области Вам вообще нет смысла суетиться
Для саморазвития очень даже есть смысл, особенно если имеется доступ к работающей банковской АБС (поглядеть, как другие делают)
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981381
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-ЛПопробуйте выбрать только один пункт/направление автоматизации и проработать его хоть насколько-то добросовестно.
В принципе так и планирую поступить с п. 3

Вот так я разрисовал п. 1

# Employees
Эта часть у меня будет скорее для красоты и для количества таблиц и понимания того,что я полностью описал предметную область
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#  Employye personal info 
CREATE TABLE EmployeePersonalInfo (Id bigint AUTO_INCREMENT, firstName  varchar(20) NOT NULL, lastName varchar(20) NOT NULL, phone varchar(20), 
  address varchar(50), Salary bigint NOT NULL,PRIMARY KEY(Id));

#  Employye basic info to login to Workstation and proceed to work
CREATE TABLE EmployeeInfo (Id bigint AUTO_INCREMENT, EmployeePersonalInfoId bigint, login varchar(20) NOT NULL, pass varchar(20) NOT NULL, WorkPhone varchar(20), 
  PRIMARY KEY(Id), FOREIGN KEY(EmployeePersonalInfoId) REFERENCES EmployeePersonalInfo(Id));

# List of All possible Positions (manager, cashier, director, etc)
  CREATE TABLE EmployeePositions(Id bigint AUTO_INCREMENT, EmployeePosition varchar(20) NOT NULL, EmployeeDescription varchar(100), PRIMARY KEY(Id));

# List of All possible Permissions (work wit men, with organizations, open/close accounts, etc.) that could be provided to Employee at specific  position
CREATE TABLE EmployeePermissions(Id bigint AUTO_INCREMENT, PermissionName varchar(20) NOT NULL, PermissionDescription varchar(100), PRIMARY KEY(Id));

# Relations of all permissions that could be provided to Employee at specific  position
CREATE TABLE EmployeeRoles (Id bigint AUTO_INCREMENT, EmployeePositionsId bigint, EmployeePermissionsId bigint, PRIMARY KEY(Id),
  FOREIGN KEY(EmployeePositionsId) REFERENCES EmployeePositions(Id), FOREIGN KEY(EmployeePermissionsId) REFERENCES EmployeePermissions(Id));



# Accounts, Services
Услуги банка. Тут мне чего-то в голову не приходит, кроме типов Аккаунтов. Если текущий то %-ная ставка 0, а если кредитный или накопительный, то будет отличаться знак. Возможно стоит еще создать таблицу документов, требуемых для открытия того или иного счета
Код: sql
1.
2.
# List of All possible Accounts (current, credit, etc...)
CREATE TABLE AccountTypes(Id bigint AUTO_INCREMENT, AccountName varchar(100), basePercentage Decimal, currency int, PRIMARY KEY(Id));
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981405
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваша попытка кадрового учета очень слабая. Есть отстоявшийся минимальный набор таблиц для штатного расписания, назначений, переводов и увольнений.

Счета - тоже ноль. Без знания предметной области будет грустно. Прочитайте нормативно-обязательный план счетов банка.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981407
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На всякий случай поясню цель этого проекта. Их 3
1. Спроектировать относительно большую БД (для непрофессиоанала) с кучей таблиц и зависимостями. Тут моя задача это попытаться разобрать по косточкам некую сложную предметную область. Разумеется с приближениями и упрощениями, т. к. я выбрал уж больно сложную тему.
2-3. Это уже относится к Java - Освоить пару фреймворков, сделать эмулятор/рандомизатор событий пришел/ушел клиент, открыл/закрыл счет, создал поручение (единоразовое/регулярное), перерасход средств, банкротство компаний, контроль за достаточностью капитала и т. д. В соответствии с этим, постоянный перерасчет состояний счетов.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981414
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-ЛВаша попытка кадрового учета очень слабая. Есть отстоявшийся минимальный набор таблиц для штатного расписания, назначений, переводов и увольнений.

Ну париться на счет принятий на работу/увольнений, расписаний, болезней, отпусков и т. д. я не буду. Есть какая-то грань, которую я должен провести, чтобы не потонуть.
Ну и в конце концов мне никто не мешает потом систему апгрейднуть в соответствии с принципами SCRUM

Счета - тоже ноль. Без знания предметной области будет грустно. Прочитайте нормативно-обязательный план счетов банка.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981423
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсть отстоявшийся минимальный набор таблиц для штатного расписания, назначений, переводов и увольнений.
Его где-то можно увидеть?
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981448
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-Л Прочитайте нормативно-обязательный план счетов банка.

А где это можно прочитать ?
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981454
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА где это можно прочитать ?
про план счетов банка? Это нормативный документ страны. Чаще всего издается Нац.Банком и называется "план счетов бухгалтерского учета банков ....."(ну или подобным образом)
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981510
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При всем уважении, предметная область для саморазвития очень плохая. АБС одному даже в первом приближении за разумные сроки не сделать. Да и неразумные :-)

Управление клиентскими данными, как раз я, скажем так, специализируюсь по ним. Это одна задача
ОШС - это вторая
Отчетность в ЦБ - это третья
Сложная процедура работы с кредитами - там вариаций не счесть
Сложная процедура работы со счетами - там вариаций не счесть
интеграция с карточными системами, банкоматами, разного рода прикладными системами с одной стороны, и АБС с другой.

В общем, все очень и очень сложно для одного человека, который при этом и в предметке не понимает.

PS Слышал давно про какую то АБС (на заре становления ИТ в постперестроечной России), которая была написана на бат-никах :-) Наверное, это из категории приснопамятного антивируса Попова. Так что есть шанс повторить подвиг.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981548
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНу париться на счет принятий на работу/увольнений, расписаний, болезней, отпусков и т. д. я не буду. Есть какая-то грань, которую я должен провести, чтобы не потонуть.
Я же говорю - вы замахнулись на масштаб, из которого вам придется выкинуть слишком много, т.е. то, что составляет суть задачи. Кадры:
перечень физлиц
справочник должностей
структура организации по подразделениям
штатное расписание в разрезе структуры и должностей
приказы о назначении/переводе/увольнении физлиц в/из слоты штатного расписания

Это минимум, без которого подсистема не может назваться кадрами.

За скобками оставлены отпуска/больничные, табель, зарплаты, налоги на з/п ...
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981570
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-ЛавторНу париться на счет принятий на работу/увольнений, расписаний, болезней, отпусков и т. д. я не буду. Есть какая-то грань, которую я должен провести, чтобы не потонуть.
Я же говорю - вы замахнулись на масштаб, из которого вам придется выкинуть слишком много, т.е. то, что составляет суть задачи. Кадры:
перечень физлиц
справочник должностей
структура организации по подразделениям
штатное расписание в разрезе структуры и должностей
приказы о назначении/переводе/увольнении физлиц в/из слоты штатного расписания

Это минимум, без которого подсистема не может назваться кадрами.

За скобками оставлены отпуска/больничные, табель, зарплаты, налоги на з/п ...

Справочник должностей есть. До физ. лиц-клиентов еще не дошел. Всякие там подразделения, расписания и движения кадров мне не нужны, ТЗ этого не подразумевает.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981573
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoДо физ. лиц-клиентов еще не дошел
Как бы еще и ЮЛ есть :-) И ИП.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981586
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79GeronemoДо физ. лиц-клиентов еще не дошел
Как бы еще и ЮЛ есть :-) И ИП.

Вы 1-е сообщение темы читали ?

Мне бы не помешала помощь вот в каком вопросе - стандартные услуги банка. Я не хочу залезать в дебри и описывать предметную область полностью - всякие там ячейки хранения и х. з что еще.
Пока что в рамках п. 1, 1-го сообщения темы я придумал только 1 таблицу - AccountTypes, сюда можно запихать сколько угодно типов аккаунтов (кредит на авто, на квартиру, потребительский, текущий счет, вклад на 1 год и т. д.).
Возможно стоит придумать еще несколько типов услуг, но чтобы они занимали какую-либо существенную долю в обороте банка (комиссии при обналичивании ? обслуживание банковский карт, или эти деньги достаются платежным системам).
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981590
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemo,

Разумеется читал. Я как бы вам намекаю, что у ЮЛ и у ФЛ разный набор атрибутов, и разная логика работы. В ЮЛ есть еще холдинги, группы компаний и так далее.

Geronemoя придумал только 1 таблицу - AccountTypes, сюда можно запихать сколько угодно типов аккаунтов
Это что, такой своеобразный продуктовый профиль?
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981607
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoНа всякий случай поясню цель этого проекта. Их 3
1. Спроектировать относительно большую БД (для непрофессиоанала) с кучей таблиц и зависимостями. Тут моя задача это попытаться разобрать по косточкам некую сложную предметную область. Разумеется с приближениями и упрощениями, т. к. я выбрал уж больно сложную тему.
2-3. Это уже относится к Java - Освоить пару фреймворков, сделать эмулятор/рандомизатор событий пришел/ушел клиент, открыл/закрыл счет, создал поручение (единоразовое/регулярное), перерасход средств, банкротство компаний, контроль за достаточностью капитала и т. д. В соответствии с этим, постоянный перерасчет состояний счетов.
Может бать такой вариант стоит рассмотреть:

Если на Java отнесено 2 цели (№2 и №3), то с Java и начинай.
Создавай сервер приложения
а БД "упакуй" в EAV

Если начнёт взлетать - тогда и допилишь (нормализуешь) БД

А так получается задача очень широкая, и времени потребует много
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981611
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПока что в рамках п. 1, 1-го сообщения темы я придумал только 1 таблицу - AccountTypes, сюда можно запихать сколько угодно типов аккаунтов (кредит на авто, на квартиру, потребительский, текущий счет, вклад на 1 год и т. д.).
Это Вы крепко попутались. В банковской практике бывают активные/пассивные/активно-пассивные счета (внебаланс пока не трогаем). То, что придумали Вы, это банковские продукты (в первом приближении кредиты и депозиты всех размеров, сортов и цветов). Для того, чтобы было интереснее, возьмите учебник по банковской деятельности Вашей страны
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981671
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ШайтанGeronemoНа всякий случай поясню цель этого проекта. Их 3
1. Спроектировать относительно большую БД (для непрофессиоанала) с кучей таблиц и зависимостями. Тут моя задача это попытаться разобрать по косточкам некую сложную предметную область. Разумеется с приближениями и упрощениями, т. к. я выбрал уж больно сложную тему.
2-3. Это уже относится к Java - Освоить пару фреймворков, сделать эмулятор/рандомизатор событий пришел/ушел клиент, открыл/закрыл счет, создал поручение (единоразовое/регулярное), перерасход средств, банкротство компаний, контроль за достаточностью капитала и т. д. В соответствии с этим, постоянный перерасчет состояний счетов.
Может бать такой вариант стоит рассмотреть:

Если на Java отнесено 2 цели (№2 и №3), то с Java и начинай.
Создавай сервер приложения
а БД "упакуй" в EAV

Если начнёт взлетать - тогда и допилишь (нормализуешь) БД

А так получается задача очень широкая, и времени потребует много

Мне чтобы с Java начать нужна какая-то БД, чтобы тужа забить какие-то данные (конкретных клиентов, счета, услови их обслуживания). А потом сделаю эмулятор, который будет заниматься разного рода финансовыми операциями от случайно выбранного клиента.

Мне нужна некая приближенная модель + логика обработки данных. Я там расписал Понятие сотрудник на 6 таблиц. Я вообще мог обойтись 1-й таблицей - ФИО, логин и пароль. Все. Этого приближения уже вполне достаточно было бы. Но я сделал целых 6 таблиц, а мне тут советуют всякие подразделения, расписание, приказы о переводе/повышении и т. д.

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

Суть проекта и требования к нему следующие.
1. Это должен быть достаточно большой с т. з. количества сущностей проект. Я не проектировщик БД, это не моя прямая специальность. Но хотелось бы иметь в активе тот факт, что я на довольно сложной предметной области смог вычленить самое главное и при этом структура все равно оставалась бы близкой к реальности, довольно сложной и большой для непрофессионала и некоммерческого продукта (таблиц 30, например).
2. БОльшая часть проекта, это не БД, а Java, бизнес-логика. На самом деле я нечто подобное написал в 1-м сообщении
GeronemoВ целях саморазвития хочу сделать проект, симулирующий работу банка. Для начала надо определить структуру БД. Понимаю, что предметная область очень большая, поэтому будут некоторые упрощения.
Как видите, структура БД для меня это только начало проекта и если я создал тему здесь, а не в подфоруме java, это только потому что я для начала хочу понять от чего мне отталкиваться, от каких данных. Мне не нужна детализация, по которой были бы подразделения, отделения (время их работы и пр. атрибуты), банкоматы, штатные расписания, потому что я этими данными нигде оперировать не буду. Они будут статичны, либо таблицы будут пустыми. Что я вобью вручную, то и будет. А логически, если человек берет кредит, то разницы большой нету, в каком именно отделении он это делает. Только, если ради ведения статистики (в целях повышения эффективности). Но опять же, это очень сильно усложняет задачу. Возможно я к этому вернусь позже, на итерации номер 3 (я тут писал чуть выше про SCRUM).
3. Для меня важно было, чтобы в рамках проекта я оперировал бы каким-то одним ресурсом (в этом случае - деньги), чтобы сделать систему максимально нагруженной и при этом суметь справиться со всякими коллизиями (вопросы синхронизации потоков, защиты данных и т. д.). Вот почему это именно банк. У меня есть пара проектов значительно более простых и там такого рода задачи решаются очень просто. Для меня этого мало.
4. По поводу глубины детализации. Возможно все же стоит какую-то часть предметной области изучить досконально. И, в принципе, Персонал для этого вполне подходит, т. к. таблицы будут все равно пусты и если что-то не так, то помешать бизнес-логике приложения это не сможет.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981675
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, у меня возник наиинтереснейший вопрос - с какого счета банк платит зарплату, аренду и пр. расходы. У банка есть свой собственный счет в своем банке ?

П. С. как видите, углубляясь в предметную область у меня появляются вопросы и это будет отражено в модели. Потому что я хочу отслеживать финансовое состояние банка онлайн, для этого мне нужны и зарплаты и постоянные издержки и налоги и % невозврата и возможные банкротства юр. лиц и т. д.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981695
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xenix, можно посмотреть модели здесь
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981696
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжение п. 1

# The internal structure of the bank

# List of All possible Accounts (current, credit, etc...)
CREATE TABLE AccountTypes(Id bigint AUTO_INCREMENT, AccountTypeName varchar(50) NOT NULL, basePercentage decimal NOT NULL, currency int NOT NULL, PRIMARY KEY(Id));

# List of All possible Services (comissions for transfers, payments for sms-informer, etc...)
CREATE TABLE ServicesTypes(Id bigint AUTO_INCREMENT, ServicesTypeName varchar(50) NOT NULL, basePercentage decimal NOT NULL, minimalCost decimal, PRIMARY KEY(Id));

# Maybe Load this Info from XML ?
CREATE TABLE TaxesTypes(Id bigint AUTO_INCREMENT, TaxesTypeName varchar(50) NOT NULL, basePercentage decimal NOT NULL, PRIMARY KEY(Id));

# Costs: rent, depreciation..... wages fund, social fund
CREATE TABLE CostsReport(Id bigint AUTO_INCREMENT, Month int NOT NULL, Year int NOT NULL, FixedCosts decimal NOT NULL, VariableCosts decimal NOT NULL, PRIMARY KEY(Id));

# Payments: percents for saving account, payments when client close account, percents for external loans, investment payments
CREATE TABLE PaymentsReport(Id bigint AUTO_INCREMENT, Month int NOT NULL, Year int NOT NULL, TotalPayments decimal NOT NULL, PRIMARY KEY(Id));

# Income: percents for credits, comissions, investment revenue
CREATE TABLE IncomeReport(Id bigint AUTO_INCREMENT, Month int NOT NULL, Year int NOT NULL, TotalIncome decimal NOT NULL, PRIMARY KEY(Id));

Что-то типа такого для начала.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981702
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1xenix, можно посмотреть модели здесь

Спасибо за ссылку. Такое ощущение, что моя модель будет даже посложнее, чем у них.
...
Рейтинг: 0 / 0
Проектирование БД для банка
    #38981711
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторможно посмотреть модели
Спасибо. Посмотреть можно, конечно. Вопрос немножко в другом: темы, которые я прочитал на sql.ru по поводу проектирования базы отдела кадров, в конечном итоге заканчивались двумя пунктами. Пункт первый: автор - балбес и в своей схеме не учел (дальше идет список требований на две страницы А4 10-м кеглем). Пункт второй: а вот в нашей системе учету кадров посвящено 150 таблиц, 700 хранимых процедур и 200 триггеров (учитывается и обрабатывается все, что может присниться только в пьяном угаре). Не было только одного - схемы этой великолепной БД из 150 таблиц. Вот мне и интересно - знает ли кто-то на sql.ru топик, где приведена схема БД кадров, оборенная всеми местными посетителями без любьимых уверток про бизнес-логику, бизнес-требования и прочие ужасы того же порядка
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД для банка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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