powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Прошу совета по проектированию.
25 сообщений из 29, страница 1 из 2
Прошу совета по проектированию.
    #39717494
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день коллеги. Попросили тут меня на работе сделать из эксельки "настоящую базу данных". А то "эксель перестает справлятся"
В общем предметная область довольно примитивная. Меньше десятка сущностей, одна таблица фактов(событий).

Однако в наличии огромное количество справочников, которыми коллеги типизируют вышеозначенный пяток-десяток сущностей в различных аналитических разрезах.
Справочники, по большей части однотипные: {зелёный, красный, синий} , {высокий, средний, короткий} , {большой,маленький}, {лает, крякает, свистит, мяукает} и далее, нет им числа.

Более того, если сущностей, в общем, конечное количество, то вот аналитические срезы придумываются новые постоянно.

Сама экселька смешная, 20к записей, прирост ну записей 200 в год.

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

То-ли делать отдельную таблицу-словарик + маппинг (категория-сущность)

Толи сделать здоровенный справочник по типам

1 хрюкает голос
2 лает голос
3 крякает голос
4 желтый цвет
5 синий цвет
....
и одну таблицу где объекты могут быть типизированы как пользователю удобно
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717526
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cammomile,
EAV можно попробывать
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717546
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня тут буквально бОльшая часть справочников это список строковых значений. EAV выглядит избыточно.
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717602
Cammomile,

не ясно, при чем здесь тип

вместо многих простых справочников вида

цвет
синий,
черный,
...

размер
большой,
средний,
...

сделать один вида

общий справочник
цвет|синий
цвет|черный
размер|большой
....
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717611
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
старый пеньсделать один вида

Потом останется его нормализовать и с удивлением обнаружить, что получилось EAV.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717625
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Рвазница с EAV существенная - нет типов значений, да и самих значений - тоже ( можно считать что все значения - битовые), либо вообще отсутствует, либо сильно урезана функциональность "для данного типа сущностей возможен именно такой набор атрибутов классификаторов" но при этом зачастую наличествует "период действия классификатора" (чего в EAV обычно нет)
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717637
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала попробуйте ничего не оптимизировать, сделать классическую кучу справочников. Предупредите, что если раньше заведение нового справочника делалось просто листом в Excel (или как там они его делали), то теперь этим будет заниматься программист: CREATE TABLE, FOREIGN KEY, добавление контролов на форму и все такое прочее. Что потребует дополнительных затрат на ставку программиста.

У программиста после этого возникнет желание оптимизировать процесс, чтобы все делалось просто кликом мыши: универсальный справочник, EAV, динамическая генерация контролов на формы по метаданным и прочие достижения цивилизации. При наличии усердия и прямых рук можно сделать систему, с которой пользователь будет работать так же просто, как с Excel.

У пользователя после этого возникнет желание, поскольку с системой работать так же просто как с Excel, а с Excel он раньше работал бесплатно, ничего программисту не платить.
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717658
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном случае ни деньги, ни ставка погроммиста который будет допиливать бд, ни ставка гуевщика не вопрос.

Вопрос только в том, как заложить хорошую основу, которую потом будут дорабатывать.

EAV нормальный универсальный подход, но он решает другую задачу. Задачу хранения атрибутов сущностей в системе которая динамически меняется. У меня вот именно атрибуты сущностей меняются раз в миллион лет, предметная область очень консервативная.

То есть именно вот атрибуты (поля?) объектов отлично хранятся в "обычных" таблицах.
[Ид][Имя][Рост][Вес][Возраст][СреднийБал][ГодРождения] и прочее в таком же роде

Меняются всякие аналитические штуки типа
Вид_продажи
---
суперкруто
так себе
лучшеб не продавали

или

Ценность_клиента
---
випчек
дорогой_покупатель
ероха
гнат_из_офиса


Как видите, у меня даже не надо хранить типы данных значений этих справочников, это скорее масса всяких категоризаторов .
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717660
Dimitry Sibiryakov,

допускаю, что для Вас это окажется удивительным
по мне, это просто примитивный EAV
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717661
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и аналитика там в стиле "все дорогие_покупатели которые купили зеленое и крякающее за 2015 год "
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717674
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileВ данном случае ни деньги, ни ставка погроммиста который будет допиливать бд, ни ставка гуевщика не вопрос.
Вопрос только в том, как заложить хорошую основу, которую потом будут дорабатывать.


Если так, не заморачивайтесь ни на EAV, ни на универсальный справочник. Такие вещи как раз сопровождать и дорабатывать потом гораздо труднее. Делайте в БД обычные отдельные справочники, это и есть лучшая основа.
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717678
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherДелайте в БД обычные отдельные справочники, это и есть лучшая основа.

И она, кстати, легко при необходимости мутирует в универсальный справочник и обратно с
помощью простеньких вьюшек.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717679
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С универсальным классификатором есть простой проверочный вопрос - хотят ли пользователи в дальнейшем добавлять свои аналитические разрезы без участия разработчиков? Если хотят - надо делать, если не хотят - можно не заморачиваться и жить с кучей мелких табличек
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717707
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотят и будут
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717708
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А есть у нас еще какие-то подходы кроме "универсального классификатор" и "мильон справочников + связующие таблицы" ?
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717756
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileА есть у нас еще какие-то подходы кроме "универсального классификатор" и "мильон
справочников + связующие таблицы" ?

"Полмильёна справочников + не очень универсальный классификатор".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39717794
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПопросили тут меня на работе сделать из эксельки "настоящую базу данных". А то "эксель перестает справлятся" А в чем это выражается ? 20к записей это немного. Тем более "Меньше десятка сущностей".
Как пробовали решать задачу ?
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39719445
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые, хочу свои 5 копеек вложить в общую копилку предложений. Из прочитанного понял что мои 5 копеек - это кастрированный вариант некоего EAV. Только не понял почему автор не хочет это реализовать.

Как я понял, весь смысл в том чтобы иметь возможность к сущности цеплять произвольное количество разных "свойств" причём "разных" типов.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
TABLE propType (
   id     SERIAL PRIMARY KEY,
   typeName CHAR(20)
)

TABLE propVariants (
   id     SERIAL PRIMARY KEY,
   typeID BIGINT UNSIGNED NOT NULL,
   propValue CHAR(20),
)

TABLE entity (
    id    SERIAL PRIMARY KEY,
   entityName CHAR(20)
)

TABLE entityProps (
    id    SERIAL PRIMARY KEY,
    entityID BIGINT UNSIGNED NOT NULL,
    propID BIGINT UNSIGNED NOT NULL,
    UNIQUE KEY entProp (entityID, propID)
)



Вроде бы из такой схемы и выбирать можно что угодно и как угодно и вводить новые типы свойств и сами свойства произвольно не проблема?
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39719512
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kormotВроде бы из такой схемы и выбирать можно что угодно и как угодно и вводить новые типы свойств и сами свойства произвольно не проблема?

Для ТС проблемой может быть именно такая свобода - что любой сущности можно дать любые атрибуты: машина - мяукает, кошка - дорогой покупатель, клиент - лучше б не продавали + цвет красный + цвет синий. Нужна еще как минимум таблица типов сущностей, и справочник допустимых типов атрибутов для каждой, и контроль уникальности типов, чтобы два цвета одновременно не присвоить.

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

Но это преодолимо, и если это не пугает, то вполне рабочий вариант.
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39719541
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как решить задачу без настройки прав я не очень представляю. Конечно же где-то надо указать доступные для конкретной сущности конкретные справочники ( а местами и их значения). А как иначе?
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39719550
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cammomile,

Посмотреть в сторону готового решения не пробовали? Все уже придумано до нас.
Берите БД мелкомягких (экспресс) и загоняйте туда все что угодно. Экселька будет как клиент (стыкуется без прокладок).
Но все это такой бред. Возьмите ту же ненавистную 1С. стоит копейки, но получите даже больше чем хотели. Всеравно со временем поймете что поддерживать самопальные решения дороже.
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39719557
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте я на будущее уточню. Никаких готовых решений никто не будет брать. Есть конкретный заказ, сделать БД и интерфейс с к ней, притом неважно на какой именно СУБД. Скорее всего это будет экспресс + простенькая морда на шарпах, но это не суть топика.


Не надо мне советовать готовые решения.
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39719594
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileДавайте я на будущее уточню. Никаких готовых решений никто не будет брать. Есть конкретный заказ, сделать БД и интерфейс с к ней, притом неважно на какой именно СУБД. Скорее всего это будет экспресс + простенькая морда на шарпах, но это не суть топика.


Не надо мне советовать готовые решения.
Не вопрос брат. Только не нужны шарпы и пр. Я ж вроде написал что экселька без прокладок работает с мелкомягкой базой. На VB все работает. Можно или самому сделать или студента напрячь (там много ума не нужно, особенно учитывая разжеваный хелп мелкософта).
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39719794
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, в натуре, не понимаю. Читать по-русски это какой-то особый уровень умений, недоступный погромистам с SQl.ru?

Я задаю конкретный вопрос по конкретной задаче, а в ответ слышу, что задача-не задача, люди которые её задали дураки, что надо брать эксельку и ВБА, когда прямым текстом говорят, что эксэльку брать не надо, и прочая. Нечего сказать конкретно по вопросу? Ну промолчи. Зачем плодить пустые посты?

И да, когда вокруг все дураки, и "нипанимают ачивадоного"), задумайся, может ты просто чего-то не знаешь?
...
Рейтинг: 0 / 0
Прошу совета по проектированию.
    #39719832
Cammomile,

да ладно уж, здесь, и не только здесь, обычное явление. Можно уже привыкнуть и не обращать внимания.

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


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