Гость
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / База "Арендодатель" / 25 сообщений из 38, страница 1 из 2
22.05.2003, 20:44
    #32166636
wara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
База "Арендодатель"
База "Арендодатель"

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

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

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

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

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

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

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

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

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

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

Дело в том, что это всего лишь небольшая часть комплексной системы для коммунального хозяйства. Для того, чтобы она могла и дальше расширяться четырех таблиц мало. К сожалению я на таком уровне мыслить не могу :-)
...
Рейтинг: 0 / 0
24.05.2003, 15:30
    #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
24.05.2003, 15:32
    #32167900
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
База "Арендодатель"
Не надо меня подозревать в том, что я тут хочу денег заработать за счет чужих мозгов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


2 wara

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

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

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

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

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


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

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

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

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

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

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

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

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

P.S. Я просто работаю в конторе, которая пишет и сопровождает программы под жилищно-коммунальный комплекс и знаю - что это такое. Сначала кажется легкой задачей, потом выясняется что по отдельности учет не представляет ничего сложного, а вкупе все дает не кислую задачу с огромным набором входящих данных, разных направлений учета и большим кол-вом отчетов.
...
Рейтинг: 0 / 0
25.05.2003, 15:08
    #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
25.05.2003, 15:23
    #32168093
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
База "Арендодатель"
ASCRUS
Точно, вылезет навалом. В том числе и то, чего нет в закупленой программе.
...
Рейтинг: 0 / 0
25.05.2003, 18:31
    #32168109
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
База "Арендодатель"
2 уважаемый Cat2

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

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

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

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

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

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

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

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

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

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


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

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

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


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

No comments

Мда :( Из обсуждения технической проблемы перешли на личности. Может хватит?
...
Рейтинг: 0 / 0
26.05.2003, 15:13
    #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
26.05.2003, 18:04
    #32168880
Jinn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
База "Арендодатель"
wara

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

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


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