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

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

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

12 ответов

34 просмотра

Wut?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта