source: trunk/tools/database/CreateTables.sql@ 3906

Last change on this file since 3906 was 3906, checked in by bird, 25 years ago

Tuning - indexes.

File size: 6.8 KB
Line 
1-- $Id: CreateTables.sql,v 1.14 2000-08-01 01:50:24 bird Exp $
2--
3-- Create all tables.
4--
5
6CREATE DATABASE Odin32;
7
8USE Odin32;
9
10
11--
12-- Manually create author table.
13--
14CREATE TABLE author (
15 refcode SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
16 name VARCHAR(64) NOT NULL,
17 initials CHAR(4) NOT NULL,
18 alias VARCHAR(32),
19 email VARCHAR(64),
20 country VARCHAR(64),
21 location VARCHAR(64),
22 description TEXT,
23 UNIQUE u1(refcode),
24 UNIQUE u2(name),
25 UNIQUE u3(initials)
26-- ,UNIQUE i4(alias), UNIQUE columns have to be defined NOT NULL in mySql.
27-- UNIQUE i5(email) UNIQUE columns have to be defined NOT NULL in mySql.
28);
29
30
31
32--
33-- Support table for Codes
34--
35CREATE TABLE code (
36 codegroup CHAR(4) NOT NULL,
37 code CHAR(4) NOT NULL,
38 description VARCHAR(128) NOT NULL,
39 UNIQUE u1(codegroup, code)
40);
41
42
43--
44--
45-- Documentation
46--
47--
48
49--
50-- This table holds the known states.
51--
52CREATE TABLE state (
53 refcode TINYINT NOT NULL PRIMARY KEY,
54 color CHAR(7) NOT NULL,
55 weight TINYINT NOT NULL,
56 name VARCHAR(32) NOT NULL,
57 description VARCHAR(128) NOT NULL,
58 UNIQUE u1(refcode),
59 UNIQUE u2(name),
60 UNIQUE u3(color)
61);
62
63
64--
65-- This table holds the dll names.
66-- Type has these known types:
67-- 'A' for Odin32 API dll
68-- 'I' for Internal Odin32 (API) dll
69-- 'S' for support stuff (ie. pe.exe and win32k.sys).
70-- 'T' for tools (executables and dlls)
71--
72CREATE TABLE dll (
73 refcode TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
74 name VARCHAR(32) NOT NULL,
75 type CHAR NOT NULL DEFAULT 'A',
76 description VARCHAR(255),
77 UNIQUE u1(refcode),
78 UNIQUE u2(name)
79);
80
81
82--
83-- This table holds fileinformation (per dll).
84--
85CREATE TABLE file (
86 refcode INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
87 dll TINYINT NOT NULL,
88 name VARCHAR(128) NOT NULL,
89 lastdatetime DATETIME NOT NULL,
90 lastauthor SMALLINT NOT NULL,
91 revision CHAR(10) NOT NULL,
92 updated TINYINT NOT NULL DEFAULT 0,
93 description TEXT,
94 UNIQUE u1(refcode),
95 UNIQUE u2(dll, name),
96 INDEX i1(name)
97);
98
99
100--
101-- This table holds design notes (per dll).
102--
103CREATE TABLE designnote (
104 refcode INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
105 dll TINYINT NOT NULL,
106 file INTEGER NOT NULL,
107 seqnbrfile SMALLINT NOT NULL,
108 seqnbr INTEGER NOT NULL,
109 title TEXT,
110 note TEXT NOT NULL,
111 UNIQUE u1(refcode),
112 INDEX u2(file, seqnbrfile, seqnbr, dll)
113);
114
115
116--
117-- This table holds API information (per dll / file).
118--
119-- Type has these known values:
120-- 'A' for API
121-- 'I' for Internal Odin32 API
122--
123CREATE TABLE function (
124 refcode INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
125 dll TINYINT NOT NULL,
126 aliasfn INTEGER NOT NULL DEFAULT -1,
127 file INTEGER NOT NULL DEFAULT -1,
128 name VARCHAR(100) NOT NULL,
129 intname VARCHAR(100) NOT NULL,
130 state TINYINT NOT NULL DEFAULT 0,
131 ordinal INTEGER NOT NULL,
132 apigroup SMALLINT,
133 return VARCHAR(64),
134 type CHAR NOT NULL DEFAULT 'A',
135 updated TINYINT NOT NULL DEFAULT 0,
136 description TEXT,
137 remark TEXT,
138 returndesc TEXT,
139 sketch TEXT,
140 equiv TEXT,
141 time TEXT,
142 UNIQUE i1(refcode, aliasfn),
143 UNIQUE i1a(dll, aliasfn, refcode),
144 UNIQUE i1b(aliasfn, name, dll),
145 UNIQUE i1c(aliasfn, intname, dll, refcode),
146 UNIQUE i2(name, dll, refcode),
147 UNIQUE i3(intname, dll, refcode),
148 INDEX i4(dll, file),
149 INDEX i5(file. refcode),
150 INDEX i6(state, file),
151 UNIQUE i7(state, refcode),
152 UNIQUE i8(refcode, state),
153 UNIQUE i9(dll, state, refcode),
154 UNIQUE u1(refcode),
155 UNIQUE u2(name, dll),
156 UNIQUE u3(type, refcode)
157);
158
159
160--
161-- This table holds parameters for APIs.
162--
163CREATE TABLE parameter (
164 function INTEGER NOT NULL,
165 sequencenbr TINYINT NOT NULL,
166 name VARCHAR(64) NOT NULL,
167 type VARCHAR(64) NOT NULL,
168 description TEXT,
169 INDEX i1(function, name),
170 UNIQUE u1(function, name)
171);
172
173
174--
175-- Many to many relation between functions and authors.
176--
177CREATE TABLE fnauthor (
178 author SMALLINT NOT NULL,
179 function INTEGER NOT NULL,
180 UNIQUE u1(author, function),
181 UNIQUE u2(function, author)
182);
183
184
185--
186-- Manually created Groups of APIs
187--
188CREATE TABLE apigroup (
189 refcode SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
190 dll TINYINT NOT NULL,
191 name VARCHAR(64) NOT NULL,
192 description VARCHAR(128),
193 UNIQUE u1(refcode),
194 UNIQUE u2(name)
195);
196
197
198
199--
200--
201-- History information
202--
203--
204
205--
206-- Status history for dlls.
207--
208CREATE TABLE historydll (
209 dll TINYINT NOT NULL,
210 state SMALLINT NOT NULL,
211 date DATE NOT NULL,
212 count SMALLINT NOT NULL,
213 UNIQUE u1(dll, state, date)
214);
215
216
217--
218-- Status history for API groups.
219--
220CREATE TABLE historyapigroup (
221 apigroup SMALLINT NOT NULL,
222 state SMALLINT NOT NULL,
223 date DATE NOT NULL,
224 count SMALLINT NOT NULL,
225 UNIQUE u1(apigroup, state, date)
226);
227
228
229--
230-- Dll API count history.
231--
232CREATE TABLE historydlltotal (
233 dll SMALLINT NOT NULL,
234 date DATE NOT NULL,
235 totalcount SMALLINT NOT NULL,
236 UNIQUE u1(dll, DATE)
237);
238
239
240--
241-- API Group API count history.
242--
243CREATE TABLE historyapigrouptotal (
244 apigroup SMALLINT NOT NULL,
245 date DATE NOT NULL,
246 totalcount SMALLINT NOT NULL,
247 UNIQUE u1(apigroup, date)
248);
249
250
251
252--
253--
254-- Administration
255--
256--
257
258--
259-- This table holds the teams (like MAD, WAI,...).
260--
261CREATE TABLE team (
262 refcode SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
263 name VARCHAR(30) NOT NULL,
264 longname VARCHAR(128) NOT NULL,
265 description TEXT NOT NULL,
266 tasks TEXT,
267 notes TEXT,
268 UNIQUE u1(refcode),
269 UNIQUE u2(name)
270);
271
272
273--
274-- This table holds the groups under each team.
275-- Currently only the WAI team is grouped.
276--
277CREATE TABLE tgroup (
278 refcode SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
279 team SMALLINT NOT NULL,
280 name VARCHAR(80) NOT NULL,
281 description TEXT NOT NULL,
282 notes TEXT,
283 UNIQUE u1(refcode),
284 UNIQUE u2(team, refcode)
285);
286
287
288--
289-- This table relates a tgroup with authors
290-- ( do a distinct select to get all members of a team )
291--
292CREATE TABLE tgroupmember (
293 tgroup SMALLINT NOT NULL,
294 author SMALLINT NOT NULL,
295 codemaintainer CHAR(1) DEFAULT 'N',
296 UNIQUE u1(tgroup, author)
297);
298
299
300--
301-- This table relates a tgroup with a dll.
302--
303CREATE TABLE tgroupdll (
304 tgroup SMALLINT NOT NULL,
305 dll TINYINT NOT NULL,
306 UNIQUE u1(tgroup, dll)
307);
308
309
310--
311-- This table relates a tgroup with an apigroup.
312--
313CREATE TABLE tgroupapigroup (
314 tgroup SMALLINT NOT NULL,
315 apigroup SMALLINT NOT NULL,
316 UNIQUE u1(tgroup, apigroup)
317);
318
319
320
Note: See TracBrowser for help on using the repository browser.