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

Ребята, у меня такой вопрос. Работаю над проектом где потребуется

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

16 ответов

22 просмотра

Очень плохая идея

Организуется легко, связь один кол многим от каждой таблицы с атрибутами , требующими перевода, к таблице перевода, где pk состоит из полей pk основной таблицы плюс код языка

Я не дочитал, сорри. Идея ок, КРОМЕ битового поля наличия переводов. Это и нарушение 1НФ , и ещё и дублирование данных. Признак наличия перевода и так есть в таблице переводов, это поле не нужно

Серж-ИзТанзании Автор вопроса
Ilya Zviagin
Я не дочитал, сорри. Идея ок, КРОМЕ битового поля ...

в данном случае помоему можно пренебречь 1НФ, потому что это ж по сути кеш (условный), который будет заполняться один раз, при редактировании данных в админке. Вместо того чтобы делать постоянно запрос по связанной таблице. Своего рода такая денормализация данных

Серж ИзТанзании
в данном случае помоему можно пренебречь 1НФ, пото...

Ты в курсе, что ты никаким индексом это поле с битовой маской языков не покроешь? А там, в связанной таблице — пожалуйста, строй индексы, делай запросы...

Серж-ИзТанзании Автор вопроса
Ilya Zviagin
Ты в курсе, что ты никаким индексом это поле с бит...

гм, тему индексов пока не исследовал, надеялся что будет какой то воркэраунд

Серж ИзТанзании
гм, тему индексов пока не исследовал, надеялся что...

Не надейся. Нарушение 1НФ — нахер с пляжа, НОЛЬ индексов...

Серж ИзТанзании
гм, тему индексов пока не исследовал, надеялся что...

Почему и говорю всегда, нарушение 1НФ — страшнейшая ошибка в проектировании!

Ilya Zviagin
Ты в курсе, что ты никаким индексом это поле с бит...

Покроешь. В постгресе есть индэксы, которые покроют битовые маски.

Ilya Anfimov
Покроешь. В постгресе есть индэксы, которые покрою...

Да, да. Есть. И постгрес классный. И я тоже хочу жить как в сказке. Но...

если вам интересно, то можете посмотреть как это реализованно в ERP от oracle - OEBS. если в кратце, то там есть поле language

Серж ИзТанзании
в данном случае помоему можно пренебречь 1НФ, пото...

Этот по сути кэш тебе ничего не сможэт ускорить. Поскольку если тебе нужна строка — то всё равно обращать ся по индэксу во вторую таблицу. И правильный индэкс там будет (идтекста, язык) — и список доступных языков будет получаться index range scan этих нескольких записей на одной несчастной страницэ. К которой тебе всё равно обращаться. Зато геморроя и тормозов это можэт добавить. Геморроя — в рамках синхронизацыи, тормозов — поскольку любое добавление перевода будет блокировать запись в основной таблицэ/создавать новую версию этой записи.

Nikolay
если вам интересно, то можете посмотреть как это р...

Так это везде примерно так вот и реализовано.

Ilya Zviagin
Так это везде примерно так вот и реализовано.

Это да, если просто упомянуть ERP от Oracle, то на него можно найти ссылку, которую запостил выше. у них в доке все довольно хорошо расписанно

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
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
Карта сайта