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

Last change on this file since 6677 was 6677, checked in by bird, 24 years ago

dll to module conversion.

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