powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / База "Арендодатель"
25 сообщений из 38, страница 1 из 2
База "Арендодатель"
    #32166636
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
База "Арендодатель"

Необходимо решить следующую задачу.

Имеется арендодатель ("Хозяин") и ряд объектов, которые он сдает в аренду арендаторам ("Съемщик"). Каждый месяц съемщику необходимо осуществлять следующие платежи:
1. Арендная плата
2. Плата за электроэнергию
3. Плата за энергоресурсы
4. Плата за коммунальные услуги
5. ….
Список счетов и их наименование может изменяться в зависимости от ЖЭКа.
Размеры платежей по пп 2-… не зависят ни от Хозяина ни от Съемщика. Размер платежей по п.1 определяет Хозяин по договоренности со Съемщиком.

Каждый месяц поступают следующие данные:
1.Размеры платежей, обязательных к уплате по пп 2-… за прошлый месяц.
2. Фактические размеры оплат по каждому из счетов по каждому Съемщику .
3. Размер оплаты по п.1 на следующий месяц либо на несколько месяцев вперед

Предназначение базы данных - контроль над оплатой/задолженностью Съемщиков перед Хозяином.

Система должна обеспечивать следующие возможности:
1. Ввод любых "Счетов"
2. Группировать счета в произвольном виде (к примеру счета 2-4 собрать в группу "Комуналка" и выдавать данные по этому "обобщенному счету"

Система должна обеспечивать следующие функции:

Отслеживать задолженности Съемщиков перед Хозяином по каждому из счетов.
Выдавать информацию о задолженности/превышении в разрезе Съемщика/счета по превышениям/задолженностям и о суммарном размере задолженности/"переплаты".
Рассчитывать чистый доход хозяина на определенный период вперед на основании прогноза проплат.
Вопрос : какие под это дело возможны варианты структуры.

Свой вариант я приведу чуть позже.
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32166642
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько платишь?
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32167667
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akuz, задачка то учебная, простая, для отработки подходов...
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32167688
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wara
akuz, задачка то учебная, простая, для отработки подходов...

Это типа "взрослым дядям можно не беспокоиться"? Эту учебную задачку можно развернуть в хороший проект, за реализацию которого коммунальщики отвалят кругленькую сумму. Я сейчас прикинул в пять минут во что это развернется если сразу все предусматривать :-)
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32167781
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини wara, но у взрослых дядей совсем нет времени. :(
Да и к тому же здесь думать надо. :)

А прокопайте мне траншею от моего дома до колодца, уж очень хочется посмотреть, как вы это делаете.
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32167870
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akuz,
Естественно, я никого насильно не заставляю тут свои мысли излагать. Вот только кажется мне, что опытный человек должен слету эти четыре таблицы выдавать (которых, как мне кажется,достаточно для моделирования данной ситуации).
all
Не надо меня подозревать в том, что я тут хочу денег заработать за счет чужих мозгов.
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32167884
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wara
Вот только кажется мне, что опытный человек должен слету эти четыре таблицы выдавать (которых, как мне кажется,достаточно для моделирования данной ситуации).

Дело в том, что это всего лишь небольшая часть комплексной системы для коммунального хозяйства. Для того, чтобы она могла и дальше расширяться четырех таблиц мало. К сожалению я на таком уровне мыслить не могу :-)
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32167898
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jinn,
Мыслить глобально, конечно, очень хорошо, вот только и локальные задачи тоже кто-то должен решать.
В описании задачи нигде не сказано, что что система должна быть предназначена для "комплексной системы коммунального хозяйства". Просто есть Хозяин, несколько съемщиков и несколько ЖЭКов. Хозяину надо знать состояние взаиморасчетов...
А пока я приведу свой вариант (из 3-х таблиц)
Код: plaintext
1.
2.
3.
 1 . Таблица Face (idFace,FaceName) - Люди, организации
 2 . Таблица Schet(IdSchet,SchetName) - счета
 3 . Таблица Money (idMoney,fkDolzhen(из Face),fkVeryu(из Face),fkScet(из Schet),date,summa)
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32167900
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо меня подозревать в том, что я тут хочу денег заработать за счет чужих мозгов.

Извини, подозревать надо.
Но тебе я почему-то верю.

Так уж и быть, будет время сделаю (правда без особого интереса).
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32167943
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wara
Просто есть Хозяин, несколько съемщиков и несколько ЖЭКов. Хозяину надо знать состояние взаиморасчетов...

Excel и девочка-секретарша не спасут Хозяина от лишних затрат на разработку ПО? :)

Это действительно неплохая задача для начинающих. Вариантов решения много, хотелось бы посмотреть и оценить.

Я действительно привык решать более масштабные задачи. Когда похожая задача у меня начала превращаться в комплексную, я понял что с мелкими фирмами больше работать не смогу :)
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32167966
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логическая модель (только объекты, навскидку).

ЖЭК
- Название
- Атрибуты (Адрес, телефоны и т.д.)

Хозяин (всегда физ. лицо)
- ФИО
- Атрибуты (Адрес, телефоны, ИНН, пасп. дан. и т.д.)

Съёмщик (всегда физ. лицо)
- ФИО
- Атрибуты (Адрес, телефоны, ИНН, пасп. дан. и т.д.)

Объект
- Хозяин
- Адрес
- ЖЭК

Договор
- Атрибуты (дата подписания, номер, агенство)
- Объект
- Арендатор (съёмщик)
- Дата начала действия (заселения/передачи)
- Арендная плата (фиксированная за месяц)
- Предыдущий договор

Группа счетов
- Наименование

Вид оплаты (счёта)
- Наименование
- Группа счетов

Счёт (коммунальлые платежи)
- Атрибуты (дата выставления, номер, получатель)
- Объект
- Период (месяц)
- Вид оплаты
- Сумма

Платёж по счёту (коммунальлые платежи)
- Атрибуты (дата выставления, номер, плательщик, получатель)
- Счёт
- Сумма

Платёж по договору (арендная плата)
- Дата платежа
- Договор
- Сумма

====
Соответствует?
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168027
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 akuz

Логическая модель (только объекты, навскидку).

Вполне. В разделе "Договора" лучше указать срок действия договора. Поле "Предыдущий договор", с моей точки зрения, не нужно. Всегда можно вытащить все договоры по объекту (или Арендодателю), расположив их в хронологическом порядке. Таблицу объект разделить на две:

Объект
-Адрес

Владелец
-Хозяин
-Объект
-Дата

Хозяин объекта может меняться по разным причинам.

Таблицы "Счет" и "Платежи по счету" лучше объединить, добавив поля "Дата выставления счета" и "Дата платежа".

Это тоже, так, навскидку :)
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168047
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо, akuz и Jinn за интерес к данной теме и содержательные ответы, только вот смущает меня, что, по-моему, Ваш опыт Вам немного мешает отвечать на вопрос. Может я и не совсем грамотно изложил т.н. "техзадание", дело не в этом. Я хотел получить ответ в рамках поставленной задачи, либо критику постановки задачи, либо критику моего варианта. Вместо этого уважаемый akuz на основе своего опыта и моего "техзадания", по всей видимости, составил свое собственное представление о том, что представляет из себя задача и привел решение этой своей задачи. При этом введено много новых терминов, отсутствовавших в "техзадании", к примеру "Адрес", "телефоны","физическое лицо","ИНН", "Паспортные данные" "Договор","дата подписания", "номер", "агенство"," Дата начала действия","Предыдущий договор " и т.п.
Целью моего вопроса было:
1. Смоделировать несложную, но в то же время емкую "учетную проблему"
2. Обсудить варианты структур данных под поставленную мною задачу.
Целью моего вопроса не являлось:
1. Создать комплексную модель данных по данному вопросу с учетом всех возможных объектов,атрибутов и.т.п
Призываю всех быть более внимательными и стараться отвечать на Заданные вопросы, либо указывать на то, что вопрос задан неграмотно.
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168058
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jinn

Хозяин объекта может меняться по разным причинам
Таблицы "Счет" и "Платежи по счету" лучше объединить, добавив поля "Дата выставления счета" и "Дата платежа".

Согласен, с оговоркой, что при смене хозяина договор остаётся прежний (что маловероятно) и счета всегда оплачиваются целиком.


2 wara

Может я и не совсем грамотно изложил т.н. "техзадание", дело не в этом.

Дело именно в этом.
В твоём ТЗ не хвает многих данных, необходимых для решения задачи, которые как раз и уточняются при разработке модели.
Без наличия рабочего варианта модели предмета обсуждения просто нет.
На этом примере очень хорошо видно, как происходит общение заказчика с разработчиком.
Давайте работать с ТЗ. :)

При этом введено много новых терминов, отсутствовавших в "техзадании", к примеру "Адрес", "телефоны","физическое лицо","ИНН", "Паспортные данные" "Договор","дата подписания", "номер", "агенство"," Дата начала действия","Предыдущий договор " и т.п.

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

Целью моего вопроса было:
1. Смоделировать несложную, но в то же время емкую "учетную проблему"
2. Обсудить варианты структур данных под поставленную мною задачу.
Целью моего вопроса не являлось:
1. Создать комплексную модель данных по данному вопросу с учетом всех возможных объектов,атрибутов и.т.п
Призываю всех быть более внимательными и стараться отвечать на Заданные вопросы, либо указывать на то, что вопрос задан неграмотно.


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

====
ТАК?
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168065
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akuz "Т.е. нам нужно не решить, а поставить задачу, т.е. создать ограниченную и в то же время работоспособную модель с жёстко фиксированной функциональностью." - совершенно верно, естественно у меня и в мыслях не было полностью решать данную задачу в форуме. Только костяк, все принципиально важное, ничего лишнего.
Приношу всем, кто меня не правильно понял с самого начала, свои извинения за то, что не совсем понятно выразился.
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168067
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я бы пожалуй, для аренды, сделал так.

Таблица Объекты
(КодОбъекта, ИмяОбъекта)

Таблица Клиенты
(КодКлиента, ИмяКлиента)

Таблица ИсторияКлиентов
(КодОбъекта, КодКлиента, ДатаНачалаАренды,ДатаКонцаАренды)

Таблица ИсторияЦеныАренды
(КодОбъекта, Цена, ДатаНачалаДействияЦены)

Таблица ИсторияПлатежей
(КодКлиента, Платеж, ДатаПлатежа)

=========
А уж запросы составлять по такой структуре - точно здорово поможет хорошо изучить SQL
=========
Ого скока всего понаписали, пока я собрался ответить! Надо почитать.
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168075
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть легче купить существующую обкатанную систему и не заморачиваться ? Тем более что таких систем навалом и там много чего по функционалу есть, что потом по любому выплывет при разработке своего проекта.

P.S. Я просто работаю в конторе, которая пишет и сопровождает программы под жилищно-коммунальный комплекс и знаю - что это такое. Сначала кажется легкой задачей, потом выясняется что по отдельности учет не представляет ничего сложного, а вкупе все дает не кислую задачу с огромным набором входящих данных, разных направлений учета и большим кол-вом отчетов.
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168090
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Прочитал. По-моему, уважаемые Jinn и akuz слишком увлеклись детализацией. Дело это нужное и полезное, но на втором этапе проектирования. На первом - работоспособное ядро. Только минимально необходимое для работы. Впрочем, это не значит, что мудрые мысли по поводу детализации, возникшие на первом этапе, надо отбрасывать.

И разговор о том, стоит ли объединять счета и платежи в одну таблицу несколько преждевременен. А будут ли выставляться счета? Основой для платежа служит договор и счетов может и не быть. Уж по оплате электроэнергии точно никто счетов не выставляет.

Критика структуры
Код: plaintext
1.
2.
3.
 1 . Таблица Face (idFace,FaceName) - Люди, организации
 2 . Таблица Schet(IdSchet,SchetName) - счета
 3 . Таблица Money (idMoney,fkDolzhen(из Face),fkVeryu(из Face),fkScet(из Schet),date,summa)

1. Пожалуйста, или уж все по-русски или по-аглицки (в японском не силен ).
2. Задолжность должна получатья из разницы между планируемыми и фактическими платежами. Введение такого поля - денормализация, которой нужно избегать всеми силами.
======
Мысля забавная пришла. А что если это сделать на плоском файле и попытаться его нормализовать?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
set nocount on

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Аренда]') and 

OBJECTPROPERTY(id, N'IsUserTable') =  1 )
drop table [dbo].[Аренда]
GO

CREATE TABLE [dbo].[Аренда] (
	[Объект] [varchar] ( 50 ) NULL ,
	[Арендатор] [varchar] ( 50 ) NULL ,
	[Год за который идет оплата] [int] NULL ,
	[Месяц за который идет оплата] [int] NULL ,
	[Должен заплатить за месяц] [decimal]( 18 ,  2 )  NULL ,
	[Дата платежа] [datetime]  NULL ,
	[Сумма платежа] [decimal]( 18 ,  2 )  NULL 
)
GO

declare @o varchar( 50 ),@a varchar( 50 )
set @o = 'Сарай №6 у оврага'
set @a = 'Театр "Карабас Барабас и Ко", труба - 8-911-100-9999'
go
insert into [Аренда]
select @o,@a, 2003 , 1 , 100 ,null, 0 
union
select @o,@a,null,null, 0 ,'20030201', 100 
union
select @o,@a, 2003 , 2 , 100 ,null, 0 
union
select @o,@a,null,null, 0 ,'20030301', 50 
go
 --Вычисление долга
 
select sum([Должен заплатить за месяц])-sum([Сумма платежа])
from [Аренда]
where [Арендатор] = @a



Пусть в меня кинут камень, если ЭТО не решает задачу
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168093
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ASCRUS
Точно, вылезет навалом. В том числе и то, чего нет в закупленой программе.
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168109
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 уважаемый Cat2

Где, если не секрет, ты увидел моё решение?

Я лишь пытался уточниить ЛОГИЧЕСКУЮ модель.
А вот предлагать решение, не уточнив логическую модель, а лишь на основании личного опыта и домыслов ( Основой для платежа служит договор и счетов может и не быть. Уж по оплате электроэнергии точно никто счетов не выставляет ) уж точно преждевременно. Слова ЛИ, МОЖЕТ БЫТЬ, СКОРЕЕ ВСЕГО, ОБЫЧНО не те слова, которые должны браться в расчёт при разработке конечного решения.

Мысля забавная пришла. А что если это сделать на плоском файле и попытаться его нормализовать?

Мысля забавная, это один из стандартных подходов.
Правда я это обычно делаю в голове. :)

Пусть в меня кинут камень, если ЭТО не решает задачу

Камень говоришь?!
Хм, ну лови (навкидку)
2. Группировать счета в произвольном виде (к примеру счета 2-4 собрать в группу "Комуналка" и выдавать данные по этому "обобщенному счету"
Если напрячся ещё пяток камней найдётся.

Задачу решает, несомненно, вот только какую?
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168131
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
akuz писал:
Где, если не секрет, ты увидел моё решение?

Для меня описание таблиц - уже решение.

akuz писал:
Слова ЛИ, МОЖЕТ БЫТЬ, СКОРЕЕ ВСЕГО, ОБЫЧНО не те слова, которые должны браться в расчёт при разработке конечного решения.

Действительно, чушь написал. Сам-то никогда не уверен, что в следующем году будет 12 месяцев.


akuz писал:
Мысля забавная, это один из стандартных подходов.
Правда я это обычно делаю в голове. :)

Да? А у меня обычно все в нормализованом виде сразу в голову лезет. С трудом я плоский файл написал - организм долго сопротивлялся:).

akuz писал:
2. Группировать счета...
Если напрячся ещё пяток камней найдётся.
Задачу решает, несомненно, вот только какую?


Ту, которая была поставлена. Про аренду. И ничего в ней про группировку счетов не говорилось. &>:<
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168150
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
No comments
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168233
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
akuz

No comments

Мда :( Из обсуждения технической проблемы перешли на личности. Может хватит?
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168608
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Господа, прошу не ругаться, соблюдать "политкорректность"
2. Привожу еще раз свой вариант структуры в русскоязычном варианте:
Код: plaintext
1.
2.
3.
4.
 
 1 . Таблица Организации (ID,Название организации) - Люди, организации
 2 . Таблица Счета (Id,Название счета) - счета
 3 . Таблица Долги и платежи 
(id,Дебетующая организация(fk),Кредитующая организация (fk),IDсчета (fk),Дата,Сумма)

Если заполнить эту структуру тестовыми данными из варианта Cat2 то получится следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
           Организации
  ID              Название организации
    1               Хозяин  1 
    2               Карабас-Барабас и Ко

           Счета
  ID               Название счета
    1                Аренда
    
           Долги и платежи
   ID    Деб. орг.  Кред.орг. ID счета         Дата   Сумма
     1           2           1            1          01 . 01 . 03      100 
     2           1           2            1          01 . 02 . 03      100 
     3           2           1            1          01 . 02 . 03      100 
     4           1           2            1          01 . 03 . 03      50   

Основное, что меня смущает во всем этом вопросе, заключается в следующем - получается, что решить данную задачу можно двояко - либо кривая структура для хранения данных, но зато простые запросы, либо красивая структура, но сложные запросы (у меня, к примеру, не получается сделать "Оборотку" по таблице Долги и платежи без подзапросов). Нет ли тут какой крутой философии? По-моему выходит, что Реляционные БД вообще не подходят для решения учетных проблем, поскольку даже такая простая задача "Про Карабаса-Барабаса", как выясняется, не имеет простого, красивого и однозначного решения
...
Рейтинг: 0 / 0
База "Арендодатель"
    #32168880
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wara

По-моему выходит, что Реляционные БД вообще не подходят для решения учетных проблем, поскольку даже такая простая задача "Про Карабаса-Барабаса", как выясняется, не имеет простого, красивого и однозначного решения

RDBMS как нельзя лучше подходят для решения таких задач. И что ты понимаешь под "простым, красивым и однозначным решением"? Свалить в в одну таблицу (1НФ)?Однозначности не может быть в принципе - решений несколько. Красота достигается не количеством таблиц, но их структурой и индексацией. akuz предложил вполне приемлемое решение. небольшая доработка (конкретная под заказчика) и эта модель будет работать красиво, и запросы там несложные.
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / База "Арендодатель"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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