2013-09-29 6 views
0

У меня вопрос о моем текущем проекте. Это онлайн-система регистрации для определенной организации.Дилемма для баз данных

У меня есть эта проблема в отношении того, как я могу определить посещаемость членов на определенной «конференции».

У меня есть таблица в моей базе данных с именем «members», которая содержит всю информацию об их регистрации и таблицу «конференция». Ежегодно проводятся конференции, и участники регистрируются в нем, чтобы быть участником этой конференции. Мне нужно иметь функцию просмотра для «администратора», чтобы увидеть, кто присутствовал на предыдущей конференции.

Идея, которую я уже имею, заключается в том, что я добавлю столбец «first_conference» в таблицу «members» и задаю значение, подобное «1», если этот член зарегистрировался или присутствовал на «first_conference», так что если администратор захочет просмотреть участие в 1-й конференции, участники с «1» в качестве значения столбца «first_conference» будут показаны на странице.

Дело в том, что это годное, и я нахожу что-то вроде лучшего альго для этого. потому что, если я пойду с моей идеей, я буду как добавлять новый столбец каждый год к «членам» таблицы, например. ('second_conference', 'third_conference', ..., 'nth_conference')

ответ

2

Это отношение называется many-to-many, что означает, что для каждого участника будет несколько конференций, и для каждой конференции будет несколько членов.

вы должны разорвать эту связь с помощью третьей таблицы позволяет называть его conf_members и ее столбцы нечто вроде id, member_id, conference_id, attended тогда, когда у вас есть конференция, вы будете создавать новую строку в conference таблице и, например, новый конференц-идентификатор 10 и тогда вы послали приглашение членов и для каждого нового приглашения добавить новую строку в нашем новый стол, например:

id, member_id, conference_id, attended 
1 , 2  , 10   , 0 
1 , 5  , 10   , 0 
1 , 4  , 10   , 0 
1 , 3  , 10   , 0 

однажды членов посетить вы изменили присутствовали от 0 к 1 если вы приглашаете, кто является еще не участник, вы должны добавить запишите это в своей таблице members, а затем добавьте ссылку на этот элемент в эту таблицу.

так что теперь вам не нужно прикасаться к базе данных больше, и вы можете легко создавать свой вид с помощью join между вашими members, conferences, conf_member таблиц.

+1

+1 Это правильное решение и хороший пример. –

+0

О, я не думал об этом. хорошо, я понимаю ваше решение, и я думаю, что вы предлагаете мне использовать «внешний ключ»? как в новой таблице, которую вы предлагаете, «conf_members» имеют столбцы «member_id», на которые ссылаются из таблицы «members» и «conference_id», на которые ссылается таблица «конференций». это то, что вы предлагаете мне сделать это? Благодарю. :) –

+0

Я забыл упомянуть, что 'member_id',' conference_id' должны быть внешними ключами – trrrrrrm

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