SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.12.2010 22:48:56

4e1ovek
Участник
Зарегистрирован: 14.07.2010
Сообщений: 5

Владение языками (английский,немецкий и т.д.) – хранение и поиск

Здравствуйте.
Необходимо хранить подробную информацию о пользователе, включая то, какими языками он владеет.
Первое, что приходит на ум, так это хранение в виде названий этих самых языков, перечисленных, например через запятую – русский,французский,немецкий.
Поиск же производить по WHERE `language` Like 'немецкий', но вероятно поиск будет очень долгий, да и выглядит все это как костыль.
Хотелось бы иметь возможность хранить в одной колонке идентификаторы языков, а не их названия.

Как в этом случае поступают социальные сети?

Неактивен

 

#2 27.12.2010 11:20:43

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Владение языками (английский,немецкий и т.д.) – хранение и поиск

Я схитрю и скажу, как надо сделать, а не то, как поступают социальные сети wink

CREATE TABLE users (id INT, ...);
CREATE TABLE languages (id INT, name VARCHAR(20));
CREATE TABLE user_languages (user INT, language INT, UNIQUE (user, language), INDEX (language, user));

А социальные сети явно это как-то денормализуют.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson