Как спроектировать бд (права доступа)?

Доброго времени суток.

У меня есть несколько сущностей (хранилище, элемент).

У пользователей есть права, относящиеся к хранилищу, и есть права, относящиеся к элементу. Например, в хранилище пользователь может добавлять элементы, удалять и изменять их. Права на элемент могут позволять пользователю, например, просматривать какие-то характеристики элемента, изменять их и пр. У хранилища есть создатель, который решает какие права доступа можно предоставить пользователю на само хранилище и на каждый элемент, хранящийся в нем. Кроме того, у элемента есть создатель, и когда его элемент добавляется в хранилище, создатель хранилища может дать ему доступ к другим элементам, но доступ к его элементу ограничить не может.

Каким образом лучше это спроектировать?

На данный момент у меня всего одна мысль => есть следующие таблицы: Users, Storages, Elements, UserStorages и UserElements.

Структура таблиц UserStorages и UserElements следующая: StorageId (или ElementId) | UserId | Permissions , где Permissions - массив 0 и 1. Позиция каждого 0 или 1 - какое-то право; 0 - не разрешено, 1 - разрешено.