Fork me on GitHub

База данных Eonza. Часть 2

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

enz_group

Таблица enz_group содержит группы пользователей, которые определены владельцем хранилища.

CREATE TABLE IF NOT EXISTS `enz_group` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

name - наименование группы пользователей.

enz_users

Таблица enz_users содержит список пользователей, которых добавил владелец хранилища, чтобы дать доступ к данным.

CREATE TABLE IF NOT EXISTS `enz_users` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `login` varchar(32) NOT NULL,
  `pass` binary(16) NOT NULL,
  `email` varchar(32) NOT NULL,
  `idgroup` smallint(5) unsigned NOT NULL,
  `name` varchar(64) NOT NULL,
  `lang` varchar(10) NOT NULL,
  `uptime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `login` (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Все поля данной таблицы описаны на странице Пользователи.

enz_access

Таблица enz_access содержит все правила доступа групп пользователей к таблицам базы данных.

CREATE TABLE IF NOT EXISTS `enz_access` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `_uptime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `_owner` smallint(5) unsigned NOT NULL,
  `idgroup` smallint(5) unsigned NOT NULL,
  `idtable` int(10) unsigned NOT NULL,
  `mask` varchar(32) NOT NULL,
  `active` tinyint(3) NOT NULL,
  `read` tinyint(3) unsigned NOT NULL,
  `create` tinyint(3) unsigned NOT NULL,
  `edit` tinyint(3) unsigned NOT NULL,
  `del` tinyint(3) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `_uptime` (`_uptime`),
  KEY `idgroup` (`idgroup`,`idtable`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Все поля данной таблицы описаны на странице Права доступа. Укажем только возможные значения для полей read, edit и del.
0 - данная группа не имеет соответствующих прав доступа.
1 - пользователь указанной группы имеет доступ только к тем записям, который он сам создал.
2 - пользователи группы имеет права доступа ко всем записям данной таблицы или таблиц.

enz_mimes

В таблицу enz_mimes записывается и хранится информация о всех типах загружаемых файлов.

CREATE TABLE IF NOT EXISTS `enz_mimes` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `ext` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

name - информация о MIME-типе данных. Например,

image/png
application/vnd.ms-excel
audio/mpeg

ext - зарезервировано.

enz_files

Таблица enz_files хранит список всех загруженных файлах. Если какая-то таблица имеет тип Изображения или Файлы/Документы, то информация о загруженных файлах хранится здесь.

CREATE TABLE IF NOT EXISTS `enz_files` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `_owner` smallint(5) unsigned NOT NULL,
  `_uptime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `idtable` smallint(5) unsigned NOT NULL,
  `idcol` int(10) unsigned NOT NULL,
  `iditem` int(10) unsigned NOT NULL,
  `folder` tinyint(3) unsigned NOT NULL,
  `filename` varchar(128) NOT NULL,
  `size` int(10) unsigned NOT NULL,
  `comment` text NOT NULL,
  `storage` longblob NOT NULL,
  `w` mediumint(8) unsigned NOT NULL,
  `h` mediumint(8) unsigned NOT NULL,
  `sort` tinyint(3) unsigned NOT NULL,
  `preview` blob NOT NULL,
  `mime` tinyint(4) NOT NULL,
  `ispreview` tinyint(3) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idtable` (`idtable`,`idcol`,`iditem`,`sort`),
  KEY `folder` (`idtable`,`folder`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

idtable - идентификатор таблицы, которой принадлежит файл.
idcol - идентификатор поля (колонки) куда загружен файл.
iditem - идентификатор записи в которую загружен файл. Эти три поля однозначно определяют принадлежность файла.
folder - если файл хранится на диске, то указывает идентификатор (имя) директории. Файлы на диске хранятся как /storage/[idtable]/[folder]/[id], где [id] - это имя файла совпадающее с идентификатором в данной таблице.
filename - оригинальное имя файла.
size - размер файла.
comment - комментарий к файлу.
storage - если файл хранится в базе данных, то он записывается в это поле.
w - содержит ширину картинки, если файл принадлежит полю типа Изображения.
h - содержит высоту картинки, если файл принадлежит полю типа Изображения.
sort - порядок файла.
preview - если файл хранится в базе данных, имеет тип Изображения и указано создание миниатюр, то миниатюра записывается в это поле. В случае, если изображения записываются на диск, то путь к миниатюре будет /storage/[idtable]/[folder]/_[id].
mime - идентификатор MIME-типа из таблицы enz_mimes.
ispreview - указывает на наличие миниатюры для изображения.