Как лучше поступить, с точки зрения рациональности!

  • Автор темы fashion guide
  • Дата начала

fashion guide

Guest
Как лучше поступить, с точки зрения рациональности!

Хочу задать такой вопрос. Представьте, что есть 100 пользователей. Каждый из пользователей отправляет данные в виде цвета.

То есть:

user1 - красный, зеленый, серо-голубой... и т.п.
user2 - белый, оранжевый

Как сделать так чтобы использовать наилучший вариант алгоритма хранения данной информации? У меня три варианта, какой из них лучше?

1. Создается три поля в таблице. user, color (longtext), hit (char5).

В результате, программа выполняется следующим образом. Поступают данный от user43, с цветом "голубым".
Программа смотрит какие цвета есть в поле color, в котором все ранее записанные цвета записаны через запятую. Если голубого цвета там нет, то его дописывает в конец.

Ньюанс.. цветов набирается до 2000 в день.. следовательно, поле color состоит из 2000 цветов, записанных друг за другом через запятую.

2. Создается три поля в таблице. user, color (varchar 30), hit (char5).

В результате, программа записывает в одну таблицу цвета всех 100 user'ов, добавляя значения в каждую новую строку.

Программа просматривает, есть ли у user43 color цветом "голубой".. (where user=43 and color="голубой"). Если не находит, то добавляет в самый конец таблицы строку вида user43, голубой.

Ньюанс, таблица в таком случае, будет содержать до 20000 строк. Обращения к ней будут 10-20 раз в секунду.

3. Создать для каждого user'а отдельную таблицу. И для каждого из них, добавлять по строкам цвета.

Ньюанс. Очень напряжно будет очищать 100 таблиц ежедневно.. при том, что юзры каждый раз добавляются..

Как делать?

Или есть какой еще вариант? Буду рад дельному совету.
 

Кром

Новичок
Три таблицы:
tb_users,
tb_colors,
tb_rel
в tb_rel делай связь по tb_users.ID и tb_colors.ID
 

fashion guide

Guest
Originally posted by Кром
Три таблицы:
tb_users,
tb_colors,
tb_rel
в tb_rel делай связь по tb_users.ID и tb_colors.ID
если не трудно, расскажи по подробнее пожалуйста. на примере..
 

Кром

Новичок
таблица tb_users
tb_users.ID
tb_users.NAME - имя
tb_users.SURNAME - фамилия и т.д

таблица tb_colors
tb_colors.ID
tb_colors.NAME - наименование цвета

таблица tb_rel
tb_rel.UID
tb_rel.CID

связи:
tb_users.ID - tb_rel.UID
tb_rel.CID - tb_colors.ID

соответственно, забьешь таблицу пользователей и таблицу цветов, а в таблицу отношений будешь добавлять данные. Выбрал пользователь с ID = 1 цвет с ID номер 3, вот и заноси эту информацию в таблицу. Понятно?
 

Ashotovich

Новичок
Добавлю для наглядности.
Таблица tb_rel имеет вид многие-ко-многим. То есть данные в ней будут выглядеть так:

UID | CID
----------
43 | 1
43 | 2
43 | 3
67 | 8
67 | 9
67 | 10
67 | 12

То есть у пользователя с ID=43 есть три цвета - допустим, голубой, синий и серый, а с ID=67 - четыре.
 

fashion guide

Guest
Спасибо всем огромное за помощь! Сделаю именно так! ;)
 
Сверху