2013-12-12 6 views
0

Я пытаюсь создать таблицу для 'Friends' в MySQL.MySQL 'Friends' table

У меня есть таблица «Users» с атрибутом «user_id», который является основным ключом таблицы.

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

Так, например, USER_A подключается к USER_B, а USER_B теперь является другом USER_A, однако USER_B не видит USER_A в качестве друга, и, таким образом, USER_A по-прежнему остается только знаком USER_B.

+2

Просто добавьте 2 строки: 'userA | userB' и 'userB | userA' – zerkms

+0

Что у вас до сих пор? – reto

+0

До сих пор я думал о том, что user_id, friend_id и date_started являются меткой времени. – Pixulated

ответ

2

Вы можете смоделировать таблицу «Друзья» с 2 колонками, как это (псевдокод):

Friends(from, to) 
PrimaryKey(from, to) 

В реальной MySQL:

CREATE TABLE Friends (from INT, 
         to INT, 
         PRIMARY KEY(from, to)) 

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

Затем, если вы вставляете из = USER_A и в = USER_B, ваша предполагаемая семантика уже соблюдается. Поскольку вы также можете добавить еще одну строку, имеющую от = USER_B и = USER_A.

+0

Я действительно смущен этим! Два основных ключа? – Pixulated

+0

№ Это первичный ключ, состоящий из 2 столбцов. Первичный ключ может состоять более чем из 1 столбца. Обратите внимание, что я написал пример в псевдокоде, вы должны google проверить правильный синтаксис для такого первичного ключа. – Kami

+0

Хорошо, и какова была бы цель объединения двух столбцов для первичного ключа? – Pixulated