powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Cтруктура базы
16 сообщений из 16, страница 1 из 1
Cтруктура базы
    #33306306
valik_marchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Разрабатываем базу данных организации которая будет выдавать кредиты займы и т.д. общей структуры договоров нет, она должна быть расширяемая!
Вопрос в следующем как, лучше расширять заранее не известную структуру?
Есть два варианта, это под новое условия договора создавать таблицу, либо, в одной таблице накапливать поля с новыми условиями.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33306326
Был опыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Однозначно сказать,я думаю, никто не может - но по моему опыту таблицы лучше не плодить.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33306362
mr Red
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО существую 2 пути - либо длинная таблица, либо метаданные не в таблице, а к примеру в XML.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33306760
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valik_marchenko
Первый вопрос, который я задал бы в таком случае - как используются эти договора. Скажем, если для поиска по трем-четырем основным реквизитам и распечатки - любая нестрогая структура, например набор пар "поле-значение" или XML вполне подойдет.

Далее, я спросил бы, не состоит ли договор из некоторого количества [необязательных] частей, логических блоков, типа "реквизиты и контактная информация", "условия кредита", "информация о поручителях" итп. Если состоит, если эти блоки нетривиальны и четко очерчены - завел бы соответствующие сущности, понимая, что расширение может затронуть как добавление полей в эти сущности, так и появление новых сущностей.

Далее, я бы накапливал поля, следя за тем, чтобы структура данных оставалась более-менее понятной и управляемой. Тревожным признаком для меня стало бы слишком большое количество бизнес-правил типа "для договоров типа 18 должны быть заполнены поля A, B, C; для договоров типа 45 - те же, что и для типа 18, плюс еще E и F" и так далее. Возможно, в результате такого напопления пришел бы к желанию выделить еще некоторые сущности.

Наконец, я бы подумал, не окажется ли уместным ОО-подход. Если в типах договоров есть четкая иерархия, может оказаться удобным просто складывать в одну таблицу объекты-наследники соответствующего базового типа.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33306832
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> существую 2 пути - либо длинная таблица

Плохой путь.

> либо метаданные не в таблице, а к примеру в XML.

Еще хуже. Целостность как поддерживать собираетесь?

"в одной таблице накапливать поля с новыми условиями" + версионность + хранение истории изменений. Остальные варианты сильно сложнее.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33309478
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной таблице вряд ли получится.

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

Блоки, о которых говорил softwarer логически обязательно должны быть выделены. Я бы выделил их отдельными сущностями в ER модели, однако они вполне могут лечь в одну физическую таблицу ибо связаны с договором отношением (1 к 1:0).
...
Рейтинг: 0 / 0
Cтруктура базы
    #33310301
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valik_marchenkoДобрый день! Разрабатываем базу данных организации которая будет выдавать кредиты займы и т.д. общей структуры договоров нет, она должна быть расширяемая!
Вопрос в следующем как, лучше расширять заранее не известную структуру?
Есть два варианта, это под новое условия договора создавать таблицу, либо, в одной таблице накапливать поля с новыми условиями.

Храните данные вертикально, как ASAP делает. Или почитайте про Oracle FlexFields(R), что в принципе тоже самое.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33311363
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterХраните данные вертикально, как ASAP делает.
"Читал пейджер. Много думал" (с) И вспоминал анекдот про то, что русские программисты все как один в совершенстве знают ASAP.

Relic HunterИли почитайте про Oracle FlexFields(R), что в принципе тоже самое.
Уже упоминали и плюсы, и минусы. Например: "...любая нестрогая структура, например набор пар "поле-значение" или XML вполне подойдет"
...
Рейтинг: 0 / 0
Cтруктура базы
    #33312683
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Relic HunterХраните данные вертикально, как ASAP делает.
"Читал пейджер. Много думал" (с) И вспоминал анекдот про то, что русские программисты все как один в совершенстве знают ASAP.

Relic HunterИли почитайте про Oracle FlexFields(R), что в принципе тоже самое.
Уже упоминали и плюсы, и минусы. Например: "...любая нестрогая структура, например набор пар "поле-значение" или XML вполне подойдет"

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

By, by.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33312965
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterПри вертикальном хранении данных отбираются права на прямую модификацию таблиц у пользователей системы.
Хм. Меня уже лет семь поражает столь настойчиво пропагандируемое желание "отобрать". Прямо какой-то синдром вахтера :)

Можно сделать все. При реализации, адекватной задаче, даже будет работать. Вопрос ровно один - нужно ли.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33313133
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerХм. Меня уже лет семь поражает столь настойчиво пропагандируемое желание "отобрать". Прямо какой-то синдром вахтера :)


Хорошо, что только Вас и каких-то сем лет :)
Просто еще не пришли к этому.
А те системы, в которых доводилось принимать участие, именно так и сделаны.

By
...
Рейтинг: 0 / 0
Cтруктура базы
    #33330104
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valik_marchenkoДобрый день! Разрабатываем базу данных организации которая будет выдавать кредиты займы и т.д. общей структуры договоров нет, она должна быть расширяемая!
Вопрос в следующем как, лучше расширять заранее не известную структуру?
<...>

Могу предложить модель «сущность-атрибут-значение» EAV, обсуждаемую в соответствующей теме этого форума:
http://www.sql.ru/forum/actualthread.aspx?tid=220850


Приблизительная ER-модель того, что получится – в прикреплённом файле.

Если нужно хранить историю изменений – придётся вводить даты, атрибуты актуальности, придумывать «темпоральные» запросы.

Есть ещё пара плохих, по моему мнению, решений:
1) Использовать ООСУБД
2) Модифицировать таблицы и делать интерфейс независимым от количества и названий полей таблиц, но! вести строгую историю модификаций и перед каждой модификацией создавать архив БД, и как только понадобится архивная информация – разворачивать
...
Рейтинг: 0 / 0
Cтруктура базы
    #33330293
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В последнем каменте все свойства развернуты в отдельную таблицу, что в принципе ничего не меняет.

Есть смешанный способ.
В договорах всегда есть присущие всем договорам свойства, они известны уже в начале работы, и куча различающихся, причем часть будут известны в результате эксплуатации.
Делается так:
1) Все общие свойства зашивают в одной табличке, по ним быстрее искать, фильтровать, сортировать и пр.
2) Все различные и неизвестные свойства ложат вертикально в отдельную табличку по ключам договоров и ключам свойств, значения либо стринг (в оракле можно variant) либо блоб и все собственно говоря.
Когда заказчику понадобилось исчо добавить поле, его ложат в вертикальную табличку. Сохраняют подбором свойств для типа договора из временной таблички.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33331919
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Relic HunterПри вертикальном хранении данных отбираются права на прямую модификацию таблиц у пользователей системы.
Хм. Меня уже лет семь поражает столь настойчиво пропагандируемое желание "отобрать". Прямо какой-то синдром вахтера :)
.

Это скорее всего синдром MSSQL все дано изначально, поэтому лишнее надо отобрать. В DB2 например, надо дать то что попросят.
...
Рейтинг: 0 / 0
Cтруктура базы
    #33331945
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин КВ последнем каменте все свойства развернуты в отдельную таблицу, что в принципе ничего не меняет.

Есть смешанный способ.
В договорах всегда есть присущие всем договорам свойства, они известны уже в начале работы, и куча различающихся, причем часть будут известны в результате эксплуатации.
Делается так:
1) Все общие свойства зашивают в одной табличке, по ним быстрее искать, фильтровать, сортировать и пр.
2) Все различные и неизвестные свойства ложат вертикально в отдельную табличку по ключам договоров и ключам свойств, значения либо стринг (в оракле можно variant) либо блоб и все собственно говоря.
Когда заказчику понадобилось исчо добавить поле, его ложат в вертикальную табличку. Сохраняют подбором свойств для типа договора из временной таблички.

Жму руку
...
Рейтинг: 0 / 0
Cтруктура базы
    #33343267
Anatalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mr RedИМХО существую 2 пути - либо длинная таблица, либо метаданные не в таблице, а к примеру в XML.
Метаданные прекрасно ложаться и в таблицы
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Cтруктура базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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