Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Как правильно спроектировать базу данных?

#sql


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

примерно такой механизм, чтоб при смене языков скажем слово с белорусского получало
описание на украинском, при поиске слова на украинском получало описание на русском и т.д.

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


    


Ответы

Ответ 1



На мой взгляд правильно будет создать отдельную таблицу для языков. Пусть это будет таблица Langs. В нем будут столбцы id,lang_code. А для слов уже будет не 3 таблицы а одна(с именем Word) с полями id, word, lang. И как уже поняли связь между ними будет такой Word.lang=>Langs.id. Идем дальше. Осталось таблица Values для описания. Эту таблицу то же оставим одну. А поля уже будут такими id, value, word_id. И как уже поняли связь между таблицами Word и Values будет такой Values.word_id=>Word.id. И сейчас ваша база уже будет универсальной, и при добавлении нового языка вы не будете опять добавлять в базу новые таблицы. Вам нужно будет только в языковой таблице добавить новый язык. И все ваш новый язык к словарю будет готов.

Комментариев нет:

Отправить комментарий