|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
Есть общий справочник (Dictionary) названий, юзер (Users) может на основе общего справочника формировать свой: 1) использовать существующие строки по внешнему ключу 2) добавлять собственные названия (Name), которых нет в общем справочнике На основании этих действий формируется свой личный справочник юзера (UserDictionary). Как должен выглядеть Userdictionary? Что не нравится в текущей версии - наличие null-полей. Люблю, когда таких в БД минимальное количество, а тут - либо в записи DictionaryId, либо Name ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 17:07 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
Таблица Dictionary - ВСЕ названия, и стандартные и пользовательские (возможно метку источника - Общий/Пользовательский) Таблица Users - пользователи Таблица UsersDictionary - связка пользователей и справочника названий - одни UserId <FK>, DictionaryID <FK>, ( UserId, DictionaryId ) <PK> ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 19:12 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
Руслан ДамировичТаблица Dictionary - ВСЕ названия, и стандартные и пользовательские (возможно метку источника - Общий/Пользовательский) Таблица Users - пользователи Таблица UsersDictionary - связка пользователей и справочника названий - одни UserId <FK>, DictionaryID <FK>, ( UserId, DictionaryId ) <PK>Исчо проще: Dictionary Названия и код пользователя. Если он UserId= 0 то это стандартное название, если UserId<> 0 то пользовательское. Доступные пользователю названия: ... from Distionary where (UserId=0 or UserId = xx) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 22:42 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
LSV, Исчо проще: Dictionary Названия и код пользователя. Если он UserId= 0 то это стандартное название, если UserId<> 0 то пользовательское. Доступные пользователю названия: ... from Distionary where (UserId=0 or UserId = xx) только не понятно - если юзер 1 придумал себе название, то как быть юзеру 2, который тоже для себя придумал тоже самое название, но чуть позже? - не сможет ввести (ибо оно уже есть, но оно и не общее и не его) - сможет, но задублирует... а потом еще один задублирует, а потом еще один, а потом еще одно задание не раз, а потом ещё и ещё.... - или теперь для него общее название это не только UserId=0 но и UserId <> его id ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 23:33 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
blest, У вас все правильно в схеме. Советы запихнуть все в Dictionary приведут к бардаку в унифицированном справочнике. Наличие null не является проблемой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 23:40 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
LSV, Злой Бобр, я вам рукалицоплескаю, господа. Такую фигню придумали. Советы запихнуть все в Dictionary приведут к бардаку в унифицированном справочнике. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2017, 09:41 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
только не понятно - если юзер 1 придумал себе название, то как быть юзеру 2, который тоже для себя придумал тоже самое название, но чуть позже?Это не имеет отношения к схеме данных. Это чисто административная проблема. Можно написать процедуру, кот. проверит и не допустит дубли, можно (и нужно) сделать процедуру слияния дублей, н-р неодинаково написанных, но одинаковых по сути пунктов. Советы запихнуть все в Dictionary приведут к бардаку в унифицированном справочнике. Та ты чо, серьёзна !!? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2017, 10:45 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
Руслан Дамирович, Вариант, спасибо. А в таблице Dictionary сделать уникальность на названия? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2017, 14:21 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
blestРуслан Дамирович, Вариант, спасибо. А в таблице Dictionary сделать уникальность на названия? Я как раз и предлагал с прицелом на уникальность. Как душа ляжет. Главное - контролировать целостность при добавлении (транзакции), а также озаботиться удалением (если нужно) никем не используемых терминов, если они пользовательские. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2017, 15:30 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
Руслан Дамирович, В общем спасибо, в текущем проекте так и сделаем. По-моему отличное решение, нет избыточности. В целом у меня что-то витало такое в идеях, но в решение никак не смог сформулировать(( ну и хотелось услышать, как вообще такие задачи решаются, мне показалось, что такие справочники, на основе общий - рядовая задача. Поэтому и хочется еще услышать минусы/подводные камни данного решения. Схема получается следующая (На Dictionary уникальный ключ на поле Name) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2017, 18:38 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
blest, А не проще при такой схеме в Dictionary добавить UserId и не делать таблицу UserDictionary от слова совсем?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2017, 19:25 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
Злой Бобрblest, А не проще при такой схеме в Dictionary добавить UserId и не делать таблицу UserDictionary от слова совсем?.. Нельзя, так как связь будет M:N ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2017, 19:32 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
blest, Еще ключом оформите связку UserId, DictionaryId - именно в таком порядке - и будет то, что я бы реализовал при такой задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2017, 19:34 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
Руслан Дамировичblest, Еще ключом оформите связку UserId, DictionaryId - именно в таком порядке - и будет то, что я бы реализовал при такой задаче. и трахался бы с миграцией уникальность просто нужна в такой схеме не видно, кто дополнил общий справочник (нет автора словесного поноса) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2017, 19:51 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
ViPRosРуслан Дамировичblest, Еще ключом оформите связку UserId, DictionaryId - именно в таком порядке - и будет то, что я бы реализовал при такой задаче. и трахался бы с миграцией уникальность просто нужна в такой схеме не видно, кто дополнил общий справочник (нет автора словесного поноса) Тут согласен, даже если не подниматься на уровни выше, я и в целом за то, чтобы первичные ключи во всех таблицах были идентичные по типу - в данном случае это поле Id. На UserId и DictionaryId естественно уникальный ключ. Я не знаю насколько важно юзер-источник записи в Dictionary, но в целом можно дополнить таблицу Dictionary внешним ключом UserId ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2017, 23:11 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
blestViPRosпропущено... и трахался бы с миграцией уникальность просто нужна в такой схеме не видно, кто дополнил общий справочник (нет автора словесного поноса) Тут согласен, даже если не подниматься на уровни выше, я и в целом за то, чтобы первичные ключи во всех таблицах были идентичные по типу - в данном случае это поле Id. На UserId и DictionaryId естественно уникальный ключ. Я не знаю насколько важно юзер-источник записи в Dictionary, но в целом можно дополнить таблицу Dictionary внешним ключом UserId Хотя это тоже не нужно (поле UserId в Dictionary) - я в своих таблицах также всегда добавляю полусистемное поле Created datetime и Deleted datetime. Т.о. можно простым запросом найти первого добавившего интересующего запись из таблицы UserDictionary. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2017, 23:37 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
Злой БобрА не проще при такой схеме в Dictionary добавить UserId и не делать таблицу UserDictionary от слова совсем?.. + Ключевое тут при такой схеме (я о второй схеме)... Таблица в которой кроме ID ничего нет - это избыточная таблица (тупой балласт)... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2017, 18:46 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
vmagЗлой БобрА не проще при такой схеме в Dictionary добавить UserId и не делать таблицу UserDictionary от слова совсем?.. + Ключевое тут при такой схеме (я о второй схеме)... Таблица в которой кроме ID ничего нет - это избыточная таблица (тупой балласт)... Вы о каком балласте UserDictionary? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2017, 17:07 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
blest, Вы находитесь в разделе "Проектирование баз данных". А все, что Вы пишете, связано с так называемыми "реляционными базами данных". В базах данных нет "ключей", в смысле "реляционных баз данных", и нет никаких проблем, которые Вы здесь обсуждаете. Еще раз предлагаю администраторам переименовать раздел в "Проектирование реляционных баз данных", чтобы не дискредитировать проектирование баз данных:) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2017, 22:20 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
Бредятинаblest, Вы находитесь в разделе "Проектирование баз данных". А все, что Вы пишете, связано с так называемыми "реляционными базами данных". В базах данных нет "ключей", в смысле "реляционных баз данных", и нет никаких проблем, которые Вы здесь обсуждаете. Еще раз предлагаю администраторам переименовать раздел в "Проектирование реляционных баз данных", чтобы не дискредитировать проектирование баз данных:) А много здесь тем по NoSQL БД ? Проще заголовок переименовать "Справочники пользователей, на основе общего справочника в MS SQL Server 2014" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2017, 17:58 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
blest, Причем здесь NoSQL?:) Вы же не про БД вопрос задаете, а про какую-то специфическую систему, в которой есть какие-то специфические проблемы. Для этой типовой учебной задачи Вы даже не задали себе вопрос: Кто придумал термины, которые никто не придумал?:) Вероятно, тему нужно перенести в раздел MS SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2017, 20:31 |
|
Справочники пользователей, на основе общего справочника
|
|||
---|---|---|---|
#18+
blest, 1. Кто наполняет общий справочник и в каких случаях общий может меняться? 2. Есть ли требования к уникальности имени в общем справочнике? 3. Есть ли требования к уникальности имени в справочнике одного пользователя? 4. Может ли пользователь добавить в свой справочник имя, существующее в общем? 5. Может ли пользователь добавить себе имя, не существующее в общем, но существующее у другого пользователя? В общем, все эти вопросы вытекает из одного: как используется справочник при выборе данных пользователям, что сохраняется и как оно потом анализируется? :) Потому как любое из ранее предложенных решений может оказаться наиболее правильным... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2018, 01:47 |
|
|
start [/forum/topic.php?fid=32&msg=39575671&tid=1540091]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 146ms |
0 / 0 |