Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
хочу сделать своеобразный словарь-переводчик, но как лучше сделать не знаю.
На ум приходит сделать одну таблицу со всеми языками (их будет около 10) по типу такого:
id|en|ru|es|fr|de|...
Или сделать таблицы для каждого языка с переводом
id|en|ru
id|es|ru
id|fr|ru
id|de|ru
И так далее, как сделали бы вы, важно удобство поддержки и производительность в первую очередь
Неактивен
Если правильно, то две таблицы.
1. Языки: id|язык
2. Перевод: id|язык_id|слово
Неактивен
Спасибо это решение гораздо лучше, плюс можно будет привязать разные переводы к слову, ведь одного слова может быть много переводов.
И тогда еще вопрос
Как лучше делать для две таблицы для каждого языка или можно засунуть все в одну таблицу?
Ведь допустим в каждом языке будет по 20000 слов у каждого слова может быть по 5 вариантов перевода и тогда получается таблича с переводами будет иметь 100000 слов, а 10 языков это один миллион записей.
Или может лучше сделать 10 пар таблиц (по 2 на каждый язык)
Неактивен
Не нужно делать таблицу для каждого языка. Сделайте индекс по "язык_id"
Примерно так.
Неактивен
klow написал:
Не нужно делать таблицу для каждого языка. Сделайте индекс по "язык_id"
Примерно так.CREATE TABLE languages (
id int(11) NOT NULL AUTO_INCREMENT,
language varchar(2) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Transfer (
id int(11) NOT NULL AUTO_INCREMENT,
Language_id int(11) NOT NULL,
Transfer varchar(255) NOT NULL,
PRIMARY KEY (id)
);
ALTER TABLE Ttransfer
ADD CONSTRAINT FK_Transfer_Language_id FOREIGN KEY (Transfer_id)
REFERENCES Languages (id) ON DELETE CASCADE ON UPDATE CASCADE;
Не совсем понятно как хранить связь между словом и его переводом тогда?
Думал может как то так тогда:
Отредактированно pautinaweb (30.09.2019 00:59:37)
Неактивен
Идея была в другом.
Две таблицы:
1. Языки. Тут нет никаких слов!!!
2. Слово на этом языке.
Отредактированно klow (30.09.2019 14:50:34)
Неактивен
klow написал:
Идея была в другом.
Две таблицы:
1. Языки. Тут нет никаких слов!!!
2. Слово на этом языке.CREATE TABLE `langs` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`lang` varchar(2) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `words` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`lang_id` INT(11) NOT NULL,
`word` INT(11) NOT NULL,
PRIMARY KEY (`id`)
);
ALTER TABLE `translate` ADD CONSTRAINT `translate_fk0` FOREIGN KEY (`lang_id`) REFERENCES `langs`(`id`);
Ну слова, это не самое главное, меня больше волнует вопрос, как лучше хранить переводы к ним?
Неактивен
Вы правы, немного ступил.
Нужна еще одна таблица.
Неактивен
Страниц: 1