Структура базы данных

1.

Первичные таблицы
Users
+
Services
Methods (способы расчета)
id
id
name
id
name
view
login
1
Электроснабжение
1
fixSum
Фиксированная сумма
password
2
Водоснабжение
2
fixFormula
Фиксированная формула
email
3
Газоснабжение
3
counter
По счетчику
name
4
Теплоснабжение
4
counterScale
По счетчику с применением шкалы
5
Квартплата
5
manual
Ручной ввод
6
Вывоз мусора
Arguments (аргументы формул)
id
name
view
1
livingArea
Жилая площадь, м2
2
registeredPersons
Прописано человек, чел
3
mainRate
Тариф, грн

2.

Вторичные таблицы: услуги и показатели формул по адресам
AddressArguments (показатели формул по адресам)
id
adressID
argumentID
value
1
1
1
44.9
2
1
2
2
3
2
1
0
4
2
2
0
5
3
1
240.5
6
3
2
0
AddressServices (услуги по адресам)
id
adressID
serviceID
1
1
1
2
1
2
3
1
5
Address (адреса домохозяйств)
Квартира: {
Жилая площадь: 44.9,
Прописано человек: 2 }
Гараж: {
Жилая площадь: 0,
Прописано человек: 0 }
Дача: {
Жилая площадь: 240.5,
Прописано человек: 0 }
[1] : {
Адрес: Квартира,
Услуга: Электроснабжение }
[2] : {
Адрес: Квартира,
Услуга: Водоснабжение }
[3] : {
Адрес: Квартира,
Услуга: Квартплата }
id
userID
name
1
1
Квартира
2
1
Гараж
3
1
Дача

3.

Вторичные таблицы: тарифы
Rates (тарифы)
id
adressServiceID
period
methodID
mainRate
useScale
1
1
2017-01-01
4
0
true
2
2
2017-01-01
3
8.50
false
3
3
2017-05-01
2
12.30
false
[1] Квартира: {
Услуга: Электроснабжение,
Начало действия: 2017-01-01,
Способ расчета: По счетчику с применением шкалы,
Основной тариф: 0,
Шкала:
Формула: none }
[2] Квартира: {
Услуга: Водоснабжение,
Начало действия: 2017-01-01,
Способ расчета: По счетчику,
Основной тариф: 8.50,
Шкала: none
Формула: none }
formula
mainRate * livingArea
[3] Квартира: {
Услуга: Квартплата,
Начало действия: 2017-05-01,
Способ расчета: Фиксированная формула,
Основной тариф: 12.30,
Шкала: none
Формула: mainRate * livingArea }

4.

Вторичные таблицы: шкала применения тарифа
Scales (шкалы применения тарифов)
id
rateID
minValue
maxValue
mainRate
1
1
0
100
0.95
2
1
101
600
1.20
3
1
601
0
1.88
Шкала: {
Порог 1: {
Минимум: 0,
Максимум: 100,
Тариф: 0.95
},
Порог 2: {
Минимум: 101,
Максимум: 600,
Тариф: 1.20
},
Порог 3: {
Минимум: 601,
Максимум: неограничен,
Тариф: 1.88
},
}

5.

Взаимосвязи таблиц
Users
id
name
1
Иванов Иван
Address (адреса домохозяйств)
Arguments (аргументы формул)
id
userID
name
id
name
view
1
1
Квартира
1
livingArea
Жилая площадь, м2
2
1
Гараж
2
registeredPersons
Прописано человек, чел
3
1
Дача
3
mainRate
Тариф, грн
AddressArguments (показатели формул по адресам)
Services
id
adressID
argumentID
value
id
name
1
1
1
44.9
1
Электроснабжение
2
1
2
2
2
Водоснабжение
5
Квартплата
AddressServices (услуги по адресам)
id
adressID
serviceID
1
1
1
2
1
2
3
1
5

6.

Взаимосвязи таблиц (продолжение)
Methods (способы расчета)
AddressServices (услуги по адресам)
id
adressID
serviceID
1
1
1
2
1
2
3
1
5
id
name
view
1
fixSum
Фиксированная сумма
2
fixFormula
Фиксированная формула
3
counter
По счетчику
4
counterScale
По счетчику с применением шкалы
5
manual
Ручной ввод
Rates (тарифы)
id
adressServiceID
period
methodID
mainRate
useScale
1
1
2017-01-01
4
0
true
2
2
2017-01-01
3
8.50
false
3
3
2017-05-01
2
12.30
false
Scales (шкалы применения тарифов)
id
rateID
minValue
maxValue
mainRate
1
1
0
100
0.95
2
1
101
600
1.20
3
1
601
0
1.88
formula
mainRate * livingArea
English     Русский Правила