Пользователь, клиент, учетная запись администратора в 3 разных таблицах? - PullRequest
9 голосов
/ 18 августа 2010

В моем веб-приложении у меня будет три типа учетных записей.

  • Пользователь: для бесплатного использования веб-приложения
  • Заказчик: за рекламу и получение логотипа компании
  • Admin: для редактирования и удаления вещей

Должны ли все эти три быть в отдельных таблицах или в одной со столбцом с именем "account_type", где я могу отметить его как Пользователь, Клиент или Администратор?

Каковы плюсы и минусы для обоих? Есть ли лучшая практика для этого?

Спасибо

Ответы [ 3 ]

15 голосов
/ 18 августа 2010

Как правило, person может быть пользователем, клиентом и администратором, поэтому я бы начал с таблицы Person со столбцами IsCustomer, IsUser, IsAdmin.Позже (для быстрого поиска) вы можете решить добавить отдельные таблицы Admin, Customers, Users с FK в таблицу Person.

РЕДАКТИРОВАТЬ:

Типичный случайможет быть:

  • 5 миллионов пользователей
  • 1000 клиентов
  • 10 администраторов

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

8 голосов
/ 18 августа 2010

Если пользователь может быть только одного типа, вам лучше использовать одну таблицу и битовое поле для IsAdministrator и т. Д.

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

пример структуры (типы данных - SQL Server и предлагаются только)

Таблица пользователей

  • UserID - int
  • Имя пользователя - varchar (25)
  • Пароль - varchar (25)
  • Имя - varchar (50) и т. Д. *

Таблица ролей

  • RoleId - int
  • Описание роли - varchar (25)

Таблица User_Roles

  • UserId - int (с ключом foregin для таблицы Users)
  • RoleId int (внешний ключ к таблице ролей)
2 голосов
/ 18 августа 2010

Плюсы и минусы различаются в зависимости от размера и сложности вашей системы.

Я бы разбил его на User, Role, UserResources

User (будет определять основную информацию)

Роли пользователя

  • FK-> RoleType

Role_Type (пользователь, администратор, клиент, возможно, разрешения или вы можете это сделать дальше).

UserResources (медиа)

  • FK-> Пользователь
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...