2015-02-11 4 views
0

фонпроектирование базы данных Реляционные: Пользователь перечисляет

Я нахожусь в процессе проектирования базы данных, которая позволит людям, которые зарегистрированы на моем сайте, чтобы создать списки. Эти списки состоят из пользователей. Функциональность будет похожа на Twitter Lists. Я использую PHP и MySQL.

Моя попытка до сих пор

До сих пор, я пришел с 2-мя столами:

ПОЛЬЗОВАТЕЛЕЙ (user_id, first_name, last_name)

ЛИСТАМ (list_id, название , описание)

Теперь я понимаю, что мне нужна третья таблица, которая будет соединять две, но я боюсь чтобы составить список полей, которые он должен иметь. Моя первая мысль заключалась в том, что мне понадобятся поля id, list_id и user_id, но я не уверен, если это правильный подход.

Мой вопрос

Какие поля мне нужно создать в моей третьей таблицы для того, чтобы иметь возможность соединить мои USERS и LISTS таблицы?

+0

Sidenote: предлагается, чтобы все ваши таблицы содержали поле, которое относится к каждому (общее поле), что упростит запрос. –

+0

@ Fred-ii- не будет ли третья таблица служить этой цели? – henrywright

+0

Я предполагаю, что так будет. Мне всегда нравится иметь в каждой таблице поле, но это только я ;-) –

ответ

0

Что вы после это в сводной таблице. В итоге вы укажете три таблицы, которые вы указали.

USERS(
    user_id integer not null primary key, 
    first_name text not null, 
    last_name text not null 
) 

LISTS(
    list_id integer not null primary key, 
    title text not null, 
    description text, 
    created_by integer references USERS 
) 

USERS_LISTS (
    user integer not null references USERS, 
    list integer not null references LISTS, 
    unique (user, list) 
) 

USER_LISTS - это много-много клея, которое необходимо выполнить для этой работы. Поле id не нужно.

0

Я считаю, вам нужно:

Creator ID - To store the id of the user that created the list; 

List ID - To store the id of the List; 

User ID - To store the id of the user in that list; 
+0

Спасибо за идею ID Creator, но не лучше ли было бы создать creator_id в таблице LISTS? – henrywright

+0

Ты совершенно прав. Моя ошибка, идентификатор создателя совершенно не требуется. Я считаю, что ответ Дэвида К-Дж более уместен –

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