source: trunk/dev/avalon.mysql.sql @ 271

Revision 271, 9.3 KB checked in by antonbatenev.ya.ru, 3 years ago (diff)

fix #54 - косметические исправления

  • Property svn:keywords set to Date Author Revision Url Id
Line 
1###
2# $Date$
3# $Author$
4# $Revision$
5# $URL$
6###
7
8###
9#
10# схема хранилища MySQL
11#
12###
13
14SET NAMES utf8;
15
16CREATE DATABASE IF NOT EXISTS `avalon` DEFAULT CHARACTER SET utf8;
17
18USE `avalon`;
19
20CREATE TABLE `broken`
21(
22        `id_message` INT        NOT NULL COMMENT 'id топика/сообщения',
23        `is_topic`   TINYINT(1) NOT NULL COMMENT 'флаг того, что это топик, а не сообщение',
24
25        PRIMARY KEY (`id_message`)
26
27) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список поломанных топиков/сообщений';
28
29CREATE TABLE `forum`
30(
31        `id`         INT          NOT NULL COMMENT 'id',
32        `id_group`   INT          NOT NULL COMMENT 'id группы форумов',
33        `short_name` VARCHAR(64)  NOT NULL COMMENT 'короткое имя форума',
34        `name`       VARCHAR(128) NOT NULL COMMENT 'полное имя форума',
35        `rated`      INT          NOT NULL COMMENT 'оценивается ли форум',
36        `in_top`     INT          NOT NULL COMMENT 'участвует ли оценки этого форума в топе',
37        `rate_limit` INT          NOT NULL COMMENT 'лимит оценки в форуме',
38
39        PRIMARY KEY (`id`)
40
41) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список форумов';
42
43CREATE TABLE `group`
44(
45        `id`         INT          NOT NULL COMMENT 'id',
46        `name`       VARCHAR(100) NOT NULL COMMENT 'наименование группы',
47        `sort_order` INT          NOT NULL COMMENT 'порядок сортировки',
48
49        PRIMARY KEY (`id`)
50
51) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список групп форумов';
52
53CREATE TABLE `message`
54(
55        `id`               INT          NOT NULL COMMENT 'id сообщения',
56        `id_topic`         INT          NOT NULL COMMENT 'id темы',
57        `id_parent`        INT          NOT NULL COMMENT 'id родительского сообщения',
58        `id_user`          INT          NOT NULL COMMENT 'id автора',
59        `id_forum`         INT          NOT NULL COMMENT 'id форума',
60        `subject`          VARCHAR(128) NOT NULL COMMENT 'тема сообщения',
61        `message_name`     VARCHAR(160) NOT NULL COMMENT 'имя сообщения',
62        `user_nick`        VARCHAR(100) NOT NULL COMMENT 'имя автора сообщения',
63        `message`          LONGBLOB     NOT NULL COMMENT 'текст сообщения',
64        `id_article`       INT          NOT NULL COMMENT 'id статьи, если сообщение является статьей или 0',
65        `message_date`     DATETIME     NOT NULL COMMENT 'дата создания сообщения',
66        `update_date`      DATETIME     NOT NULL COMMENT 'дата обновления сообщения или 0',
67        `user_role`        VARCHAR(50)  NOT NULL COMMENT 'статус автора сообщения',
68        `user_title`       VARCHAR(100) NOT NULL COMMENT 'повязка пользователя',
69        `user_title_color` INT          NOT NULL COMMENT 'цвет повязки пользователя',
70        `last_moderated`   DATETIME     NOT NULL COMMENT 'дата последнего переноса сообщения',
71        `closed`           TINYINT(1)   NOT NULL COMMENT 'флаг закрытия темы',
72        `has_child`        TINYINT(1)   NOT NULL COMMENT 'флаг наличия дочерних сообщений',
73        `compressed`       TINYINT(1)   NOT NULL COMMENT 'флаг сжатия тела сообщения',
74
75        PRIMARY KEY (`id`),
76
77        KEY `ix_id_topic`     (`id_topic`),
78        KEY `ix_id_parent`    (`id_parent`),
79        KEY `ix_id_user`      (`id_user`),
80        KEY `ix_id_forum`     (`id_forum`),
81        KEY `ix_message_date` (`message_date`)
82
83) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='сообщения';
84
85CREATE TABLE `message2send`
86(
87        `id`        INT          NOT NULL COMMENT 'id сообщения (локальный)',
88        `id_parent` INT          NOT NULL COMMENT 'id родителя',
89        `id_forum`  INT          NOT NULL COMMENT 'id форума',
90        `subject`   VARCHAR(128) NOT NULL COMMENT 'тема',
91        `message`   LONGTEXT     NOT NULL COMMENT 'текст сообщения',
92        `date`      DATETIME     NOT NULL COMMENT 'дата и время занесения',
93        `draft`     TINYINT(1)   NOT NULL COMMENT 'флаг черновика',
94
95        PRIMARY KEY (`id`)
96
97) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='сообщения к отправке';
98
99CREATE TABLE `message_topic`
100(
101        `id_message`   INT      NOT NULL COMMENT 'id сообщения',
102        `id_forum`     INT      NOT NULL COMMENT 'id форума',
103        `message_date` DATETIME NOT NULL COMMENT 'дата создания сообщения',
104
105        PRIMARY KEY (`id_message`),
106
107        KEY `ix_id_forum` (`id_forum`),
108
109        CONSTRAINT `fk_message_topic_message` FOREIGN KEY (`id_message`) REFERENCES `message` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
110
111) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список топиков';
112
113CREATE TABLE `moderate`
114(
115        `id_message` INT      NOT NULL COMMENT 'id сообщения',
116        `id_topic`   INT      NOT NULL COMMENT 'id топика',
117        `id_user`    INT      NOT NULL COMMENT 'id пользователя',
118        `id_forum`   INT      NOT NULL COMMENT 'id форума',
119        `created`    DATETIME NOT NULL COMMENT 'дата',
120
121        PRIMARY KEY (`id_message`,`id_user`)
122
123) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='таблица бомбочек';
124
125CREATE TABLE `moderate2send`
126(
127        `id`           INT         NOT NULL COMMENT 'id (локальный)',
128        `id_message`   INT         NOT NULL COMMENT 'id сообщения',
129        `action`       VARCHAR(32) NOT NULL COMMENT 'действие {MoveMessage, DeleteMessage, DeleteThread, DeleteErrorMessage, SplitThread, CloseTopic, OpenTopic}',
130        `id_forum`     INT         NOT NULL COMMENT 'id форума для перемещения',
131        `description`  LONGTEXT    NOT NULL COMMENT 'описание',
132        `as_moderator` TINYINT(1)  NOT NULL COMMENT 'флаг "как модератор"',
133        `date`         DATETIME    NOT NULL COMMENT 'дата добавления',
134
135        PRIMARY KEY (`id`)
136
137) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='модерилки к отправке';
138
139CREATE TABLE `rating`
140(
141        `id_message`  INT      NOT NULL COMMENT 'id сообщения',
142        `id_topic`    INT      NOT NULL COMMENT 'id топика',
143        `id_user`     INT      NOT NULL COMMENT 'id пользователя',
144        `user_rating` INT      NOT NULL COMMENT 'рейтинг пользователя',
145        `rate`        INT      NOT NULL COMMENT 'оценка',
146        `rate_date`   DATETIME NOT NULL COMMENT 'дата',
147
148        PRIMARY KEY (`id_message`,`id_user`)
149
150) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='таблица рейтинга';
151
152
153CREATE TABLE `rating2send`
154(
155        `id`         INT      NOT NULL COMMENT 'id (локальный)',
156        `id_message` INT      NOT NULL COMMENT 'id сообщения',
157        `rate`       INT      NOT NULL COMMENT 'рейтинг',
158        `date`       DATETIME NOT NULL COMMENT 'дата добавления',
159
160        PRIMARY KEY (`id`)
161
162) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='рейтинг к отправке';
163
164CREATE TABLE `row_version`
165(
166        `key`   VARCHAR(100) NOT NULL COMMENT 'ключ версии',
167        `value` VARCHAR(100) NOT NULL COMMENT 'значение версии',
168
169        PRIMARY KEY (`key`)
170
171) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='версии данных';
172
173CREATE TABLE `subscribed`
174(
175        `id_forum` INT        NOT NULL COMMENT 'id форума',
176        `is_first` TINYINT(1) NOT NULL COMMENT 'была ли раньше подписка на форум true - нет, false - да',
177
178        PRIMARY KEY (`id_forum`)
179
180) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список форумов, на которые подписан пользователь';
181
182CREATE TABLE `unread`
183(
184        `id_message`     INT      NOT NULL COMMENT 'id непрочитанного сообщения',
185        `id_parent`      INT      NOT NULL COMMENT 'id родительского сообщения',
186        `id_forum`       INT      NOT NULL COMMENT 'id форума',
187        `id_topic`       INT      NOT NULL COMMENT 'id топика',
188        `id_parent_user` INT      NOT NULL COMMENT 'id пользователя, которому идет ответ',
189        `message_date`   DATETIME NOT NULL COMMENT 'дата отправки сообщения',
190
191        PRIMARY KEY (`id_message`)
192
193) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список непрочитанных сообщений';
194
195CREATE TABLE `user`
196(
197        `id`             INT          NOT NULL COMMENT 'id пользователя',
198        `name`           VARCHAR(60)  NOT NULL COMMENT 'логин пользователя',
199        `nick`           VARCHAR(100) NOT NULL COMMENT 'псевдоним пользователя',
200        `real_name`      VARCHAR(80)  NOT NULL COMMENT 'реальное имя пользователя',
201        `email`          VARCHAR(60)  NOT NULL COMMENT 'публичный email пользователя',
202        `homepage`       VARCHAR(120) NOT NULL COMMENT 'домашняя страница',
203        `specialization` VARCHAR(100) NOT NULL COMMENT 'специализация',
204        `where_from`     VARCHAR(100) NOT NULL COMMENT 'откуда',
205        `origin`         VARCHAR(258) NOT NULL COMMENT 'подпись',
206
207        PRIMARY KEY (`id`),
208
209        KEY `ix_name` (`name`)
210
211) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='список пользователей';
212
213CREATE TABLE `version`
214(
215        `key`   VARCHAR(100) NOT NULL COMMENT 'ключ версии',
216        `value` VARCHAR(100) NOT NULL COMMENT 'значение версии',
217
218        PRIMARY KEY  (`key`)
219
220) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='версии хранилища';
Note: See TracBrowser for help on using the repository browser.