powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Справочники пользователей, на основе общего справочника
22 сообщений из 22, страница 1 из 1
Справочники пользователей, на основе общего справочника
    #39575624
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть общий справочник (Dictionary) названий, юзер (Users) может на основе общего справочника формировать свой:
1) использовать существующие строки по внешнему ключу
2) добавлять собственные названия (Name), которых нет в общем справочнике

На основании этих действий формируется свой личный справочник юзера (UserDictionary).


Как должен выглядеть Userdictionary?

Что не нравится в текущей версии - наличие null-полей. Люблю, когда таких в БД минимальное количество, а тут - либо в записи DictionaryId, либо Name
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39575671
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица Dictionary - ВСЕ названия, и стандартные и пользовательские (возможно метку источника - Общий/Пользовательский)
Таблица Users - пользователи
Таблица UsersDictionary - связка пользователей и справочника названий - одни UserId <FK>, DictionaryID <FK>, ( UserId, DictionaryId ) <PK>
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39575743
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан ДамировичТаблица Dictionary - ВСЕ названия, и стандартные и пользовательские (возможно метку источника - Общий/Пользовательский)
Таблица Users - пользователи
Таблица UsersDictionary - связка пользователей и справочника названий - одни UserId <FK>, DictionaryID <FK>, ( UserId, DictionaryId ) <PK>Исчо проще:
Dictionary Названия и код пользователя. Если он UserId= 0 то это стандартное название, если UserId<> 0 то пользовательское.
Доступные пользователю названия: ... from Distionary where (UserId=0 or UserId = xx)
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39575762
не понятно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSV,
Исчо проще:
Dictionary Названия и код пользователя. Если он UserId= 0 то это стандартное название, если UserId<> 0 то пользовательское.
Доступные пользователю названия: ... from Distionary where (UserId=0 or UserId = xx)


только не понятно - если юзер 1 придумал себе название, то как быть юзеру 2, который тоже для себя придумал тоже самое название, но чуть позже?
- не сможет ввести (ибо оно уже есть, но оно и не общее и не его)
- сможет, но задублирует... а потом еще один задублирует, а потом еще один, а потом еще одно задание не раз, а потом ещё и ещё....
- или теперь для него общее название это не только UserId=0 но и UserId <> его id
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39575763
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,

У вас все правильно в схеме. Советы запихнуть все в Dictionary приведут к бардаку в унифицированном справочнике. Наличие null не является проблемой.
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39575861
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV, Злой Бобр, я вам рукалицоплескаю, господа.
Такую фигню придумали.

Советы запихнуть все в Dictionary приведут к бардаку в унифицированном справочнике.
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39575901
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только не понятно - если юзер 1 придумал себе название, то как быть юзеру 2, который тоже для себя придумал тоже самое название, но чуть позже?Это не имеет отношения к схеме данных. Это чисто административная проблема.
Можно написать процедуру, кот. проверит и не допустит дубли, можно (и нужно) сделать процедуру слияния дублей, н-р неодинаково написанных, но одинаковых по сути пунктов.

Советы запихнуть все в Dictionary приведут к бардаку в унифицированном справочнике. Та ты чо, серьёзна !!? :)
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39576131
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан Дамирович,

Вариант, спасибо.
А в таблице Dictionary сделать уникальность на названия?
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39576206
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blestРуслан Дамирович,

Вариант, спасибо.
А в таблице Dictionary сделать уникальность на названия?
Я как раз и предлагал с прицелом на уникальность.
Как душа ляжет.
Главное - контролировать целостность при добавлении (транзакции), а также озаботиться удалением (если нужно) никем не используемых терминов, если они пользовательские.
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39577071
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан Дамирович,

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



(На Dictionary уникальный ключ на поле Name)
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39577088
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,

А не проще при такой схеме в Dictionary добавить UserId и не делать таблицу UserDictionary от слова совсем?..
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39577092
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой Бобрblest,
А не проще при такой схеме в Dictionary добавить UserId и не делать таблицу UserDictionary от слова совсем?..
Нельзя, так как связь будет M:N
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39577094
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,

Еще ключом оформите связку UserId, DictionaryId - именно в таком порядке - и будет то, что я бы реализовал при такой задаче.
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39577101
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан Дамировичblest,

Еще ключом оформите связку UserId, DictionaryId - именно в таком порядке - и будет то, что я бы реализовал при такой задаче.
и трахался бы с миграцией
уникальность просто нужна
в такой схеме не видно, кто дополнил общий справочник (нет автора словесного поноса)
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39577162
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosРуслан Дамировичblest,

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

Тут согласен, даже если не подниматься на уровни выше, я и в целом за то, чтобы первичные ключи во всех таблицах были идентичные по типу - в данном случае это поле Id. На UserId и DictionaryId естественно уникальный ключ.
Я не знаю насколько важно юзер-источник записи в Dictionary, но в целом можно дополнить таблицу Dictionary внешним ключом UserId
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39577166
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blestViPRosпропущено...

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

Тут согласен, даже если не подниматься на уровни выше, я и в целом за то, чтобы первичные ключи во всех таблицах были идентичные по типу - в данном случае это поле Id. На UserId и DictionaryId естественно уникальный ключ.
Я не знаю насколько важно юзер-источник записи в Dictionary, но в целом можно дополнить таблицу Dictionary внешним ключом UserId

Хотя это тоже не нужно (поле UserId в Dictionary) - я в своих таблицах также всегда добавляю полусистемное поле Created datetime и Deleted datetime. Т.о. можно простым запросом найти первого добавившего интересующего запись из таблицы UserDictionary.
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39577517
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрА не проще при такой схеме в Dictionary добавить UserId и не делать таблицу UserDictionary от слова совсем?..

+
Ключевое тут при такой схеме (я о второй схеме)...
Таблица в которой кроме ID ничего нет - это избыточная таблица (тупой балласт)...
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39578010
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagЗлой БобрА не проще при такой схеме в Dictionary добавить UserId и не делать таблицу UserDictionary от слова совсем?..

+
Ключевое тут при такой схеме (я о второй схеме)...
Таблица в которой кроме ID ничего нет - это избыточная таблица (тупой балласт)...

Вы о каком балласте UserDictionary?
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39578098
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,
Вы находитесь в разделе "Проектирование баз данных". А все, что Вы пишете, связано с так называемыми "реляционными базами данных". В базах данных нет "ключей", в смысле "реляционных баз данных", и нет никаких проблем, которые Вы здесь обсуждаете.
Еще раз предлагаю администраторам переименовать раздел в "Проектирование реляционных баз данных", чтобы не дискредитировать проектирование баз данных:)
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39578275
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятинаblest,
Вы находитесь в разделе "Проектирование баз данных". А все, что Вы пишете, связано с так называемыми "реляционными базами данных". В базах данных нет "ключей", в смысле "реляционных баз данных", и нет никаких проблем, которые Вы здесь обсуждаете.
Еще раз предлагаю администраторам переименовать раздел в "Проектирование реляционных баз данных", чтобы не дискредитировать проектирование баз данных:)

А много здесь тем по NoSQL БД ?

Проще заголовок переименовать "Справочники пользователей, на основе общего справочника в MS SQL Server 2014"
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39578288
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,
Причем здесь NoSQL?:) Вы же не про БД вопрос задаете, а про какую-то специфическую систему, в которой есть какие-то специфические проблемы. Для этой типовой учебной задачи Вы даже не задали себе вопрос:
Кто придумал термины, которые никто не придумал?:)
Вероятно, тему нужно перенести в раздел MS SQL.
...
Рейтинг: 0 / 0
Справочники пользователей, на основе общего справочника
    #39578822
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,
1. Кто наполняет общий справочник и в каких случаях общий может меняться?
2. Есть ли требования к уникальности имени в общем справочнике?
3. Есть ли требования к уникальности имени в справочнике одного пользователя?
4. Может ли пользователь добавить в свой справочник имя, существующее в общем?
5. Может ли пользователь добавить себе имя, не существующее в общем, но существующее у другого пользователя?

В общем, все эти вопросы вытекает из одного: как используется справочник при выборе данных пользователям, что сохраняется и как оно потом анализируется? :)

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


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