![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Домашнее задание по курсу «Реляционные БД». [IB4.x, IB5.x, IB6.x, MSSQL, MySQL, dBase, FoxPro, Paradox]
красотка (С) © (2007-10-02 21:02:00)После очередного занятия по курсу «Реляционные БД», преподаватель дал задание построить модель некоторой БД, которая должна хранить информацию о банковских счетах и операциях поведенных по ним.
Далее он пояснил, что собственно банковский счет состоит из 20-ти знаков. Первый знак это номер раздела баланса – обычно цифра. Второй и третий разряд – это балансовый счет первого порядка. Четвертый и пятый разряд – это балансовый счет второго порядка. Разряды с 6-го по 8-ой определяют код валюты, так рубли например 810, доллары США 840, евро 978, кроме того в этих разрядах может быть указан код драгоценного метала, например АХХ, где А – символ, а ХХ число. 9-ый разряд резервное поле. 10-ый и 11-ый разряды определяют индекс банка, а 12-ый и 13-ый определяют индекс подразделения банка в котором открыт и ведется счет. Семь последних разрядов (с 14 по 20-ый) и есть собственно счет.
Операция по счету должна содержать следующую информацию: дата совершения, время совершения, номер документа на основании которого проведена операция, сумма операции, а также два признака позволяющие определить как проведена операция (налично/безналично) и проведена она по дебету счета либо по кредиту.
Кроме того, в БД должна храниться информация о наименовании раздела баланса, наименовании счетов первого порядка, наименовании валюты и ее сигнатуры (RUR, USD, EUR и т.д.), наименовании банка и подразделения банка, а также информация дате открытия и закрытия счета.
Посидев над этой задачкой получилось вот такое решение:
Разделы_Баланаса (ИД_Раздела, Раздел, Наименоваие_раздела)
Счета_первого_порядка (ИД_Счета_ПП, СчетПП, Наименование_счета, ИД_Раздела)
Счета_второго_порядка (ИД_Счета_ВП, СчетВП, ИД_Счета_ПП)
Валюты (ИД_Валюты, Код_Валюты, Наименование_Валюты, Сигнатура_Валюты)
Банки (ИД_Банка, Индекс_Банка, Наименование_Банка)
Подразделения (ИД_Подразделения, Индекс_Подразделения, Наименование_Подразделения, ИД_Банка)
Полный_Счет (ИД_Счета, ИД_Счета_ВП, ИД_Валюты, Резерв, ИД_Подразделения, Счет, Дата_открытия, Дата_закрытия)
Операции (ИД_Операции, Дата_операции, Время_операции, Номер_документа, Сумма_операции, Вид_операции, Тип_операции)
Связи между таблицами по ИД_ххх. Первое поле в каждой таблице ключевое.
Вопрос в том, правильное ли решение? Какое-то громоздкое оно получилось. Т.е. м.б. нужно было просто хранить в одной табличке 20-ти значный счет и все? Кто как считает.
Я вот предполагаю, что если нужно будет сделать, ну скажем запрос для вывода реестра операций за такой-то период, с суммой от ААА до БББ, то придется собирать счет, а это будет медленно работать. А ведь он может задать такой вопрос.
Сергей М. (2007-10-03 10:02:00) [21]
> Это все нафига ?
По всей вероятности - для интерактивного кодирования/декодирования счета.
Игорь Шевченко (2007-10-03 09:39:00) [22]
> Какое-то громоздкое оно получилось
Факт громоздкое. Постановку не очень понял, но таблиц чересчур много
> Далее он пояснил, что собственно банковский счет состоит
> из 20-ти знаков. Первый знак это номер раздела баланса –
> обычно цифра. Второй и третий разряд – это балансовый счет
> первого порядка. Четвертый и пятый разряд – это балансовый
> счет второго порядка. Разряды с 6-го по 8-ой определяют
> код валюты, так рубли например 810, доллары США 840, евро
> 978, кроме того в этих разрядах может быть указан код драгоценного
> метала, например АХХ, где А – символ, а ХХ число. 9-ый разряд
> резервное поле. 10-ый и 11-ый разряды определяют индекс
> банка, а 12-ый и 13-ый определяют индекс подразделения банка
> в котором открыт и ведется счет. Семь последних разрядов
> (с 14 по 20-ый) и есть собственно счет
Это все нафига ? :)
Сергей М. (2007-10-03 08:35:00) [23]
> нужно было просто хранить в одной табличке 20-ти значный
> счет и все?
Для этого ты как раз и завела справочник "Полный_Счет".
> предполагаю, что если нужно будет сделать, ну скажем запрос
> для вывода реестра операций за такой-то период, с суммой
> от ААА до БББ, то придется собирать счет
Это еще зачем ?
красотка (С) (2007-10-03 07:12:00) [24]Видимо серьезные люди сюда больше не заглядывают, решение обсудить не с кем.
(2007-10-02 21:34:00) [25]Удалено модератором
красотка (С) (2007-10-02 21:22:00) [26]Свой ответ я всегда могу аргументировать, в конце я же его не с потолка взял. Просто м.б. кто-то ткнет меня носом и укажет на явный косяк.
Desdechado (2007-10-02 21:15:00) [27]Здесь не может быть вариантов "правильно" и "неправильно".
Если сможешь аргументировать преподавателю свою позицию, это будет правильно. Если же не сможешь, будет неправильно.
Чтобы аргументировать, освежи знания по нормализации данных, хотя бы 1NF-3NF.