Как сказал Митч Уит, для этого уже есть действительно хорошая система, и она называется Файловая система - моей первой рекомендацией будет еще раз взглянуть на ваши требования, чтобы узнать, действительно ли это .
Однако у вас могут быть свои причины, поэтому вот как я структурировал таблицу:
filesystem (
id, // auto increment
type, // flag field: 1 = file, 2 = folder, 3 = symlink, if needed (?)
parent_id, // id of a folder
filename,
modified,
created,
modified_by,
created_by,
file_data // blob
)
Вам понадобится уникальный индекс (parent_id, filename), если вы хотите эмулировать реальную систему.
Если вам нужны разрешения для каждого файла, я просто продублирую подход Unix с разрешениями владельца / группы / всех пользователей - вам также нужно будет отслеживать владельца и идентификатор_группы в этой таблице. Возможно, вы могли бы упростить это для владельца / каждого, и вы могли бы просто использовать чтение / запись (исключая «выполнить»).