Разработка Интранет системы – Часть 3 (хранение данных)

База данных как ни странно была выбрана MySQL, по соображениям её бесплатности, распространению и набору инструментов.

Пользователи и группы пользователей суждено было разбить на две таблицы:

CREATE TABLE  UserList
(
Id INT (11) NOT NULL AUTO_INCREMENT,
Name VARCHAR (512) DEFAULT NULL COMMENT 'Имя пользователя (описание)',
EnterName VARCHAR (30) NOT NULL COMMENT 'Логин',
EnterPassword VARCHAR (32) NOT NULL COMMENT 'Пароль',
`Group` INT (11) NOT NULL COMMENT 'Группа пользователя',
AccessLevel INT (11) NOT NULL COMMENT 'Уровень досиупа',
PRIMARY KEY (Id),
INDEX Ou USING BTREE (`Group`)
);

CREATE TABLE UserGroups
(
Id INT (11) NOT NULL AUTO_INCREMENT COMMENT 'Ключ',
FullName VARCHAR (255) DEFAULT NULL COMMENT 'Полное наименование',
SokrName VARCHAR (255) DEFAULT NULL COMMENT 'Сокращённое наименование',
Type ENUM ('editors', 'users') NOT NULL DEFAULT 'users' COMMENT
'Тип пользователей',
DefaultTo ENUM ('yes', 'no') NOT NULL DEFAULT 'yes' COMMENT
'Включение поумолчанию в "кому"',
Sort INT (11) DEFAULT NULL COMMENT 'Столбец сортировки',
PRIMARY KEY (Id)
)

Самой большой проблемой была возможность сортировки записей в таблице по желанию пользователя. В итоге было добавлено поле Sort

Хранение файлов было организовано по следующему принципу

Также сообщения и статистика по сообщениям была организованна в две таблицы, причём таблица статистика включает в себя и ответы на сообщения и добавлены разные состояния статистики (поле Status).

CREATE TABLE StatReport
(
Id INT (11) NOT NULL AUTO_INCREMENT,
`DateTime` DATETIME DEFAULT NULL COMMENT 'Время',
Message INT (11) DEFAULT NULL COMMENT 'Ключ сообщения',
User INT (11) DEFAULT NULL COMMENT 'Ключ пользователя',
Status VARCHAR (15) DEFAULT NULL COMMENT
'read - прочитано, report - отвечено, no-report - не принято, access - принято'
,
Node TEXT DEFAULT NULL COMMENT 'Примечание',
File INT (11) DEFAULT NULL COMMENT 'Ключ файла',
PRIMARY KEY (Id)
)

Кстати очень удобно писать комментарии к полям при создании таблиц, облегчает мозг :)

Поле Status специально не было сделано как Enum дабы можно было добавлять нестандартные статусы при модернизации системы.

И ещё. В CodeIgniter (на базе которого предполагается писать систему) есть удобная функция хранения данных сессии в БД, это тоже может пригодится в дальнейшем (например для отображения пользователей online), потому таблице для сессии тоже дано было быть.

Теги:

Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.

Комментарии

Комментариев пока что нет

Оставить комментарий


*