Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение информации на нескольких языках / 16 сообщений из 16, страница 1 из 1
28.09.2008, 23:07:54
    #35564331
tselofun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
Добрый вечер. Возник вопрос как лучше реализовать хранение инфомрации на нескольких языках. Есть персона у котрой в свою очередь есть биография (собственно текст) на трёх языках (en, de, fr). База данных mysql.

1. Первый вариант, одна таблица person:
[person]
Код: plaintext
1.
2.
3.
4.
person_id
person_name
bio_en
bio_de
bio_fr

2. Второй вариант, отдельная таблица для биографий и персон. Поле biography_id в таблице person как бы намекает на связь с таблицей biography:
[biography]
Код: plaintext
1.
2.
3.
biography_id
bio_en
bio_de
bio_fr

[person]
Код: plaintext
1.
2.
person_id
person_name
biography_id

Хотелось бы услышать ваше мнение по поводу наилучшести варианта, в плане удобства, возможно скорости.
Как бы сделали вы?
...
Рейтинг: 0 / 0
28.09.2008, 23:55:38
    #35564350
IT-Shaman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
tselofun

Хотелось бы услышать ваше мнение по поводу наилучшести варианта, в плане удобства, возможно скорости.
Как бы сделали вы?

в плане удобства - это нужно знать как эта информация будет использоваться.
все эти варианты вполне жизнеспособны.

могу предложить еще один вариант:

таблица персоны.

таблица биографии:
текст биографии
язык
ссылка на персону.

такой вариант немного проще в плане организации полнотекстового поиска. искать надо только в одном поле. и нет избыточности полей. если у кого то только на одном языке биография, то будет одна запись.
если Вы напишите как будет эта информация использоваться, то можно будет подобрать подходящую структуру.
...
Рейтинг: 0 / 0
29.09.2008, 00:09:15
    #35564354
tselofun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
IT-Shaman, музыкальная энциклопедия на нескольких языках, на каждом из которых есть страницы музыкантов и их биогрфаии.

Вот пример, очень похожий:
last.fm/music/The+Beatles (англйиский)
lastfm.de/music/The+Beatles (немецкий)
lastfm.fr/music/The+Beatles (французский)

При этом, на каком нибудь из представленных языков может и не быть биографии. И вы прав
Ну и количество поддерживаемых языков может увеличиться.
...
Рейтинг: 0 / 0
29.09.2008, 00:11:06
    #35564355
tselofun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
tselofunИ вы прав
И вы правы по поводу поиска, если биография на одном из языков. Сразу на всех языках они не нужны одновременно.
...
Рейтинг: 0 / 0
29.09.2008, 10:56:57
    #35564637
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
я делал просто и в лоб.

К каждой таблицей с такой информацией добавляется дочерняя с добавлением в PK ещё и языка (соотв. справочник также есть в системе).

Если есть явно выделенный язык, используемый по умолчанию, можно те же поля хранить и в основной
таблице на этом дефолтном языке (во вспомогательной - уже не хранить).
...
Рейтинг: 0 / 0
29.09.2008, 11:49:01
    #35564792
alneo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
table Person
(
PersonID
...
)

table Biography
(
BiographyId
lang_Id
BiographyData
...
)

table PersonBiography
(
id
PersonID
BiographyId
)

table Language
(
LanguageId,
LanguageShortName,
...
)
...
Рейтинг: 0 / 0
29.09.2008, 12:03:41
    #35564846
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
2alneo: т.е., думаете, у нескольких людей может быть одна биография?
...
Рейтинг: 0 / 0
29.09.2008, 12:05:41
    #35564858
RA\/EN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
alneo
table PersonBiography
(
id
PersonID
BiographyId
)

Это зачем? Чтоб разным людям одну биографию вешать?
Сие проиворечит UML-ной модели, если ее рисовать - кроме отношения композиции между персоной и биографией все остальное будет вызывать недоумение.
...
Рейтинг: 0 / 0
29.09.2008, 12:08:53
    #35564870
alneo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
а как сделать, ведь у одного человека может быть несколько биографий на разных языках.
(в смысле одна биография на нескольких языках и число языков неограничено?, ну типа как в CMS системах)
...
Рейтинг: 0 / 0
29.09.2008, 12:12:18
    #35564885
alneo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
сори, исправляюсь. вот так нормально?

Biograpрy
(
Id,
UserId,
LanguageId,
BiographyData

)
...
Рейтинг: 0 / 0
29.09.2008, 13:44:22
    #35565201
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
alneoсори, исправляюсь. вот так нормально?

Biograpрy
(
Id,
UserId,
LanguageId,
BiographyData

)ес
...
Рейтинг: 0 / 0
29.09.2008, 22:35:38
    #35566442
tselofun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
Понял. Спасибо.
...
Рейтинг: 0 / 0
06.10.2008, 15:29:10
    #35578377
Dinamo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
egorych2alneo: т.е., думаете, у нескольких людей может быть одна биография?
С течением времени биография имеет свойство изменяться...
...
Рейтинг: 0 / 0
06.10.2008, 17:19:11
    #35578698
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
Dinamo egorych2alneo: т.е., думаете, у нескольких людей может быть одна биография?
С течением времени биография имеет свойство изменяться...... и переходить от человека к человеку, ага
...
Рейтинг: 0 / 0
07.10.2008, 13:23:56
    #35580235
Dinamo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
egorych DinamoС течением времени биография имеет свойство изменяться...... и переходить от человека к человеку, ага
С прошествием времени к биографии могут добавляться новые жизненные моменты и достижения (получение образования, смена места жительства, смена работы и т.п.), соответственно не отраженные в более ранних версиях биографии.
...
Рейтинг: 0 / 0
07.10.2008, 13:39:15
    #35580289
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранение информации на нескольких языках
вы в постановке задачи где-то увидели слово "версионность"? ткните пальцем, если не затруднит.
З.Ы. кстати, версионность достигается другими средствами, не разрушающими целостность данных
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / хранение информации на нескольких языках / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]