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

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

Corrections and changes.

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