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

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

Added line (linenumber) to designnote and function.

File size: 7.0 KB
Line 
1-- $Id: CreateTables.sql,v 1.17 2000-08-02 01:22:34 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 dll 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 dll (
77 refcode TINYINT 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 dll).
88--
89CREATE TABLE file (
90 refcode INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
91 dll TINYINT 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(dll, name),
100 INDEX i1(name)
101);
102
103
104--
105-- This table holds design notes (per dll).
106--
107CREATE TABLE designnote (
108 refcode INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
109 dll TINYINT NOT NULL,
110 file INTEGER NOT NULL,
111 seqnbrfile SMALLINT NOT NULL,
112 seqnbr INTEGER NOT NULL,
113 line INTEGER NOT NULL DEFAULT -1,
114 title TEXT,
115 note TEXT NOT NULL,
116 UNIQUE u1(refcode),
117 INDEX u2(file, seqnbrfile, seqnbr, dll)
118);
119
120
121--
122-- This table holds API information (per dll / file).
123--
124-- Type has these known values:
125-- 'A' for API
126-- 'I' for Internal Odin32 API
127--
128CREATE TABLE function (
129 refcode INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
130 dll TINYINT NOT NULL,
131 aliasfn INTEGER NOT NULL DEFAULT -1,
132 file INTEGER NOT NULL DEFAULT -1,
133 name VARCHAR(100) NOT NULL,
134 intname VARCHAR(100) NOT NULL,
135 state TINYINT NOT NULL DEFAULT 0,
136 ordinal INTEGER NOT NULL,
137 apigroup SMALLINT,
138 return VARCHAR(64),
139 type CHAR NOT NULL DEFAULT 'A',
140 updated TINYINT NOT NULL DEFAULT 0,
141 line INTEGER NOT NULL DEFAULT -1,
142 description TEXT,
143 remark TEXT,
144 returndesc TEXT,
145 sketch TEXT,
146 equiv TEXT,
147 time TEXT,
148 UNIQUE i1(refcode, aliasfn),
149 UNIQUE i1a(dll, aliasfn, refcode),
150 UNIQUE i1b(aliasfn, name, dll),
151 UNIQUE i1c(aliasfn, intname, dll, refcode),
152 UNIQUE i2(name, dll, refcode),
153 UNIQUE i3(intname, dll, refcode),
154 INDEX i4(dll, file),
155 INDEX i5(file, refcode),
156 INDEX i6(state, file),
157 UNIQUE i7(state, refcode),
158 UNIQUE i8(refcode, state),
159 UNIQUE i9(dll, state, refcode),
160 UNIQUE u1(refcode),
161 UNIQUE u2(name, dll),
162 UNIQUE u3(type, refcode)
163);
164
165
166--
167-- This table holds parameters for APIs.
168--
169CREATE TABLE parameter (
170 function INTEGER NOT NULL,
171 sequencenbr TINYINT NOT NULL,
172 name VARCHAR(64) NOT NULL,
173 type VARCHAR(64) NOT NULL,
174 description TEXT,
175 INDEX i1(function, name),
176 UNIQUE u1(function, name)
177);
178
179
180--
181-- Many to many relation between functions and authors.
182--
183CREATE TABLE fnauthor (
184 author SMALLINT NOT NULL,
185 function INTEGER NOT NULL,
186 UNIQUE u1(author, function),
187 UNIQUE u2(function, author)
188);
189
190
191--
192-- Manually created Groups of APIs
193--
194CREATE TABLE apigroup (
195 refcode SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
196 dll TINYINT NOT NULL,
197 name VARCHAR(64) NOT NULL,
198 description VARCHAR(128),
199 UNIQUE u1(refcode),
200 UNIQUE u2(name)
201);
202
203
204
205--
206--
207-- History information
208--
209--
210
211--
212-- Status history for dlls.
213--
214CREATE TABLE historydll (
215 dll TINYINT NOT NULL,
216 state SMALLINT NOT NULL,
217 date DATE NOT NULL,
218 count SMALLINT NOT NULL,
219 UNIQUE u1(dll, state, date)
220);
221
222
223--
224-- Status history for API groups.
225--
226CREATE TABLE historyapigroup (
227 apigroup SMALLINT NOT NULL,
228 state SMALLINT NOT NULL,
229 date DATE NOT NULL,
230 count SMALLINT NOT NULL,
231 UNIQUE u1(apigroup, state, date)
232);
233
234
235--
236-- Dll API count history.
237--
238CREATE TABLE historydlltotal (
239 dll SMALLINT NOT NULL,
240 date DATE NOT NULL,
241 totalcount SMALLINT NOT NULL,
242 UNIQUE u1(dll, DATE)
243);
244
245
246--
247-- API Group API count history.
248--
249CREATE TABLE historyapigrouptotal (
250 apigroup SMALLINT NOT NULL,
251 date DATE NOT NULL,
252 totalcount SMALLINT NOT NULL,
253 UNIQUE u1(apigroup, date)
254);
255
256
257
258--
259--
260-- Administration
261--
262--
263
264--
265-- This table holds the teams (like MAD, WAI,...).
266--
267CREATE TABLE team (
268 refcode SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
269 name VARCHAR(30) NOT NULL,
270 longname VARCHAR(128) NOT NULL,
271 description TEXT NOT NULL,
272 tasks TEXT,
273 notes TEXT,
274 UNIQUE u1(refcode),
275 UNIQUE u2(name)
276);
277
278
279--
280-- This table holds the groups under each team.
281-- Currently only the WAI team is grouped.
282--
283CREATE TABLE tgroup (
284 refcode SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
285 team SMALLINT NOT NULL,
286 name VARCHAR(80) NOT NULL,
287 description TEXT NOT NULL,
288 notes TEXT,
289 UNIQUE u1(refcode),
290 UNIQUE u2(team, refcode)
291);
292
293
294--
295-- This table relates a tgroup with authors
296-- ( do a distinct select to get all members of a team )
297--
298CREATE TABLE tgroupmember (
299 tgroup SMALLINT NOT NULL,
300 author SMALLINT NOT NULL,
301 codemaintainer CHAR(1) DEFAULT 'N',
302 UNIQUE u1(tgroup, author)
303);
304
305
306--
307-- This table relates a tgroup with a dll.
308--
309CREATE TABLE tgroupdll (
310 tgroup SMALLINT NOT NULL,
311 dll TINYINT NOT NULL,
312 UNIQUE u1(tgroup, dll)
313);
314
315
316--
317-- This table relates a tgroup with an apigroup.
318--
319CREATE TABLE tgroupapigroup (
320 tgroup SMALLINT NOT NULL,
321 apigroup SMALLINT NOT NULL,
322 UNIQUE u1(tgroup, apigroup)
323);
324
325
326
Note: See TracBrowser for help on using the repository browser.