powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование атомарных справочников...
25 сообщений из 325, страница 3 из 13
Проектирование атомарных справочников...
    #38530215
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257у ТС универсальный справочник, так что технически там может быть любое
универсальное значение. И обнаружится это только когда строка отсечется джойном.

Во-первых, каким это джоином она отсечётся? Во-вторых, с чего ты решил, что "любое
значение" это "неправильное значение"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530226
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table uni_dict (id int primary key, dict_type char(100), val char(100))
insert into uni_dict values (1,'Машины','Волга')
insert into uni_dict values (2,'Реки','Волга')

-- это баг
insert into detail_table (....dict_id) values (...1)
-- виновный найден и расстрелян перед строем
-- этого бы никогда не произошло если бы вы пользовались программой
-- позор криворуким DBA

select * from detail_table d join uni_dict u on d.dict_id=u.id and u.dict_type='Реки'
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530258
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
create table uni_dict (id int, dict_typechar(100), valchar(100), constraint pk 
primary key (id, dict_typechar))
-- плевать на криворуких DBA


Но на второй вопрос ответа, похоже, не будет...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530261
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov primary key (id, dict_typechar))И в каждой таблице держать поле с постоянным для всех значением dict_typechar
alter table detail_table add constraint foreign key (dict_id, dict_typechar) references uni_dict
И где ответ на главный вопрос - нахрена?
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530301
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> что можете сказать по данной ситуации

Два повода назвать вашего руководителя долбо^бом. Первый - за использование значений, второй - за общий справочник.

> что все таки является бэст практишь?

Для датацентрического приложения - канонические правила проектирования. Для говноподелок говорить о практиках бессмысленно, это уникальные, но нах никому не нужные продукты.

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

Имея универсальный справочник, вы теряете естественную семантику, вы вынуждены реализовывать дополнительную структуру, чтобы её хранить, но при этом размазываете вашу метамодель по разным уровням. Причём, ничего не получая взамен.
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530323
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Идея "универсального" справочника просто обязана придти в голову каждого начинающего проектировщика.
...
Правда по зрелому размышлению достоинств у данной структуры НЕТ ВООБЩЕ.+1
guest_20040621Имея универсальный справочник, вы теряете естественную семантику+1
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530325
AlexJm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Два повода назвать вашего руководителя долбо^бом. Первый - за использование значений, второй - за общий справочник.
...
Для датацентрического приложения - канонические правила проектирования. Для говноподелок говорить о практиках бессмысленно, это уникальные, но нах никому не нужные продукты.

Какой говнопродукт сам разрабатываешь?

guest_20040621Имея универсальный справочник, вы теряете естественную семантику, вы вынуждены реализовывать дополнительную структуру, чтобы её хранить, но при этом размазываете вашу метамодель по разным уровням. Причём, ничего не получая взамен.

Особенно мне нравится - естетственная семантика. Так и вижу у себя (ща посчитаю) 2840 таблиц вида "ключ-наименование". Зато в резюме можно написать - "разрабатывал датацентрическое приложение, в базе - 15000 таблиц", да?
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530345
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Какой говнопродукт сам разрабатываешь?

Дружище, обычно я стараюсь избегать контактов с быдлом, поскольку брезглив зело, но в данном случае сделаю исключение. Почему - дальше будет понятно.

> 2840 таблиц

Исчисляемые значения - это две таблицы (на самом деле больше, но в данном случае это не принципиально). Если предположить, что количество семантических характеристик приблизительно соответствует количеству основных сущностей (тупо: для каждой сущности существует категоризация), получаем в качестве эквивалента структуры данных текстовое описание, содержащее как минимум 2800 подлежащих. Причём, по умолчанию каждое из них имеет собственный жизненный цикл. Я бы навскидку оценил трудоёмкость этой задачи в десять человеко-лет, откуда следуют и предположения о возможном назначении базы данных, и требования к квалификации разработчиков. Так что, дружище, рассказывайте о своих успехах папе Карло. Здесь не нужно ничего писать, быдлокодеры не интересны.
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530347
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257, guest_20040621

Давайте ещё раз.
Начнём с перечислимых типов данных в яз. программирования.
пример:
Код: pascal
1.
2.
3.
type
TSex = (sexFemale, sexMale)
end;


т.е. под 0 мы подразумеваем женщину, под 1 - мужчину.
Можно обойтись без перечислимого типа? - да запросто, если у Вас хорошая память , Вы один разработчик в проекте и очень аккуратный.
Т.о. перечислимый тип данных - помощник программиста, позволяющий ему "Вспомнить всё"
и не дающий ему возможности (с помощью ошибок при компиляции) присвоить переменной значения, не имеющие смысла.

Теперь перейдём к БД.
В любом более-менее большом проекте есть аналоги перечислимым типам. Такие вот микросправочники из пригоршни записей. У ТС такой вот справочник и есть. Нужно для него отдельную таблицу или нет - решать разработчику. Но объединение логических таблиц в одной физической бывает подчас очень удобно и не надо отказываться от этого метода.
Кстати, Уважаемые SERG1257, guest_20040621, Посмотрите в свои проекты, и ответьте на вопрос, только честно, как Вы храните пол человека, его имя, его отчество?
Если Вы жёсткие апологеты правильных структур, то у Вас обязаны быть справочники: ПОЛ, ИМЯ, ОТЧЕСТВО
где в справочнике пол две записи, в справочниках ИМЯ и ОТЧЕСТВО 1 - 2 тыс. записей.
(кстати, у меня эти справочники есть, количество записей в них соответственно 2, 1484, 2017 при желании могу приложить скрины :-) )
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530354
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11 Начнём с перечислимых типов данных в яз. программирования.А в Киеве дядька. К чему это здесь?
zeon11 Но объединение логических таблиц в одной физической бывает подчас очень удобноЕще раз - чем удобно?
И здесь это оффтопик
zeon11 то у Вас обязаны быть справочники: ПОЛ,Есть
zeon11 ИМЯ, ОТЧЕСТВО Нет ибо не надо.
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530355
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Давайте ещё раз.

Мыши плакали, кололись, но продолжали жрать кактус.

Давайте.

Скажите, вы под полом что подразумеваете? Репродуктивную роль? Запись в удостоверяющем личность документе? Самоидентификацию индивидуума? Вы понимаете, что структура данных для каждого из перечисленных вариантов будет различна?
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530384
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Скажите, вы под полом что подразумеваете? Репродуктивную роль? Запись в удостоверяющем личность документе? Самоидентификацию индивидуума? Вы понимаете, что структура данных для каждого из перечисленных вариантов будет различна?Ну так это ведь в разных сущностях может иметь раную смысловую нагрузку, но не исключено, что при этом можно обойтись одним справочником.
В таком случае и структура не особо будет различна, просто куча таблиц с атрибутом sex_id или там gender_id, и значения этого атрибута при этом по-разному трактуются...
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530390
AlexJm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Дружище, обычно я стараюсь избегать контактов с быдлом, поскольку брезглив зело, но в данном случае сделаю исключение. Почему - дальше будет понятно.

Про говно не ты начал, небыдло?

guest_20040621Исчисляемые значения - это две таблицы (на самом деле больше, но в данном случае это не принципиально).
...
ахинею убрал
...
Так что, дружище, рассказывайте о своих успехах папе Карло. Здесь не нужно ничего писать, быдлокодеры не интересны.

Ты вообще понимаешь, что такое атомарные справочники? Похоже - нет. Совсем что ли не в себе?
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530391
AlexJm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257zeon11 Начнём с перечислимых типов данных в яз. программирования.А в Киеве дядька. К чему это здесь?
zeon11 Но объединение логических таблиц в одной физической бывает подчас очень удобноЕще раз - чем удобно?
И здесь это оффтопик
zeon11 то у Вас обязаны быть справочники: ПОЛ,Есть
zeon11 ИМЯ, ОТЧЕСТВО Нет ибо не надо.
Ну раз не надо - значит не надо. Пол есть - это самое главное. Еще пара аттрибутов - и система готова. Как у этого, гвеста2004
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530392
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Dimitry Sibiryakov Уж не знаю, что ты там себе нафантазировал, но код для работы с универсальными справочниками пишется ровно один разДа ну. И вызывается тоже один раз? Или вызов кода, кодом не является.
И проверки, что введенное значение является корректным тоже сами делаются. Или в базу кроме твоего приложения никто писать не имеет права? И если я вдруг вынужден отключить эту проверку (испугался коленкора) что проще - отключить fk или просить программиста полазить по коду?Я тоже в упор не понимаю какие могут быть патчи?
Была единожды запрограммирована кнопка "создать новый справочник".
Маша шла-шла, нажала кнопку и нашла новый справочник без всяких патчей.

Это работает и без "универсального справочника", когда много таблиц-справочников.
Просто в первом случае за кнопкой стоит логика на уровне данных и права на инсерт, а во втором - на уровне метаданных и права на create...

И какие проверки корректности введенного значения? Это как? В справочнике, который id и name?..
Я наверное не понимаю... Приведите пример ОЦ, которое нужно по Вашему мнению программировать после создания Машей справочника...
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530393
AlexJm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sgt.PepperЯ тоже в упор не понимаю какие могут быть патчи?
И какие проверки корректности введенного значения?

Ну не нравятся архитекторам foreign keys. Я, правда, другого не понимаю - как можно быть архитектором и не быть программистом. Не понимать, что любой foreign key блокирует мастер-запись при добавлении и изменении child-записи, что разбухание словаря данных тоже не есть гуд, что есть триггеры, наконец, в которых можно проверить введенное значение, что юзеры тоже иногда привыкают к значениям типа "активность - это 1", а не к Id=6521289. Ну да ладно.
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530394
AlexJm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexJmSgt.PepperЯ тоже в упор не понимаю какие могут быть патчи?
И какие проверки корректности введенного значения?

Ну не нравятся архитекторам foreign keys.

прошу прощения, разумеется - читать "нравятся".
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530396
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> не исключено, что при этом можно обойтись одним справочником

Что может быть проще: возьмите обсуждаемый пример и приведите три корректных варианта его использования.

> не особо будет различна

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

Не бывает "не особо различных". Не существует логической операции, позволяющей так определять соответствие.
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530399
AlexJm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Большинство проблем, как я уже говорил, связано с тем, что люди не понимают значения слов, которые используют. Причём, это характерно не только для проектирования, это встречается сплошь и рядом в обычной жизни.

Сначала разберись, что такое атомарный справочник и объясни мне - почему задача заведения 8-10 аттрибутов у набора из 300-500 сущностей должна стать делом всей твоей разумной жизни ("10 человеко-лет"). А то жизни он учит.
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530402
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexJmAlexJmпропущено...

Ну не нравятся архитекторам foreign keys.

прошу прощения, разумеется - читать "нравятся".Мне ключи нравятся. Я не ратовал за использование универсального справочника.
Я не понял зачем патчи и программирование новых ОЦ...
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530403
AlexJm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sgt.PepperAlexJmпропущено...

прошу прощения, разумеется - читать "нравятся".Мне ключи нравятся. Я не ратовал за использование универсального справочника.
Я не понял зачем патчи и программирование новых ОЦ...
Тогда извините. Но про патчи я тоже не понял :)
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530404
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sgt.PepperБыла единожды запрограммирована кнопка "создать новый справочник".Справочник, как правило, сам по себе не имеет смысла, пока он не участвует в общей модели и не связан с другими сущностями. Например, зачем создавать в системе справочник цвета волос, если он нигде не будет использоваться ? Значит, как минимум, после создания справочника нужно менять модель данных, добавляя в соответствующие сущности поля для хранения этих значений, где они будут иметь смысл.
Т.е., простое добавление справочника бессмысленно, так как вместе с этим должна измениться модель данных, но упаси Бог, если этим начнут заниматься обычные пользователи, это прерогатива проектировщиков, которые отвечают за смысловую целостность и адекватность БД предметной области. Включая справочники, которые здесь именуют "атомарными", т.е., вида (ID, Value), по сути - классификаторов.
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530405
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexJmguest_20040621Большинство проблем, как я уже говорил, связано с тем, что люди не понимают значения слов, которые используют. Причём, это характерно не только для проектирования, это встречается сплошь и рядом в обычной жизни.

Сначала разберись, что такое атомарный справочник и объясни мне - почему задача заведения 8-10 аттрибутов у набора из 300-500 сущностей должна стать делом всей твоей разумной жизни ("10 человеко-лет"). А то жизни он учит.Да какое, простите, дело жизни?...
И тот и другой подход легко автоматизируется...
Различия, на мой взгляд, косметические: в одном случае больше геморроя с грантами, в другом - с констрейнтами...
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530408
AlexJm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sgt.PepperДа какое, простите, дело жизни?...

Об этом лучше спросить у гвеста2004 - на его небыдловзгляд, должно занять 10 человеко-лет.
...
Рейтинг: 0 / 0
Проектирование атомарных справочников...
    #38530414
Sgt.Pepper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChASgt.PepperБыла единожды запрограммирована кнопка "создать новый справочник".Справочник, как правило, сам по себе не имеет смысла, пока он не участвует в общей модели и не связан с другими сущностями. Например, зачем создавать в системе справочник цвета волос, если он нигде не будет использоваться ? Значит, как минимум, после создания справочника нужно менять модель данных, добавляя в соответствующие сущности поля для хранения этих значений, где они будут иметь смысл.
Т.е., простое добавление справочника бессмысленно, так как вместе с этим должна измениться модель данных, но упаси Бог, если этим начнут заниматься обычные пользователи, это прерогатива проектировщиков, которые отвечают за смысловую целостность и адекватность БД предметной области. Включая справочники, которые здесь именуют "атомарными", т.е., вида (ID, Value), по сути - классификаторов.Я не являюсь адептом универсальных справочников, но и не согласен с Вашей категоричностью.
Допустим тот случай, когда за классификатором нет никакой бизнес-логики типа: если мужчина, то расчет по одному алгоритму, если женщина - по другому.
Скажем, такая классификация будет использоваться исключительно в целях фильтрации набора данных на клиенте.
По-моему, возможное допущение.
Допустим, что каждую запись можно классифицировать по значительному кол-ву классификаторов, которые часто возникают и исчезают. По мне так тоже вполне жизненная ситуация.
Давайте ограничим возможность классифицировать строку по переменному набору справочников, но так, чтобы было не более одной классификации по одному справочнику. Сможем ограничить раз и навсегда? Думаю - сумеем.
Далее формируется общий суперсправочник. В случае, если каждый классификатор есть отдельная таблица - с использованием метаданных.
Далее формируем n:n таблицу: строка_id, справочник_id, значение_id.
Делаем кнопку "создать новый справочник".
Маша кликает, создает справочник "цвет лака для ногтей", видит его без всяких патчей, классифицирует сотрудниц, фильтрует их на клиенте...
...
Рейтинг: 0 / 0
25 сообщений из 325, страница 3 из 13
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование атомарных справочников...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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