2013-01-27 1 views
0

database designиностранные ключи несообразности сохранить в CakePHP

У меня есть эта проблема, когда я создаю ПГПС с тортом запечь в cakephp.I есть следующая проблема: если я держу два элемента в библиотеках, один с идентификатором 1 и ode id 2. then я сохранил вещь в комнат с library_id = 1, а после другого предмета в комнат с library_id = 2. Я действительно могу связать элемент комнаты с элементом пользователя. Это не должно позволить себе этого, так как они имеют один и тот же файл library_id.Таким образом, он не относится к одной и той же библиотеке. Мне нужен только пользователь, который может относиться к комнате, если они ссылаются на одну и ту же библиотеку. Я пытаюсь, что cakephp выдает ошибку, или не разрешает отношения, когда пользователи и комнаты не имеют одного и того же library_id, как я могу это сделать?

таблице результатов:

libraries   users    rooms     users_rooms 
id   id library_id  id library_id  user_id room_id 
1    1  1    1  2    1   1 
2 
+0

это очень мало смысла. Каковы ваши ассоциации моделей торта и чего вы пытаетесь достичь? – Ross

+1

Описание намного проще читать сейчас, но неясно, каков фактический вопрос/проблема; очевидно, если у вас есть таблица 'rooms_users', можно связать комнаты с пользователями. со схемой, которую вы поставили в вопросе, невозможно обеспечить соблюдение референциальной целостности, так что пользователи и комнаты должны принадлежать к одной и той же библиотеке. – AD7six

+0

Мне нужен только пользователь, который может относиться к комнате, если они ссылаются на одну и ту же библиотеку. как я могу это сделать? – Martin

ответ

1

Мне нужна только пользователь может относиться к комнате, если они относятся к одной и той же библиотеке. как я могу это сделать?

Обычно, ромбовидная зависимость, где две «сторона» алмаз должна привести от «дна» к же «корню», требует использования идентифицирующих отношений:

enter image description here

Обратите внимание, как library_id переносится из «корня», вниз обе «стороны» алмаза, а затем слиты на «дне» в users_rooms таблице. Таким образом, если пользователь подключен к комнате, они оба должны быть подключены к одной и той же библиотеке.

К сожалению, я не знаком с CakePHP, поэтому не могу сказать, поддерживает ли он это.

+0

спасибо в любом случае! Если бы что-то придумал, но я не могу работать для меня. Потому что cakephp жалуется на библиотеку_id в users_rooms – Martin