2013-08-15 2 views
0

Я думаю, имя вопроса странно, но я не знаю, как правильно это сформулировать, поэтому я попытаюсь описать проблему. Скажем, у нас есть две таблицы:sql более одного ключа в одном поле

1)

id | unit_name | strength | health 
1 | private | 10  | 10 
2 | general | 5  | 5 
n | someone | 123  | 321 

2)

id | rules | who_has_this_rule 
1 | rule1 | 1 
2 | rule2 | 2 
3 | rule3 | 1 
4 | rule4 | 1 

поле "who_has_this_rule" correspondes с идентификатором первой таблицы. Но я не могу понять, что делать, если подразделение должно иметь более одного правила в своем профиле. Например, у частного должно быть правило1 и правило4. Как это сделать?

+0

Это намного лучше позвонить столбец, который ссылается на другую таблицу, связанную с именем этой таблицы, например 'unit_id', а не' who_has_this_rule'. – tadman

ответ

2

Что вам нужно, это таблица соединений.

Третья таблица присоединиться правилами и единицы

unit_rules

id | unit_id | rule_id 
1 | 1  | 1 
2 | 1  | 4 
3 | 2  | 1 

Вы можете иметь первичный ключ (ID) или составной ключ (unit_id и rule_id)

+0

Спасибо. А что, если две (или более) единицы должны иметь одно и то же правило? – Ivan

+0

Тогда у вас есть еще одна строка в таблице соединений, которая говорит, например: 'id: 3, unit_id: 1, rule_id: 4' – Hellion

+0

@Ivan, см. Мое редактирование – usha

Смежные вопросы