2014-01-15 1 views
0

Какой дизайн базы данных будет наиболее эффективным для продукта SaaS и почему?Роли и разрешения, сохраняются наборы разрешений в таблице ролей или в нескольких записях записи роли?


Design1: три таблицы (стандартный способ оформления вашей роли таблиц разрешений)

ROLE 
Id 
Name 
Description 

PERMISSION 
Id 
Name 

ROLEPERMISSION 
Id 
RoleId 
PermissionId 

design2: две таблицы

ROLE 
Id 
Name 
Description 
PermissionSetData 


PERMISSION 
Id 
Name 

Где role.permissionsetdata столбец содержит CVS разрешений, сохраненных в записи роли. (Сохраните пространство для хранения базы данных, может помочь с производительностью?)

ответ

0

Решение 1 является единственным подходящим дизайном.

  • Сохранение пространства для хранения базы данных почти всегда является спорным моментом здесь, я думаю. Когда вы можете купить TERA байт по разумной цене, почему бы вам не попробовать сохранить несколько kilo байт? (пространство, необходимое для каждого решения, будет примерно одинаковым).

  • Многозначная колонка во втором исполнении не соответствует proper database design.

  • С практической точки зрения извлечение данных в столбце значения muli является значительно более сложным и дорогостоящим, чем в правильно спроектированном db. Например, вы не можете индексировать столбец CSV должным образом, вы не можете легко присоединиться.

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