-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsql.sql
More file actions
1643 lines (1406 loc) · 77.7 KB
/
Copy pathsql.sql
File metadata and controls
1643 lines (1406 loc) · 77.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
-- Создаем базу данных
CREATE DATABASE IF NOT EXISTS seor_db CHARACTER SET utf8 COLLATE utf8_general_ci;
-- Используем базу данных
USE seor_db;
-- *******************************************************
-- Таблица адресов
-- Для кеширования данных, в XML формате
CREATE TABLE IF NOT EXISTS cache
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
table_name VARCHAR(255) NOT NULL COMMENT 'Имя таблицы',
status INT(1) NOT NULL COMMENT 'Если status = 1 значит, в этой таблице произошли изменения',
CONSTRAINT pkId PRIMARY KEY (id), CONSTRAINT ukTable UNIQUE KEY (table_name)
)ENGINE = INNODB;
INSERT INTO cache(table_name,status) VALUES
('style',0),
('style_content',0);
-----------------------------------------------------------------
-------------------------------------------------------------------
--------------------------------------------------------------------
-- Админ пользователи
CREATE TABLE IF NOT EXISTS admin_user
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID Пользователя',
login VARCHAR(60) NOT NULL COMMENT 'Логин пользователя',
pass CHAR(32) NOT NULL COMMENT 'Пароль',
email VARCHAR(60) NOT NULL COMMENT 'Email адрес',
registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Время регистрации',
activation_key VARCHAR(60) NULL DEFAULT NULL COMMENT 'Ключ активации',
status INT(1) NOT NULL DEFAULT 1 COMMENT '1 = пользователь включен',
display_name VARCHAR(60) NOT NULL COMMENT 'Желаемое отоброжаемое имя',
id_type INT(10) UNSIGNED NOT NULL COMMENT 'id типа пользователя, администратон он или модератор',
PRIMARY KEY (id), CONSTRAINT ukLogin UNIQUE KEY (login),
INDEX ixIdType(id_type),
CONSTRAINT fkIdType FOREIGN KEY (id_type)
REFERENCES admin_type (id)
)ENGINE = INNODB;
INSERT INTO admin_user(login,pass,email,display_name,id_type) VALUES
("admin","852456a","mail@webdzen.com","Разработчик",1);
-- Админ типы как модератор, администратор
CREATE TABLE IF NOT EXISTS admin_type
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID Пользователя',
type VARCHAR(60) NOT NULL COMMENT 'Тип пользователя',
title VARCHAR(60) NOT NULL COMMENT 'Название для чтения',
description TEXT NULL DEFAULT NULL COMMENT 'Описание',
PRIMARY KEY (id), CONSTRAINT ukType UNIQUE KEY (type), CONSTRAINT ukTitle UNIQUE KEY (title)
)ENGINE = INNODB;
INSERT INTO admin_type(type,title) VALUES
('development','Разработчик');
-- Как индексировать (если нужно) НУЖНО ОПТИМИЗИРОВАТЬ
CREATE TABLE IF NOT EXISTS robots
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
robots SET('index','noindex','follow','nofollow') NULL DEFAULT NULL COMMENT 'Как индексировать',
title VARCHAR(60) NOT NULL COMMENT 'Название для чтения',
PRIMARY KEY (id), CONSTRAINT ukTableTypeRobots UNIQUE KEY (robots)
)ENGINE = INNODB;
INSERT INTO robots(robots) VALUES
('index,follow'),
('index,nofollow'),
('noindex,follow'),
('noindex,nofollow');
-- Настройки
CREATE TABLE IF NOT EXISTS settings
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID настройки',
name VARCHAR(255) NOT NULL COMMENT 'Техническое имя',
value TEXT NOT NULL COMMENT 'Значение',
title VARCHAR(255) NULL DEFAULT NULL COMMENT 'Имя настройки(не обязательно)',
description TEXT NULL DEFAULT NULL COMMENT 'Описание',
status INT(1) NOT NULL DEFAULT 1 COMMENT 'Отключить или нет',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция',
PRIMARY KEY (id), CONSTRAINT ukName UNIQUE KEY (name)
)ENGINE = INNODB;
INSERT INTO settings(name,value,title,description,position) VALUES
("site_name","seor","Имя сайта",NULL,1),
("original","media/original","Путь к оригинальным файлам","Изменения этого параметра может вызвать отключение всех картинок",0),
("resize","media/resize","Путь к измененным по размеру файлам",NULL,0),
("admin_page","1","Сколько страниц выводить в админке",NULL,0);
-- Темы (type).
CREATE TABLE IF NOT EXISTS template
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID темы',
name VARCHAR(255) NOT NULL COMMENT 'Техническое имя',
title VARCHAR(255) NOT NULL COMMENT 'Зоголовок темы',
description TEXT NULL DEFAULT NULL COMMENT 'Описание',
status INT(1) NOT NULL DEFAULT 0 COMMENT 'Используется по умочанию?',
PRIMARY KEY (id), CONSTRAINT ukName UNIQUE KEY (name)
)ENGINE = INNODB;
INSERT INTO template(name,title,status) VALUES
('default','По умолчанию',1);
INSERT INTO template(name,title,status) VALUES
('default','По умолчанию',1);
-- Типы для mcm
CREATE TABLE IF NOT EXISTS mcm_type (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID типа',
type VARCHAR(20) NOT NULL COMMENT 'Тип класса как module, controller, model',
PRIMARY KEY (id), CONSTRAINT ukName UNIQUE KEY (type)
)ENGINE = InnoDB;
INSERT INTO mcm_type(type) VALUES
('module'),
('controller'),
('model');
SELECT id, type
FROM mcm_type;
-- Модуль контроллер модель MCM. Сортируется внутри PHP
CREATE TABLE IF NOT EXISTS mcm (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID класса',
class_name VARCHAR(20) NOT NULL COMMENT 'Имя класса',
description VARCHAR(60) NULL DEFAULT NULL COMMENT 'Описание класса',
id_type INT(10) UNSIGNED NOT NULL COMMENT 'ID класса',
id_class INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'ID класса',
admin INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '1 - если административный',
PRIMARY KEY (id), CONSTRAINT ukName UNIQUE KEY (class_name, id_type, id_class, admin),
INDEX ixIdType(id_type),
CONSTRAINT fkType FOREIGN KEY (id_type)
REFERENCES mcm_type (id)
)ENGINE = InnoDB;
-- Права на методы
CREATE TABLE IF NOT EXISTS permission (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_mcm INT(10) UNSIGNED NOT NULL COMMENT 'ID класса',
method VARCHAR(40) NOT NULL COMMENT 'Имя метода (правила)',
description VARCHAR(60) NULL DEFAULT NULL COMMENT 'Описание',
PRIMARY KEY (id), CONSTRAINT ukName UNIQUE KEY (id_mcm, method),
INDEX ixIdMcm (id_mcm),
CONSTRAINT fkMcm FOREIGN KEY (id_mcm)
REFERENCES mcm (id) ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB;
-- Уточнения для прав.
CREATE TABLE IF NOT EXISTS rule (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_permission INT(10) UNSIGNED NOT NULL COMMENT 'ID прав',
rule VARCHAR(40) NOT NULL COMMENT 'Имя метода (правила)',
description VARCHAR(60) NULL DEFAULT NULL COMMENT 'Описание',
sql_stat INT(1) NOT NULL DEFAULT 0 COMMENT 'Генерировалось с помощью sql запроса или нет',
CONSTRAINT pkID PRIMARY KEY (id),
CONSTRAINT ukPermRul UNIQUE KEY (id_permission, rule, sql_stat),
INDEX ixPermission (id_permission),
CONSTRAINT fkPermission FOREIGN KEY (id_permission)
REFERENCES permission (id) ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB;
-- Связь admin_type и permission.
CREATE TABLE IF NOT EXISTS admin_permission (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_admin_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа пользователя',
id_permission INT(10) UNSIGNED NOT NULL COMMENT 'ID прав',
status INT(1) UNSIGNED NOT NULL COMMENT '1 - разрешен 0 - запрещен',
CONSTRAINT pkID PRIMARY KEY (id), CONSTRAINT ukAdminPermission UNIQUE KEY (id_admin_type, id_permission),
INDEX ixPermission (id_permission),
CONSTRAINT fkPermissionAdmin FOREIGN KEY (id_permission)
REFERENCES permission (id) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX ixType (id_admin_type),
CONSTRAINT fkTypeAdmin FOREIGN KEY (id_admin_type)
REFERENCES admin_type (id) ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB;
-- Связь admin_type и rule.
CREATE TABLE IF NOT EXISTS admin_rule (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_admin_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа пользователя',
id_rule INT(10) UNSIGNED NOT NULL COMMENT 'ID прав',
status INT(1) UNSIGNED NOT NULL COMMENT '1 - разрешен 0 - запрещен',
CONSTRAINT pkID PRIMARY KEY (id), CONSTRAINT ukAdminRule UNIQUE KEY (id_admin_type, id_rule)
INDEX ixPermission (id_rule),
CONSTRAINT fkRuleAdmin FOREIGN KEY (id_rule)
REFERENCES rule (id) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX ixType (id_admin_type),
CONSTRAINT fkIdTypeAdmin FOREIGN KEY (id_admin_type)
REFERENCES admin_type (id) ON DELETE CASCADE ON UPDATE CASCADE
)ENGINE = InnoDB;
-- Типы данных (type).
CREATE TABLE IF NOT EXISTS type
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID типа',
type VARCHAR(255) NOT NULL COMMENT 'Типы данных',
description TEXT NULL COMMENT 'Описание типа',
PRIMARY KEY (id), CONSTRAINT ukType UNIQUE KEY (type)
)ENGINE = INNODB, COMMENT = "Типы данных, как категория или страница";
INSERT INTO type(type) VALUES
('page'),
('category'),
('vacancy'),
('specialization'),
('action');
-- Типы контента (связь какой файл к какому типу контента относится)
CREATE TABLE IF NOT EXISTS content_type
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID типа контента',
id_template INT(10) UNSIGNED NOT NULL COMMENT 'ID темы',
id_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа',
name VARCHAR(60) NOT NULL COMMENT 'Имя файла',
exp VARCHAR(10) NULL DEFAULT NULL COMMENT 'Расширение файла, если не указано будет использоватся php',
title VARCHAR(60) NULL DEFAULT NULL COMMENT 'Имя для пояснения',
description TEXT NULL DEFAULT NULL COMMENT 'Описание если нужно',
path VARCHAR(100) NULL DEFAULT NULL COMMENT 'Если путь отличается от типа (считает от корня темы)',
class VARCHAR(100) NULL DEFAULT NULL COMMENT 'Имя модели в модуле, если NULL будет по умолчанию',
PRIMARY KEY (id), CONSTRAINT ukTemplateTypeNameExp UNIQUE KEY (id_template,id_type,name,exp),
INDEX ixTemplate (id_template),
CONSTRAINT fkContentTypeTemplate FOREIGN KEY (id_template)
REFERENCES template (id),
INDEX ixType (id_type),
CONSTRAINT fkContentTypeType FOREIGN KEY (id_type)
REFERENCES type (id)
)ENGINE = INNODB;
-- Таблица адресов
CREATE TABLE IF NOT EXISTS url
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID страницы',
url VARCHAR(255) NULL COMMENT 'Сам URL',
id_type INT(10) UNSIGNED NULL COMMENT 'id типа(категория, страница итп)',
id_table INT(10) UNSIGNED NULL COMMENT 'ID в связанной таблице.',
id_canonical INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'ID на эту же таблицу, если есть кононичкская ссылка.',
post INT(10) UNSIGNED NULL COMMENT DEFAULT NULL 'Является ли запрос post.',
regex INT(1) UNSIGNED NULL DEFAULT NULL COMMENT 'Является ли строка регулярным выражением',
id_content_type INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'Тип контента по умолчанию.',
PRIMARY KEY (id),
CONSTRAINT ukNameUrl UNIQUE KEY (url),
CONSTRAINT ukTypeTable UNIQUE KEY (id_type,id_table),
INDEX ixType(id_type),
INDEX ixRegex(regex),
INDEX ixPost(post),
INDEX ixRegex(regex),
INDEX ixContentType(id_content_type),
CONSTRAINT fkUrlContentType FOREIGN KEY (id_content_type)
REFERENCES content_type (id),
CONSTRAINT fkUrlType FOREIGN KEY (id_type)
REFERENCES type (id),
CONSTRAINT fkUrlCanonical FOREIGN KEY (id_canonical)
REFERENCES url (id)
CONSTRAINT fkUrlPost FOREIGN KEY (post)
REFERENCES url (id) ON DELETE SET NULL;
)ENGINE = INNODB;
-- Таблица удаленных URL
CREATE TABLE IF NOT EXISTS url_drop
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID страницы',
url_reset VARCHAR(255) NOT NULL COMMENT 'Удаленный адрес',
id_url INT(10) UNSIGNED NULL COMMENT 'id удаленного URL',
time_drop TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Время записи',
PRIMARY KEY (id), CONSTRAINT ukResetUrl UNIQUE KEY (url_reset),
INDEX ixIdUrl(id_url),
CONSTRAINT fkUrlDropId FOREIGN KEY (id_url)
REFERENCES url (id) ON DELETE CASCADE
)ENGINE = INNODB;
INSERT INTO url_drop (url_reset,id_url) VALUES
("testin",1) ON DUPLICATE KEY UPDATE id_url = 2;
-- Доступные у темы css и JS
CREATE TABLE IF NOT EXISTS style_type
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID типа стиля',
name VARCHAR(20) NOT NULL COMMENT 'Имя типа стиля',
folder VARCHAR(100) NOT NULL COMMENT 'Папка в теме по умолчанию',
PRIMARY KEY (id), CONSTRAINT ukName UNIQUE KEY (name)
)ENGINE = INNODB;
INSERt INTO style_type(name,folder) VALUES
('css','css'),
('js','js');
-- Доступные у темы css и JS
CREATE TABLE IF NOT EXISTS style
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID стиля',
id_template INT(10) UNSIGNED NOT NULL COMMENT 'ID темы',
id_type INT(10) UNSIGNED NULL COMMENT 'ID типа? если null относится к типу темы',
name VARCHAR(60) NOT NULL COMMENT 'Имя файла',
title VARCHAR(60) NULL DEFAULT NULL COMMENT 'Заголовок',
description TEXT NULL DEFAULT NULL COMMENT 'Описание если нужно',
path VARCHAR(100) NULL DEFAULT NULL COMMENT 'Если путь отличается от типа (считает от корня темы)',
style_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа стиля',
`default` INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'По умочанию?',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция',
PRIMARY KEY (id), CONSTRAINT ukTemplateTypeNameStyle UNIQUE KEY (id_template,id_type,name,style_type),
INDEX ixIdTemplate(id_template),
CONSTRAINT fkStyleTemplate FOREIGN KEY (id_template)
REFERENCES template (id),
INDEX ixIdStyleType(style_type),
CONSTRAINT fkStyleStyleType FOREIGN KEY (style_type)
REFERENCES style_type (id),
INDEX ixIdType(id_type),
CONSTRAINT fkStyleType FOREIGN KEY (id_type)
REFERENCES type (id)
)ENGINE = INNODB;
ALTER TABLE style ADD position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция';
-- Какие стили, к каким страницам
CREATE TABLE IF NOT EXISTS style_content
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_table INT(10) UNSIGNED NOT NULL COMMENT 'ID связи контент - стиль.',
id_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа',
id_style INT(10) UNSIGNED NOT NULL COMMENT 'ID стиля',
status INT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Отключить определенный css, 0 = отключено',
extends INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Если это категория, то все ее страницы могут наследовать данный стиль',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'ID стиля',
PRIMARY KEY (id), CONSTRAINT ukTableStyleTypeExtends UNIQUE KEY (id_table,id_style,id_type,extends),
INDEX ixIdStyle(id_style),
CONSTRAINT fkStyleContentStyle FOREIGN KEY (id_style)
REFERENCES style (id),
INDEX ixIdType(id_type),
CONSTRAINT fkStyleContentType FOREIGN KEY (id_type)
REFERENCES type (id)
)ENGINE = INNODB;
-- Какие стили, к каким типам данных
CREATE TABLE IF NOT EXISTS style_content
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_content_type INT(10) UNSIGNED NOT NULL COMMENT 'ID связи content_type.',
id_style INT(10) UNSIGNED NOT NULL COMMENT 'ID стиля',
status INT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Отключить определенный css, 0 = отключено',
extends INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Если это категория, то все ее страницы могут наследовать данный стиль',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'ID стиля',
PRIMARY KEY (id), CONSTRAINT ukTableStyleTypeExtends UNIQUE KEY (id_content_type,id_style),
INDEX ixIdStyle(id_style),
CONSTRAINT fkStyleContentStyle FOREIGN KEY (id_style)
REFERENCES style (id),
INDEX ixIdContentType(id_content_type),
CONSTRAINT fkStyleContentCType FOREIGN KEY (id_content_type)
REFERENCES content_type (id)
)ENGINE = INNODB;
-- Связь типа данных со страницей, может быть только одна на каждую тему
CREATE TABLE IF NOT EXISTS type_content
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID связи контент - тип',
id_table INT(10) UNSIGNED NOT NULL COMMENT 'ID в связанной таблице',
id_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа',
content_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа в таблице content_type',
extends_content INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'Нужен только для категорий, ID типа который должны наследовать посты',
PRIMARY KEY (id), CONSTRAINT ukTableContentTypeExtends UNIQUE KEY (id_table,content_type,id_type,extends_content),
INDEX ixContentType(content_type),
CONSTRAINT fkTypeContentContentType FOREIGN KEY (content_type)
REFERENCES content_type (id),
INDEX ixIdType(id_type),
CONSTRAINT fkTypeContentType FOREIGN KEY (id_type)
REFERENCES type (id)
)ENGINE = INNODB;
-- Имена полей.
CREATE TABLE IF NOT EXISTS fields_name
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID связи контент - тип',
name VARCHAR(60) NULL DEFAULT NULL COMMENT 'Имя поля',
title VARCHAR(255) NULL DEFAULT NULL COMMENT 'Заголовое поля для описания',
PRIMARY KEY (id), CONSTRAINT ukName UNIQUE KEY (name)
)ENGINE = INNODB;
-- Любые дополнительные поля.
CREATE TABLE IF NOT EXISTS fields
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID связи контент - тип',
id_table INT(10) UNSIGNED NOT NULL COMMENT 'ID в связанной таблице',
id_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа',
id_name INT(10) UNSIGNED NOT NULL COMMENT 'Имя поля',
var VARCHAR(255) NULL DEFAULT NULL COMMENT 'Значения поля, либо var или text',
text TEXT NULL DEFAULT NULL COMMENT 'Текстовое поле, либо var или text',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция',
PRIMARY KEY (id),
INDEX ixIdTableType(id_table, id_type),
INDEX ixIdType(id_type),
CONSTRAINT fkFieldsType FOREIGN KEY (id_type)
REFERENCES type (id),
INDEX ixIdName(id_name),
CONSTRAINT fkFieldsName FOREIGN KEY (id_name)
REFERENCES fields_name (id)
)ENGINE = INNODB;
-- Имена картинок
CREATE TABLE IF NOT EXISTS image_name
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID связи контент - тип',
name VARCHAR(60) NULL DEFAULT NULL COMMENT 'Имя поля',
title VARCHAR(255) NULL DEFAULT NULL COMMENT 'Заголовое поля для описания',
PRIMARY KEY (id), CONSTRAINT ukName UNIQUE KEY (name)
)ENGINE = INNODB;
-- Картинки для содержимого
CREATE TABLE IF NOT EXISTS image
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_name INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'ID в image_name для поиска картинки',
id_table INT(10) UNSIGNED NOT NULL COMMENT 'ID в таблице',
id_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа',
file VARCHAR(255) NOT NULL COMMENT 'Путь к картинке',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция',
PRIMARY KEY (id), CONSTRAINT ukTableTypeFile UNIQUE KEY (id_table,id_type,file),
INDEX ixIdType(id_type),
CONSTRAINT fkImageType FOREIGN KEY (id_type)
REFERENCES type (id),
INDEX ixIdName(id_name),
CONSTRAINT fkImageName FOREIGN KEY (id_name)
REFERENCES image_name (id)
)ENGINE = INNODB;
-- Сохраняем пути изменения размера изображения
CREATE TABLE IF NOT EXISTS image_resize
(
original VARCHAR(255) NOT NULL COMMENT 'Оригинальный файл',
resize VARCHAR(255) NOT NULL COMMENT 'Путь к измененному файлу',
CONSTRAINT pkOriginalResize PRIMARY KEY (original,resize)
)ENGINE = INNODB;
-- [ВАРИАНТ 2] Сохраняем пути изменения размера изображения
CREATE TABLE IF NOT EXISTS image_resize
(
original VARCHAR(255) NOT NULL COMMENT 'Оригинальный файл',
resize VARCHAR(255) NOT NULL COMMENT 'Путь к измененному файлу',
id_image INT(10) UNSIGNED NULL COMMENT 'ID в таблице',
CONSTRAINT pkOriginalResize PRIMARY KEY (original,resize),
INDEX ixIdIamge(id_image),
CONSTRAINT fkImageResizeID FOREIGN KEY (id_image)
REFERENCES image (id)
)ENGINE = INNODB;
-- Дополнительные стили которые хранятся в базе
CREATE TABLE IF NOT EXISTS js_css
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_table INT(10) UNSIGNED NOT NULL COMMENT 'ID в таблице',
id_type INT(10) UNSIGNED NOT NULL COMMENT 'ID типа',
css TEXT NULL DEFAULT NULL COMMENT 'Свой CSS',
js TEXT NULL DEFAULT NULL COMMENT 'Свой JS',
PRIMARY KEY (id), CONSTRAINT ukTableTypeFile UNIQUE KEY (id_table,id_type),
INDEX ixIdType(id_type),
CONSTRAINT fkJsCssType FOREIGN KEY (id_type)
REFERENCES type (id)
)ENGINE = INNODB;
-- Статические страницы
CREATE TABLE IF NOT EXISTS page
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID страницы',
id_admin_user INT(10) UNSIGNED NOT NULL COMMENT 'ID автора',
url INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'id URL есть он есть',
url_name VARCHAR(60) NULL DEFAULT NULL COMMENT 'Личный URL нужен для корректного создания полного URL',
date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Метка создания',
title VARCHAR(255) NOT NULL COMMENT 'Заговолок страницы',
meta_title VARCHAR(255) NOT NULL COMMENT 'Мета заголовок',
meta_keywords TEXT NULL DEFAULT NULL COMMENT 'Ключевые слова',
description TEXT NULL DEFAULT NULL COMMENT 'Описание',
robots INT(10) UNSIGNED NULL COMMENT 'ID robots',
status INT(1) NOT NULL DEFAULT 1 COMMENT 'Отключить или нет',
modified DATE NULL DEFAULT NULL COMMENT 'Когда был изменен',
content TEXT NULL COMMENT 'Содержимое',
content_type INT(10) UNSIGNED NOT NULL COMMENT 'ID содержимого',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция',
PRIMARY KEY (id), CONSTRAINT ukMetaTitle UNIQUE KEY (meta_title), CONSTRAINT ukUrl UNIQUE KEY (url),
INDEX ixAdminUser (id_admin_user),
CONSTRAINT fkPageAdminUser FOREIGN KEY (id_admin_user)
REFERENCES admin_user (id),
INDEX ixRobots (robots),
CONSTRAINT fkPageRobots FOREIGN KEY (robots)
REFERENCES robots (id),
INDEX ixContentType (content_type) ON UPDATE CASCADE,
CONSTRAINT fkPageContentType FOREIGN KEY (content_type)
REFERENCES content_type (id),
INDEX ixURL (url),
CONSTRAINT fkPageURL FOREIGN KEY (url)
REFERENCES url (id),
)ENGINE = INNODB;
-- Категории
CREATE TABLE IF NOT EXISTS categories
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID категории',
parent_id INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'id родителя',
id_admin_user INT(10) UNSIGNED NOT NULL COMMENT 'id автора',
url INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'id URL есть он есть',
url_name VARCHAR(60) NULL DEFAULT NULL COMMENT 'Имя URL для связи',
date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Метка создания',
title VARCHAR(255) NOT NULL COMMENT 'Имя категории',
meta_title VARCHAR(255) NOT NULL COMMENT 'Мета заголовок',
meta_keywords TEXT NULL DEFAULT NULL COMMENT 'Ключевые слова',
description TEXT NULL DEFAULT NULL COMMENT 'Описание',
robots INT(10) UNSIGNED NULL COMMENT 'ID robots',
status INT(1) NOT NULL DEFAULT 1 COMMENT 'Отключить или нет',
static INT(1) NOT NULL DEFAULT 0 COMMENT '1 = статическая категория, у нее нет URL может использоваться как папка, для подключения стилей или меню',
modified DATE NULL DEFAULT NULL COMMENT 'Когда был изменен',
content TEXT NULL COMMENT 'Содержимое',
annotation TEXT NULL DEFAULT NULL COMMENT 'Краткое содержание',
content_type INT(10) UNSIGNED NOT NULL COMMENT 'id содержимого',
extends_content INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'Какой контент наследуется для содержимого (таблица content_type)',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция',
PRIMARY KEY (id), CONSTRAINT ukMetaTitle UNIQUE KEY (meta_title), CONSTRAINT ukTitle UNIQUE KEY (title),
INDEX ixAdminUser (id_admin_user),
CONSTRAINT fkCategodiesAdminUser FOREIGN KEY (id_admin_user)
REFERENCES admin_user (id),
INDEX ixRobots (robots),
CONSTRAINT fkCategodiesRobots FOREIGN KEY (robots)
REFERENCES robots (id) ON UPDATE CASCADE,
INDEX ixContentType (content_type),
CONSTRAINT fkCategodiesContentType FOREIGN KEY (content_type)
REFERENCES content_type (id),
INDEX ixExtContent (extends_content),
CONSTRAINT fkCategodiesExtContentType FOREIGN KEY (extends_content)
REFERENCES content_type (id),
INDEX ixURL (url),
CONSTRAINT fkCategodiesURL FOREIGN KEY (url)
REFERENCES url (id),
INDEX ixParent(parent_id),
CONSTRAINT fkCategodiesParent FOREIGN KEY (parent_id)
REFERENCES categories (id) ON DELETE CASCADE;
)ENGINE = INNODB;
-- Связь, страница - категория.
CREATE TABLE IF NOT EXISTS category_page
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_category INT(10) UNSIGNED NOT NULL COMMENT 'id категории ',
id_page INT(10) UNSIGNED NOT NULL COMMENT 'id поста',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция',
PRIMARY KEY (id), CONSTRAINT ukCategoryPost UNIQUE KEY (id_category,id_page),
INDEX ixIdCategory(id_category),
CONSTRAINT fkCPCategory FOREIGN KEY (id_category)
REFERENCES categories (id) ON DELETE CASCADE,
INDEX ixIdPage(id_page),
CONSTRAINT fkCPPage FOREIGN KEY (id_page)
REFERENCES page (id) ON DELETE CASCADE
)ENGINE = INNODB;
-- Таблица action.
CREATE TABLE IF NOT EXISTS action
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_mcm_type INT(10) UNSIGNED NOT NULL COMMENT 'id в mcm_type ',
class VARCHAR(60) NOT NULL COMMENT 'Имя класса',
method VARCHAR(60) NULL DEFAULT NULL COMMENT 'Имя метода',
parent VARCHAR(60) NULL DEFAULT NULL COMMENT 'Имя родительского модуля, нужно для моделей и контроллеров',
admin INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция',
description VARCHAR(255) NULL DEFAULT NULL COMMENT 'Описание действия',
PRIMARY KEY (id), CONSTRAINT ukTypeClassMethodAdmin UNIQUE KEY (id_mcm_type,class,method,parent,admin),
INDEX ixIdType(id_mcm_type),
CONSTRAINT fkActionMcmType FOREIGN KEY (id_mcm_type)
REFERENCES mcm_type (id)
)ENGINE = INNODB;
-- Таблица action_list в ней связывается URL и action.
CREATE TABLE IF NOT EXISTS action_list
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_url INT(10) UNSIGNED NOT NULL COMMENT 'id в url',
id_action INT(10) UNSIGNED NOT NULL COMMENT 'id в action',
PRIMARY KEY (id), CONSTRAINT ukUrlAction UNIQUE KEY (id_url,id_action),
INDEX ixIdUrl(id_url),
INDEX ixIdAction(id_action),
CONSTRAINT fkActionListUrl FOREIGN KEY (id_url)
REFERENCES url (id) ON DELETE CASCADE,
CONSTRAINT fkActionListAction FOREIGN KEY (id_action)
REFERENCES action (id) ON DELETE CASCADE
)ENGINE = INNODB;
-- Таблица action_params в ней начальные параметры для action связанных в action_list.
CREATE TABLE IF NOT EXISTS action_params
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_action_list INT(10) UNSIGNED NOT NULL COMMENT 'id в action_list',
param TEXT NULL DEFAULT NULL COMMENT 'параметр для функции',
PRIMARY KEY (id),
INDEX ixIdActionList(id_action_list),
CONSTRAINT fkActionParamsActionList FOREIGN KEY (id_action_list)
REFERENCES action_list (id) ON DELETE CASCADE
)ENGINE = INNODB;
-- Типы пользователей
CREATE TABLE IF NOT EXISTS user_type
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID типа',
type VARCHAR(30) NOT NULL COMMENT 'Типы пользователя',
description TEXT NULL COMMENT 'Описание типа',
legal INT(1) NOT NULL COMMENT '1 = юридическое лицо',
employer INT(1) NOT NULL DEFAULT 1 COMMENT '1 = работодатель',
PRIMARY KEY (id), CONSTRAINT ukType UNIQUE KEY (type)
)ENGINE = INNODB, COMMENT = "Типы данных пользователя";
-- Пользователи
CREATE TABLE IF NOT EXISTS user
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID Пользователя',
email VARCHAR(60) NOT NULL COMMENT 'Email адрес это и логин',
second_email VARCHAR(60) NULL DEFAULT NULL COMMENT 'Дополительная почта',
pass CHAR(32) NOT NULL COMMENT 'Пароль',
id_user_type INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'id типа пользователя',
registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Время регистрации',
activation VARCHAR(60) NULL DEFAULT NULL COMMENT 'Ключ активации',
status INT(1) NOT NULL DEFAULT 1 COMMENT '1 = пользователь включен',
logo VARCHAR(60) NULL DEFAULT NULL COMMENT 'адрес на logo',
count_view INT(10) UNSIGNED NOT NULL DEFAULT 0 NULL COMMENT 'Количество просмотров',
PRIMARY KEY (id), CONSTRAINT ukemail UNIQUE KEY (email),
INDEX ixIdUserType(id_user_type),
CONSTRAINT fkIdUserUserType FOREIGN KEY (id_user_type)
REFERENCES user_type (id)
)ENGINE = INNODB;
-- Любые дополнительные поля пользователя.
CREATE TABLE IF NOT EXISTS fields_user
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID связи контент - тип',
id_user INT(10) UNSIGNED NOT NULL COMMENT 'ID в связанной таблице',
id_name INT(10) UNSIGNED NOT NULL COMMENT 'Имя поля в таблице fields_name',
var VARCHAR(255) NULL DEFAULT NULL COMMENT 'Значения поля, либо var или text',
text TEXT NULL DEFAULT NULL COMMENT 'Значения поля, либо var или text',
position INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Позиция',
PRIMARY KEY (id), CONSTRAINT ukUserNameVar UNIQUE KEY (id_user, id_name, var),
INDEX ixIdUser(id_user),
CONSTRAINT fkFieldsUserUser FOREIGN KEY (id_user)
REFERENCES user (id) ON DELETE CASCADE,
INDEX ixIdName(id_name),
CONSTRAINT fkFieldsUserName FOREIGN KEY (id_name)
REFERENCES fields_name (id)
)ENGINE = INNODB;
-- Сессия пользователей
CREATE TABLE IF NOT EXISTS session
(
id_user INT(10) UNSIGNED NOT NULL COMMENT 'ID в связанной таблице',
name VARCHAR(30) NOT NULL COMMENT 'Имя значения',
value TEXT NULL DEFAULT NULL COMMENT 'Значение',
PRIMARY KEY (id_user, name),
INDEX ixIdUser(id_user),
CONSTRAINT fkSeesionIDUser FOREIGN KEY (id_user)
REFERENCES user (id) ON DELETE CASCADE
)ENGINE = INNODB;
-- Токены аутентификации.
CREATE TABLE IF NOT EXISTS tokens
(
id_user INT(10) UNSIGNED NOT NULL COMMENT 'ID в связанной таблице',
token CHAR(32) NOT NULL COMMENT 'Токен',
lifetime TIMESTAMP NOT NULL COMMENT 'Время жизни',
PRIMARY KEY (id_user),
INDEX ixIdUser(id_user),
CONSTRAINT fkTokenUser FOREIGN KEY (id_user)
REFERENCES user (id) ON DELETE CASCADE
)ENGINE = INNODB;
-- Пользовательские страницы
CREATE TABLE IF NOT EXISTS user_page
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID страницы',
url INT(10) UNSIGNED NOT NULL COMMENT 'id URL есть он есть',
title VARCHAR(255) NULL DEFAULT NULL COMMENT 'Заговолок страницы',
status INT(1) NOT NULL DEFAULT 1 COMMENT 'Отключить или нет',
content TEXT NULL DEFAULT NULL COMMENT 'Содержимое',
content_type INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'ID типа контента',
user_type INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'ID типа пользователя',
PRIMARY KEY (id), CONSTRAINT ukUrl UNIQUE KEY (url, user_type),
INDEX ixContentType (content_type),
INDEX ixUserType (user_type),
CONSTRAINT fkUserPageContentType FOREIGN KEY (content_type)
REFERENCES content_type (id),
CONSTRAINT fkUserPageUserType FOREIGN KEY (user_type)
REFERENCES user_type (id),
INDEX ixIdURL(url),
CONSTRAINT fkUserPageURL FOREIGN KEY (url)
REFERENCES url (id)
)ENGINE = INNODB;
/*
ФИНАНСОВАНЯ СИСТЕМА
*/
-- Финансы аккаунта
CREATE TABLE IF NOT EXISTS accounts
(
id_user INT(10) UNSIGNED NOT NULL COMMENT 'ID в связанной таблице',
seor DECIMAL(10,3) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Seor монет на аккаунте',
days INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Сколько бесплатных дней',
clicks INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Бесплатных кликов по объявлениям',
adc INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Бесплатных объявлений',
took_days TIMESTAMP NULL DEFAULT NULL COMMENT 'Когда в последний раз снимали дни, NULL значит дней нету и нужно снять как появятся',
message INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Количество сообщений, добавляется автоматически через тригер',
notification INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Количество уведомлений, добавляется автоматически через тригер',
expiration TIMESTAMP NULL DEFAULT NULL COMMENT 'Дата истечения оплаты аккаунта',
complete INT(1) NOT NULL DEFAULT 0 COMMENT 'Аккаунть польностью заполнен и готов к использованию.',
birthday DATE NULL DEFAULT NULL COMMENT "День рождения",
name VARCHAR(80) NULL DEFAULT NULL COMMENT 'Имя компании или человека',
id_country INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'ID страны',
PRIMARY KEY (id_user),
INDEX ixIdUser(id_user),
CONSTRAINT fkAccountsUser FOREIGN KEY (id_user)
REFERENCES user (id) ON DELETE CASCADE
INDEX ixIdCountry(id_country),
CONSTRAINT fkAccountsCountry FOREIGN KEY (id_country)
REFERENCES country_code (id)
)ENGINE = INNODB;
-- Пополнение аккаунта
-- Система оплаты pay_type
CREATE TABLE IF NOT EXISTS pay_type
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID типа',
type VARCHAR(30) NOT NULL COMMENT 'Типы оплаты',
title VARCHAR(60) NULL COMMENT 'Описание типа',
PRIMARY KEY (id), CONSTRAINT ukType UNIQUE KEY (type)
)ENGINE = INNODB, COMMENT = "Типы оплаты";
-- Имена валют
CREATE TABLE IF NOT EXISTS currency_name
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID типа',
name VARCHAR(10) NOT NULL COMMENT 'Имя валюты',
title VARCHAR(60) NULL DEFAULT NULL COMMENT 'Описание',
PRIMARY KEY (id), CONSTRAINT ukName UNIQUE KEY (name)
)ENGINE = INNODB;
-- Валюты
CREATE TABLE IF NOT EXISTS currency
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID типа',
id_currency_name INT(10) UNSIGNED NOT NULL COMMENT 'ID в currency_name',
rate DECIMAL(10,3) NOT NULL DEFAULT 0 COMMENT 'Цена',
date TIMESTAMP NOT NULL DEFAULT NOW() COMMENT 'Время изменрения',
PRIMARY KEY (id),
INDEX ixIdCurrency(id_currency_name),
CONSTRAINT fkIdCurrencyCurrencyName FOREIGN KEY (id_currency_name)
REFERENCES currency_name (id)
)ENGINE = INNODB, COMMENT = "Валюты, цена в гривнах";
-- Соотношение валюты по отношению к SEOR
CREATE TABLE IF NOT EXISTS currency_rate
(
id_currency INT(10) UNSIGNED NOT NULL COMMENT 'ID в currency',
for_currency INT(10) UNSIGNED NOT NULL COMMENT 'ID в currency с которым идет сравнение',
rate DECIMAL(10,3) NOT NULL DEFAULT 0 COMMENT 'Соотношения',
PRIMARY KEY (id_currency),
INDEX ixIdCurrency(id_currency),
INDEX ixForCurrency(for_currency),
CONSTRAINT fkIdCurrencyRateCurrency FOREIGN KEY (id_currency)
REFERENCES currency (id) ON DELETE CASCADE,
CONSTRAINT fkIdCurrencyRateForCurrency FOREIGN KEY (for_currency)
REFERENCES currency (id)
)ENGINE = INNODB, COMMENT = "Валюты, цена в гривнах";
-- Логи всех оплат и начислений
/*
Осноыные поля
amount - сумма перевода
cmd – тип перевода;
business – E-mail от аккаунта Paypal продавца;
currency_code
return
cancel_return
undefined_quantity - количество пробуренных товаров
item_name
notify_url - возврат результата
*/
-- Логи входа, какой агент и ip адрес
CREATE TABLE IF NOT EXISTS logs_login
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_user INT(10) UNSIGNED NOT NULL COMMENT 'id пользователя',
user_agent VARCHAR(120) NULL DEFAULT NULL COMMENT 'USER AGENT',
ip VARCHAR(40) NULL DEFAULT NULL COMMENT 'IP адрес',
count INT(10) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Количество входов',
PRIMARY KEY (id), CONSTRAINT ukIUI UNIQUE KEY (id_user, user_agent, ip),
INDEX ixUser(id_user),
CONSTRAINT fkLogsLoginUser FOREIGN KEY (id_user)
REFERENCES user (id) ON DELETE CASCADE
)ENGINE = INNODB, COMMENT = "Логи входа, какой агент и ip адрес";
-- Логи активации
CREATE TABLE IF NOT EXISTS logs_activation
(
id_user INT(10) UNSIGNED NOT NULL COMMENT 'id пользователя',
activation VARCHAR(40) NULL DEFAULT NULL COMMENT 'Ключ активации',
time TIMESTAMP NOT NULL DEFAULT NOW() COMMENT 'Время активации',
PRIMARY KEY (id_user),
CONSTRAINT fkLogsActivationUser FOREIGN KEY (id_user)
REFERENCES user (id) ON DELETE CASCADE
)ENGINE = INNODB, COMMENT = "Каким ключом был активирован";
ALTER TABLE logs_activation ADD time TIMESTAMP NOT NULL DEFAULT NOW() COMMENT 'Время активации';
-- Логи времени входа
CREATE TABLE IF NOT EXISTS logs_time
(
id_logs_login INT(10) UNSIGNED NOT NULL COMMENT 'id пользователя',
time TIMESTAMP NOT NULL DEFAULT NOW() COMMENT 'Время входа',
CONSTRAINT fkLogsTimeUser FOREIGN KEY (id_logs_login)
REFERENCES logs_login(id) ON DELETE CASCADE
)ENGINE = INNODB, COMMENT = "Время входа пользователя";
-- Типы уведомлений
CREATE TABLE IF NOT EXISTS notification_type
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
type VARCHAR(30) NOT NULL COMMENT 'Типы уведомлений',
title VARCHAR(60) NULL COMMENT 'Описание типа',
PRIMARY KEY (id), CONSTRAINT ukType UNIQUE KEY (type)
)ENGINE = INNODB, COMMENT = "Типы уведомлений";
-- Уведомления пользователей
CREATE TABLE IF NOT EXISTS notification
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_user INT(10) UNSIGNED NOT NULL COMMENT 'id пользователя',
title VARCHAR(60) NOT NULL COMMENT 'Заголовок',
content TEXT NOT NULL COMMENT 'Содержимое',
time TIMESTAMP NOT NULL DEFAULT NOW() COMMENT 'Дата уведомления',
id_type INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'Тип объявления',
seen INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Просмотрено ли 1=просмотрено',
PRIMARY KEY (id),
CONSTRAINT fkNotUser FOREIGN KEY (id_user)
REFERENCES user (id) ON DELETE CASCADE,
CONSTRAINT fkNotType FOREIGN KEY (id_type)
REFERENCES notification_type (id)
)ENGINE = INNODB, COMMENT = "Уведомления пользователей";
-- Уведомления пользователей
CREATE TABLE IF NOT EXISTS ads
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_user INT(10) UNSIGNED NOT NULL COMMENT 'id пользователя',
title VARCHAR(255) NOT NULL COMMENT 'Заголовок',
salary INT(10) UNSIGNED NOT NULL COMMENT 'Оклад',
id_currency INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'id валюты',
description TEXT NOT NULL COMMENT 'Содержимое',
time TIMESTAMP NULL DEFAULT NULL COMMENT 'Дата создания, появляется только после модерации',
INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 = отключено, 1 = включено, 2 = удалено',
approved INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 = не проверено, 1 = проверено, 2 = не прошло модерацию',
id_country INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'ID страны',
seen INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Просмотрел ли модератор 0 = не просмотрено',
pay INT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Оплачена ли вакансия',
time_create TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата создания, появляется только после модерации',
count_view INT(10) UNSIGNED NOT NULL DEFAULT 1 NULL COMMENT 'Количество просмотров',
PRIMARY KEY (id),
INDEX ixUser(id_user),
INDEX ixCurrencyName(id_currency),
INDEX ixCountry(id_country),
INDEX ixCountry(status),
INDEX ixTime(time),
CONSTRAINT fkAdsUser FOREIGN KEY (id_user)
REFERENCES user (id) ON DELETE CASCADE,
CONSTRAINT fkAdsIdCurrencyName FOREIGN KEY (id_currency)
REFERENCES currency_name (id),
CONSTRAINT fkADSCountry FOREIGN KEY (id_country)
REFERENCES country_code (id)
)ENGINE = INNODB, COMMENT = "Объявления";
-- Подсчет объявлений
CREATE TABLE IF NOT EXISTS ads_count
(
id_user INT(10) UNSIGNED NOT NULL COMMENT 'id пользователя',
`all` INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Все объявлени',
active INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Активны',
disabled INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Отключенных',
moder INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'На модерации',
draft INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'В черновике',
PRIMARY KEY (id_user),
CONSTRAINT fkAdsCountUser FOREIGN KEY (id_user)
REFERENCES user (id) ON DELETE CASCADE
)ENGINE = INNODB, COMMENT = "Подсчет объявлений";
-- Объявления и специализации
CREATE TABLE IF NOT EXISTS ads_specialization
(
id_ads INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_specialization INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'ID специализации',
PRIMARY KEY (id_ads, id_specialization),
INDEX ixAds(id_ads),
INDEX ixSpecialization(id_specialization),
CONSTRAINT fkAdsSpecAds FOREIGN KEY (id_ads)
REFERENCES ads (id) ON DELETE CASCADE,
CONSTRAINT fkAdsSpecSpec FOREIGN KEY (id_specialization)
REFERENCES specialization_code (id) ON DELETE CASCADE
)ENGINE = INNODB, COMMENT = "Объявления и специализации";
-- Объявления и языки
CREATE TABLE IF NOT EXISTS ads_language
(
id_ads INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
id_language INT(10) UNSIGNED NULL DEFAULT NULL COMMENT 'ID языка',
PRIMARY KEY (id_ads, id_language),
INDEX ixAds(id_ads),
INDEX ixLanguage(id_language),
CONSTRAINT fkAdsLangAds FOREIGN KEY (id_ads)
REFERENCES ads (id) ON DELETE CASCADE,
CONSTRAINT fkAdsLandLand FOREIGN KEY (id_language)
REFERENCES language_code (id) ON DELETE CASCADE
)ENGINE = INNODB, COMMENT = "Объявления и языки";
-- Промокоды
CREATE TABLE IF NOT EXISTS promo
(
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
promo CHAR(16) NOT NULL COMMENT 'Промокод',
time TIMESTAMP NULL DEFAULT NULL COMMENT 'Срок годности промокода, NULL = бессрочно',
seor DECIMAL(10,3) NOT NULL DEFAULT 0 COMMENT 'Seor монет',
days INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Сколько бесплатных дней',
clicks INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Бесплатных кликов по объявлениям',
adc INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Бесплатных объявлений',
status INT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '0 = промокод не активен ',
once INT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '1 = одноразовый промокод',
PRIMARY KEY (id), CONSTRAINT ukPromo UNIQUE KEY (promo)
)ENGINE = INNODB, COMMENT = "Промокоды";
-- Логи активации промокодов