Как разработать базу данных для поддержки «владельцев» для каждой таблицы - PullRequest
0 голосов
/ 13 июня 2011

Мое приложение имеет аутентификацию, и для того, чтобы пользователь мог редактировать какую-либо строку, он должен быть авторизован для нее (быть ее "владельцем"). Может быть более одного владельца.

Это не тривиальный случай "просто создайте владельца - (1: n) - hasPermission - (n: 1) - Table", потому что существует много таблиц (около 50), и их количество, вероятно, будет расти со временем. .

Единственное, что у меня сейчас есть, это создать что-то вроде:

 Permission
    UserId --references Users table
    TableName -- name of the table he has permissions for
    RowId -- Id of the table row that he can edit

Я вижу ряд проблем с этим ... (согласованность, вытягивание всех строк, которыми он владеет, в объекты и т. Д.) *

Есть ли другой шаблон для этого?

edit : масштаб проблемы: ожидается около 50 000 пользователей, 50 таблиц, максимум 100 000 строк на таблицу.

1 Ответ

0 голосов
/ 13 июня 2011

Есть старый добрый технический документ, созданный еще в эпоху 2005 года, о Реализация защиты на уровне строк и ячеек в базах данных SQL Server.

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

...