Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
две таблицы на объект. вторая с параметрами. (Игорь) 16/10/2006 - 11:22:50



From: Игорь - 16/10/2006 - 11:22:50
Subject:две таблицы на объект. вторая с параметрами.
-----------------
Очень хочется создать как можно более гибкую систему на будущее, поэтому пришел к такому расположению данных. Допустим есть пользователи, их аккаунты будут занимать 2 таблицы:

1:
users
-----
id / int, unique, auto_incr
login / var(32)
password / var(32), binary

2:
settings
--------------
userid / int, index
param / var(64), index(64)
value / mediumtext

Таким образом в таблице с настройками могут храниться возраст, имейл, место рождения, настройки по сайту итд. (что угодно, чтобы вошло в mediumtext поле, числовые значения тоже будут предоставлены текстом, поэтому понимаю, что какие-либо расчеты на лету будут медленнее обычных). Зато получаем гибкость системы, в любое время можем добавлять новые параметры не меняя струкруру базы.

Теперь проблема: как делать выборки из этих таблиц, чтобы данные из второй таблицы совмещались со строкой из первой, при этом param служил названием столбца. Допустим для листинга пользователей. Пока только есть идея делать так:

QUERY:
SELECT id, t1.value as name, t2.value as age, t3.value as location
FROM users
LEFT JOIN settings t1 on id=t1.userid and param='param_name'
LEFT JOIN settings t2 on id=t2.userid and param='param_age'
LEFT JOIN settings t3 on id=t3.userid and param='param_location'

А допустим, через какое-то время этих параметров будет 50, а пользователей в базе несколько тысяч. Не слишком ли бредовая затея с таким расположением данных? Или огромное кол-во лефт джоинов не будет тормозит систему? Заранее благодарен за все мнения и свои решения проблемы.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
29869



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |