Таблица временных пользователей или таблица законных пользователей? - PullRequest
0 голосов
/ 09 марта 2010

У меня есть внештатное веб-приложение, которое позволяет пользователям регистрироваться на события. В моей базе данных у меня есть таблица t_events_applicants со столбцом t_events_applications.user_id с ограничением внешнего ключа, связанным со столбцом t_users.user_id. Таким образом, это означает, что только пользователи, которые зарегистрировались в моем веб-приложении, могут регистрироваться для событий моего веб-приложения.

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

Должен ли я создать таблицу t_teven_user с именем столбца и адресом электронной почты, а затем удалить ограничение fk t_events_applicants.user_id? Или я должен добавить незарегистрированных пользователей в таблицу t_user, а затем добавить столбец с именем t_user.type, где тип может быть «зарегистрированным» или «незарегистрированным»?

Как мне решить, какой подход выбрать?

Много раз я сомневаюсь при любом подходе. Я спрашиваю себя: «Что если в будущем временному пользователю будет разрешено стать полностью зарегистрированным пользователем? Тогда, возможно, у меня должна быть только таблица t_user. Но тогда я также не чувствую себя хорошо при хранении большого количества временных пользователей в t_user. "

Ответы [ 3 ]

2 голосов
/ 09 марта 2010

Разве это не будет роль?

Создайте таблицу пользователей, дайте им количество ролей (от многих ко многим users_roles).
В таблице ролей вы добавите роль, котораяпозволяет регистрироваться для событий и ролей для различных прав на остальной части вашего веб-сайта.
Таким образом, можно легко продвигать пользователей только по событиям для полноправных пользователей (добавлять правильные роли), и можно будет добавитьдругие вещи позже (другие события, специальные подписки и т. д.).
Скорее всего, у вас уже есть такая система в любом случае ..

0 голосов
/ 09 марта 2010

Похоже, что зарегистрированные пользователи против незарегистрированных пользователей стали ложным отличием, учитывая новые системные требования. Я бы держал их всех вместе в одном столе. Храните информацию о регистрации сайта в отдельной таблице. Вам даже не нужен столбец типа в комбинированной таблице, поскольку вы можете определить, зарегистрирован ли пользователь с помощью JOIN в таблице регистрации сайта.

0 голосов
/ 09 марта 2010

Я бы пошел с вашим вторым подходом: добавьте их в ту же таблицу, но со столбцом Тип. Если вы создаете две пользовательские таблицы, вам всегда нужно проверять обе, чтобы найти пользователя и т. Д. С двумя таблицами, как вы будете иметь ограничение от пользователя на то, что он создает? Проще говоря, они пользователь, просто другой тип.

Если у вас есть дата CreateDate или LastLogin в таблице пользователей (или некоторых других), вы можете удалить временных пользователей через некоторое время.

...