database архитектура

3 декабря 2010 в 13:31

Нужно хранить в базе 2 поля: uid - user id, color_id - цвет. Каждый пользователь может выбрать несколько цветов. Но не иммет смысла делать записи в бд если пользователь опять выбрал цвет, который он уже выбирал. То есть комбинация uid+color_id должна быть уникальной. Как это сделать в друпале? Просто сделать по этим двум полям составной первичный ключ или наложить ограничения на поля? А может еще что?

Спасибо за помощь.

Комментарии

"skiller_07" wrote:
Как это сделать в друпале

Как правило, данная фраза означает, что человек с предметной областью не знаком совершенно и все свои проблемы списывает на друпал.

3 декабря 2010 в 13:46

как правило делается это так: 'primary key' => array('nid','uid')

Я лишь хотел узнать у опытных друпалеров есть ли другой вариант(в частности наложения ограничений на поля именно в друпале) и ИМЕЕТ ЛИ СМЫСЛ ТОГДА ИСПОЛЬЗОВАТЬ AUTO INCREMENT. спасибо опытные друпалеры.

3 декабря 2010 в 14:32

"skiller_07" wrote:
ИМЕЕТ ЛИ СМЫСЛ ТОГДА ИСПОЛЬЗОВАТЬ AUTO INCREMENT.

ну какой еще AUTO INCREMENT если у тебя определенный пользователь выбрал определенные цвета и эти определенные данные сохраняются?
Плюс, то, что старые записи удалять надо, ты это понимаешь?

3 декабря 2010 в 14:47

Auto increment имеет смысл делать, если планируете интеграцию с Views. Модуль Views составные ключи не жрет Smile

3 декабря 2010 в 15:31

"Softovick" wrote:
А разве UPDATE не катит?

update же старые ненужные записи не удалит.
Если бы таблица была вида:
пользователь|цвет|флаг_выбран_ли
тогда можно было бы и update-ом(по всем), а у него хранятся только выбранные.

3 декабря 2010 в 16:03

natbampo wrote:
"Softovick" wrote:
А разве UPDATE не катит?

update же старые ненужные записи не удалит.
Если бы таблица была вида:
пользователь|цвет|флаг_выбран_ли
тогда можно было бы и update-ом(по всем), а у него хранятся только выбранные.

Не вижу в описании, что пользователь может отменить выбор.... Впрочем да, поразмыслил, тут только добавление уникальных записей, а исправления старых не нужно...

3 декабря 2010 в 16:10