72 похожих чатов

Всем привет. как принято хранить в базе сущности, у которых в

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

12 ответов

7 просмотров

Wut?

Нет, никто не делает отдельную таблицу под каждую пользовательскую роль, чтобы это не подразумевало. Есть такая штука как EAV, но для ее использования редко бывает оправдание

Нельзя. Потому что это получается нереляционная база. А вот в какой-нибудь MongoDB - пожалуйста

Maxim-🍓 Автор вопроса
Etki
Нет, никто не делает отдельную таблицу под каждую ...

Хорошо, а как мне тогда это хранить? Обращаясь к примеру с пользователями: На каком-нибудь сишарпе, я бы сделал класс пользователя (логин и пароль) и от него уже бы наследовал условно класс студента (ФИО, номер группы) и класс преподавателя (ФИО, преподаваемые дисциплины, курируемые группы и тд) - это как раз были бы две роли. Как мне подобное в бд хранить-то? Насколько я знаю, наследование там не такое как в ООП. Можно создать единую таблицу для хранения всех ролей вместе, но тогда там половина столбцов будет заполнена null

Maxim 🍓
Хорошо, а как мне тогда это хранить? Обращаясь к п...

Это будут отдельные таблицы. Человек с айдишкой Преподаватель с айдишкой и внешней ссылкой на айдишку человека и т.д. Это вообще нужно основы проектирования реляционных БД объяснять

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

Maxim 🍓
Хорошо, а как мне тогда это хранить? Обращаясь к п...

изучить про третью нормальную форму))))

Maxim 🍓
Хорошо, а как мне тогда это хранить? Обращаясь к п...

Это и для шарпа плохо звучит, потому что пользователь не определяется данными авторизации

Такое наследованием можно делать. Но это всё будет статично в рантайме. Если надо динамично - EAV.

Maxim 🍓
Хорошо, а как мне тогда это хранить? Обращаясь к п...

В БД в общем-то вообще нет наследования. Ну, и половина null, ну и что. Впрочем, надо сказать, что в данном случае вероятно имеет смысл создавать "шырокие" таблицы, в которых запись в "преподаватель" ссылается на "пользователь" и запись в "студент" ссылается на "пользователь", отношэнием один-к-одинилиноль.

Похожие вопросы

Обсуждают сегодня

Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
10
господа, когда у вас в боте есть локализация (ру + англ, остальные языки пока не планируются), вы на первом старте как с языком решаете вопрос: смотрите на language_code приле...
Denis 🐍|👑 | darling! 🥰
5
Добрый день. Созданию отношения таблиц для учёта кораблей, их движения между точками (портами) согласно расписания. Терзают сомнения в правильном ли направлении двигаюсь 😅 1...
Aleksey
1
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
I have financial chart like this I can mask by color to get green and red squares. I want get two data First i want to get two last squares(two in the very right side colors) ...
@. .@
4
Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
Привет. Наверняка у кого-нибудь здесь есть опыт работы с трекерами (встроенными в OpenCV (KCF) или абстрагированными) на одноплатниках. Если не рассматривать малинку и други...
Georgy Makarov
4
Приветствую. Есть N видео объектов (фильмы). Часть полной длины просмотра а часть короткие ( обрезаны титры). Задача найти идентичные фильмы. Я не в курсе, есть ли аналог шаз...
Nikolay Chudinov
7
Карта сайта