-
Notifications
You must be signed in to change notification settings - Fork 0
/
crossword.sql
199 lines (152 loc) · 5.96 KB
/
crossword.sql
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
# CREATE USER 'taras'@'localhost' IDENTIFIED BY 'su112per';
# GRANT ALL PRIVILEGES ON *.* TO 'taras'@'localhost';
# FLUSH PRIVILEGES;
drop database if exists crossword;
create database crossword DEFAULT CHARACTER SET = UTF8;
use crossword;
drop table if exists crosses;
drop table if exists private_data;
drop table if exists grids;
drop table if exists uses;
drop table if exists templates;
drop table if exists words;
drop table if exists questions;
#
# таблиця з шаблонами решіток
#
create table templates
(
_id int unsigned not null auto_increment primary key,
# кількість рядків в шаблоні
_rows int not null,
# кількість совпців в шаблоні
_columns int not null,
# кількість слів в шаблоні
_count_words int not null,
# картинка для попереднього перегляду існуючих решіток шаблонів
_preview mediumblob
) engine=innodb;
#
# таблиця з даними для шаблону решітки
#
create table grids
(
_id int unsigned not null auto_increment primary key,
# покажчик на шаблон в таблиці шаблонів
_template int unsigned not null,
index _template_ind(_template),
foreign key (_template) references templates(_id)
on delete no action
on update no action,
# рядок ячейки в шаблоні
_row int not null,
# совпець ячейки в шаблоні
_column int not null,
# дані ячейки
_value int not null
) engine=innodb;
#
# таблиця зі словами які знайдено в результаті розвязку кросворду
#
create table words
(
_id int unsigned not null auto_increment primary key,
index _id_ind(_id),
# слово
_word char(30) not null default '',
# використано це слово при складанні кросворду чи ні
_used boolean not null default false
) engine=innodb;
#
# таблиця із запитаннями до слів
#
create table questions
(
_id int unsigned not null auto_increment primary key,
index _id_ind(_id),
# запитання до слова
_question text not null
) engine=innodb;
#
# таблиця з даними про кросворд, отримана шляхом сканування шаблону решітки
#
create table private_data
(
_id int unsigned not null auto_increment primary key,
# покажчик на шаблон в таблиці шаблонів
_template int unsigned not null,
index _template_ind(_template),
foreign key (_template) references templates(_id)
on delete no action
on update no action,
# покажчик на слово в таблиці слів
# _word int unsigned not null,
# index word_ind(_word),
# foreign key (_word) references words(_id)
# on delete no action
# on update no action,
# покажчик на запитання в таблиці запитань
# _question int unsigned not null,
# index question_ind(_question),
# foreign key (_question) references questions(_id)
# on delete no action
# on update no action,
# порядковий номер слова в кросворді
_numword int unsigned not null,
# прапорець заповнення шаблону в словi (1-так, 0-нi)
#_filled boolean not null,
# початковий рядок слова в кросвордi
_row int unsigned not null,
# початковий стовпець слова в кросвордi
_column int unsigned not null,
# довжина слова
_lenght tinyint unsigned not null,
# наразі нехай буде, але швидше за все це поле не потрібно
# кiлькiсть перетинiв в словi
_crosscount tinyint unsigned not null,
# орiєнтацiя слова в кросвордi (1-вертикальна, 0-горизонтальна)
_orientation boolean not null
) engine=innodb;
#
# таблиця про перетини слова з іншими словами в кросворді
#
create table crosses
(
_id int unsigned not null auto_increment primary key,
_template int unsigned not null,
# покажчик на таблицю приватних даних про кросворд
_pd_id int unsigned not null,
index pd_ind(_pd_id),
# foreign key (_pd) references private_data(_id)
# on delete no action
# on update no action,
# лiнiйна позицiя перетину вiдносно початку слова
_cpos int unsigned not null,
# тип перетину
_ctype tinyint unsigned not null,
# номер слова яке утворює даний перетин з актуальним
# словом (пiд актуальним розумiється те слово в якому
# описується ця структура перетину). Посутi це поле є
# покажчиком на слово яке перетинає актуальне слово.
_numword int unsigned not null
) engine=innodb;
#
# таблиця про використання кросвордів в пресі, інтернеті
#
create table uses
(
_id int unsigned not null auto_increment primary key,
# покажчик на кросвор в таблиці кросвордів
# _crossword int unsigned not null,
# index crossword_ind(_crossword),
# foreign key (_crossword) references crosswords(_id),
# покажчик на шаблон в таблиці шаблонів
_template int unsigned not null,
index template_ind(_template),
foreign key (_template) references templates(_id),
# дата друку кросворду
_date date not null default "0000-00-00",
# назва видання де використано кросворд
_name text not null
) engine=innodb;
LOAD DATA INFILE '/home/taras/Projects/qtCrossword/utf8_word.txt' INTO TABLE words (_word);