/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to databas.sql

  • Committer: Erik Wikström
  • Date: 2013-04-09 09:09:31 UTC
  • mfrom: (21 lenasys)
  • mto: (21.1.1 lenasys)
  • mto: This revision was merged to the branch mainline in revision 22.
  • Revision ID: wikxen@gmail.com-20130409090931-9jcs9kzg8et0912g
Remerged! Changed password hashes to VARCHAR(32)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
CREATE SCHEMA IF NOT EXISTS `lenasys` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
2
 
USE `lenasys` ;
3
 
CREATE USER 'dbsk'@'localhost' IDENTIFIED BY 'Tomten2009';
4
 
GRANT ALL PRIVILEGES ON lenasys.* TO 'dbsk'@'localhost' WITH GRANT OPTION;
5
 
 
6
 
 
7
 
 
8
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`Users` (
9
 
  `userName` VARCHAR(20) NOT NULL ,
10
 
  `userType` ENUM('Teacher','Student') DEFAULT 'Student' , -- 1=teacher and 2=student
11
 
  `name` VARCHAR(45) NULL ,
12
 
  `passwd` CHAR(40) NULL ,
13
 
  `passwdHint` CHAR(100) NULL ,
14
 
  `ssn` CHAR(13) NULL COMMENT 'yyyymmdd-xxxx' ,
15
 
  PRIMARY KEY (`userName`) )
16
 
ENGINE = InnoDB;
17
 
 
18
 
 
19
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`Courses` (
20
 
  `courseID` VARCHAR(10) NOT NULL ,
21
 
  `name` VARCHAR(45) NULL ,
22
 
  `courseData` VARCHAR(128) NULL , -- explenation about course, example: G1N 7,5hp  + additional text
23
 
  PRIMARY KEY (`courseID`))
24
 
ENGINE = InnoDB;
25
 
 
26
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`StudentCourseRegistrations` (
27
 
  `courseOccasion` VARCHAR(16) NOT NULL , -- Example HT2012 period 2
28
 
  `userName` VARCHAR(20) NOT NULL ,
29
 
  `courseID` VARCHAR(10) NOT NULL , -- Example G14234
30
 
  PRIMARY KEY (`courseOccasion`,`userName`, `courseID`) ,
31
 
    FOREIGN KEY (`userName` )
32
 
    REFERENCES `lenasys`.`Users` (`userName` )ON UPDATE CASCADE,
33
 
    FOREIGN KEY (`courseID` )
34
 
    REFERENCES `lenasys`.`Courses` (`courseID` )ON UPDATE CASCADE)
35
 
ENGINE = InnoDB;
36
 
 
37
 
 
38
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`Categories` (
39
 
  `categoryName` VARCHAR(64) NOT NULL ,
40
 
  `courseID` VARCHAR(10) NOT NULL ,
41
 
  `orderNr` INT NOT NULL , -- the order of the examples in the same category 
42
 
  PRIMARY KEY (`categoryName`, `courseID`) ,
43
 
    FOREIGN KEY (`courseID` )
44
 
    REFERENCES `lenasys`.`Courses` (`courseID` )ON UPDATE CASCADE)
45
 
ENGINE = InnoDB;
46
 
 
47
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`SubCategories` (
48
 
  `subCategoryName` VARCHAR(64) NOT NULL ,
49
 
  `categoryName` VARCHAR(64) NOT NULL ,
50
 
  `courseID` VARCHAR(10) NOT NULL ,
51
 
  `orderNr` INT NOT NULL , -- the order of the examples in the same category
52
 
  PRIMARY KEY (`subCategoryName`, `categoryName`, `courseID`) ,
53
 
    FOREIGN KEY (`categoryName` , `courseID` )
54
 
    REFERENCES `lenasys`.`Categories` (`categoryName` , `courseID` )ON UPDATE CASCADE)
55
 
ENGINE = InnoDB;
56
 
 
57
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`Quizzes` (
58
 
  `quizNr` INT NOT NULL ,
59
 
  `subCategoryName` VARCHAR(64) NOT NULL ,
60
 
  `categoryName` VARCHAR(64) NOT NULL ,
61
 
  `courseID` VARCHAR(10) NOT NULL ,
62
 
  `quizData` VARCHAR(45) NULL ,
63
 
  `allowMultipleReplies` BIT NULL , -- 1=true and 0=false
64
 
  `autoCorrected` BIT NULL , -- if the quiz is corrected by auto or if the teacher needs to do it manually., 1=true and 0=false
65
 
  `openingDate` DATETIME NULL ,  -- time for the student to do the quiz
66
 
  `closingDate` DATETIME NULL ,
67
 
  `updatedAt` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , 
68
 
  PRIMARY KEY (`quizNr`,  `subCategoryName`, `categoryName` , `courseID`) ,
69
 
    FOREIGN KEY (`subCategoryName`, `categoryName`, `courseID`)
70
 
    REFERENCES `lenasys`.`SubCategories` (`subCategoryName`, `categoryName`, `courseID` )ON UPDATE CASCADE)
71
 
ENGINE = InnoDB;
72
 
 
73
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`QuizQuestions` (
74
 
  `questionID` INT NOT NULL , -- The id of the individual question in the quiz.
75
 
  `quizNr` INT NOT NULL , -- The quiz from wich the question is from
76
 
  `subCategoryName` VARCHAR(64) NOT NULL ,
77
 
  `categoryName` VARCHAR(64) NOT NULL ,
78
 
  `courseID` VARCHAR(10) NOT NULL ,
79
 
  `questionData` VARCHAR(45) NULL , -- the question
80
 
  `correctAnswer` VARCHAR(45) NULL , -- the answer
81
 
  PRIMARY KEY (`questionID`, `quizNr`, `subCategoryName`,`categoryName` ,  `courseID`) ,
82
 
    FOREIGN KEY (`quizNr` ,`subCategoryName` ,`categoryName`,  `courseID` )
83
 
    REFERENCES `lenasys`.`Quizzes` (`quizNr` , `subCategoryName`,`categoryName` , `courseID` )ON UPDATE CASCADE)
84
 
ENGINE = InnoDB;
85
 
 
86
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`AssignedQuizzes` (
87
 
  `courseOccasion` VARCHAR(16) NOT NULL , -- Example HT2012 period 2
88
 
  `userName` VARCHAR(20) NOT NULL , -- wich student took the quiz
89
 
  `courseID` VARCHAR(10) NOT NULL ,
90
 
  `quizNr` INT NOT NULL ,
91
 
  `subCategoryName` VARCHAR(64) NOT NULL ,
92
 
  `categoryName` VARCHAR(64) NOT NULL ,
93
 
  `quizCourseID` VARCHAR(10) NOT NULL ,
94
 
  `answers` VARCHAR(45) NULL , -- answers provided by the student
95
 
  `answerHash` VARCHAR(45) NULL , -- a security measure
96
 
  `answeredTimeStamp` DATETIME NULL , -- when the student submittet the quiz
97
 
  `grade` VARCHAR(8) NULL ,
98
 
  `gradeComment` VARCHAR(200) NULL ,
99
 
  PRIMARY KEY (`courseOccasion` ,`userName`, `courseID`, `quizNr`, `quizCourseID`) ,
100
 
    FOREIGN KEY (`courseOccasion`,`userName` , `courseID` )
101
 
    REFERENCES `lenasys`.`StudentCourseRegistrations` (`courseOccasion`,`userName` , `courseID` )ON UPDATE CASCADE,
102
 
    FOREIGN KEY (`quizNr` ,`subCategoryName`,`categoryName`, `quizCourseID` )
103
 
    REFERENCES `lenasys`.`Quizzes` (`quizNr` ,`subCategoryName`,`categoryName`, `courseID` )ON UPDATE CASCADE)
104
 
ENGINE = InnoDB;
105
 
 
106
 
 
107
 
 
108
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`Examples` (
109
 
  `exampleName` VARCHAR(20) NOT NULL ,
110
 
  `subCategoryName` VARCHAR(64) NOT NULL ,
111
 
  `categoryName` VARCHAR(64) NOT NULL ,
112
 
  `courseID` VARCHAR(10) NOT NULL ,
113
 
  `orderNr` INT NOT NULL , -- the order of the examples in the same category 
114
 
  `description` VARCHAR(200) NULL ,
115
 
  `updatedAt` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , 
116
 
  PRIMARY KEY (`exampleName`, `subCategoryName`, `categoryName`, `courseID`) ,
117
 
    FOREIGN KEY (`subCategoryName`, `categoryName`, `courseID` )
118
 
    REFERENCES `lenasys`.`SubCategories` (`subCategoryName`,`categoryName`, `courseID` )ON UPDATE CASCADE)
119
 
ENGINE = InnoDB;
120
 
 
121
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`Files` (
122
 
  `fileName` VARCHAR(20) NOT NULL ,
123
 
  `fileType` ENUM('Text', 'Code', 'Video', 'Picture') DEFAULT 'text' , -- text=1, code=2, video=3 picture=4
124
 
  `codeLanguage` VARCHAR(10) NULL , -- example: javascript, html, m.m.
125
 
  `dataBlob` BLOB NULL , -- This is where the binary file is stored. Searchable. 
126
 
  `updatedAt` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , 
127
 
  PRIMARY KEY (`fileName`))
128
 
ENGINE = InnoDB;
129
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`Containers` (
130
 
  `columnNr` INT NOT NULL ,
131
 
  `orderNr` INT NOT NULL , -- the order of the examples in the same category 
132
 
  `fileName` VARCHAR(20) NOT NULL , -- primary key??
133
 
  `exampleName` VARCHAR(20) NOT NULL ,
134
 
  `subCategoryName` VARCHAR(64) NOT NULL ,
135
 
  `categoryName` VARCHAR(64) NOT NULL ,
136
 
  `courseID` VARCHAR(10) NOT NULL ,
137
 
  `executable` BIT , -- 1=true and 0=false
138
 
  PRIMARY KEY (`columnNr`, `orderNr`, `fileName`,`exampleName`,`subCategoryName`, `categoryName`, `courseID`) ,
139
 
    FOREIGN KEY (`fileName` )
140
 
    REFERENCES `lenasys`.`Files` (`fileName` )ON UPDATE CASCADE,
141
 
        FOREIGN KEY (`exampleName`,`subCategoryName` ,`categoryName` , `courseID` )
142
 
    REFERENCES `lenasys`.`Examples` (`exampleName`,`subCategoryName` ,`categoryName` , `courseID` )ON UPDATE CASCADE)
143
 
ENGINE = InnoDB;
144
 
 
145
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`FileInterestingLines` (
146
 
`id` INT NOT NULL AUTO_INCREMENT ,
147
 
`fileName` VARCHAR(20) NOT NULL ,
148
 
`columnNr` INT NOT NULL ,
149
 
`orderNr` INT NOT NULL ,
150
 
`exampleName` VARCHAR(20) NOT NULL ,
151
 
`subCategoryName` VARCHAR(64) NOT NULL ,
152
 
`categoryName` VARCHAR(64) NOT NULL ,
153
 
`courseID` VARCHAR(10) NOT NULL ,
154
 
`beginAt` INT NULL ,
155
 
`endAt` INT NULL ,
156
 
PRIMARY KEY (`id`, `fileName` , `columnNr`, `exampleName`,`subCategoryName`,`categoryName`, `courseID`) ,
157
 
FOREIGN KEY (`columnNr`, `orderNr`, `fileName`, `exampleName`,`subCategoryName`, `categoryName`, `courseID`)
158
 
REFERENCES `lenasys`.`Containers` (`columnNr`, `orderNr`, `fileName`, `exampleName`,`subCategoryName`, `categoryName`, `courseID`)ON UPDATE CASCADE)
159
 
ENGINE = InnoDB;
160
 
 
161
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`Keywords` (
162
 
  `keyword` VARCHAR(20) NOT NULL ,
163
 
  `exampleName` VARCHAR(20) NOT NULL ,
164
 
  `subCategoryName` VARCHAR(64) NOT NULL ,
165
 
  `categoryName` VARCHAR(64) NOT NULL ,
166
 
  `courseID` VARCHAR(10) NOT NULL ,
167
 
  PRIMARY KEY (`keyword`, `exampleName`, `subCategoryName` , `categoryName`, `courseID`) ,
168
 
    FOREIGN KEY (`exampleName`,`subCategoryName` , `categoryName`, `courseID` )
169
 
    REFERENCES `lenasys`.`Examples` (`exampleName`, `subCategoryName` , `categoryName`, `courseID` )ON UPDATE CASCADE)
170
 
ENGINE = InnoDB;
171
 
 
172
 
 
173
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`logUsersQuizLogins` (
174
 
  `id` INT NOT NULL ,
175
 
  `userName` VARCHAR(20) NOT NULL ,
176
 
  `userAgent` VARCHAR(200) NOT NULL , -- web browser and version
177
 
  `userIP` VARCHAR(20) NOT NULL , --  ip-number
178
 
  `browserID` VARCHAR(64) /*NOT NULL*/ , -- autogenerated id for local-storage
179
 
  `courseID` VARCHAR(10) NOT NULL ,
180
 
  `courseOccasion` VARCHAR(16) NULL ,
181
 
  `quizNr` INT NOT NULL ,
182
 
  `loginTimeStamp` DATETIME NOT NULL ,
183
 
  `success` BIT NOT NULL , -- 1=true and 0=false
184
 
  PRIMARY KEY (`id`))
185
 
ENGINE = InnoDB;
186
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`logAssignedQuizzesAnswers` (
187
 
  `id` INT NOT NULL ,
188
 
  `userName` VARCHAR(20)  NOT NULL ,
189
 
  `userAgent` VARCHAR(200) NOT NULL ,
190
 
  `userIP` VARCHAR(20) NOT NULL ,
191
 
  `courseID` VARCHAR(10) NOT NULL ,
192
 
  `courseOccasion` VARCHAR(16) NOT NULL ,
193
 
  `quizNr` INT NOT NULL ,
194
 
  `answers` VARCHAR(45) NULL ,
195
 
  `answerHash` VARCHAR(45) NULL ,
196
 
  `answeredTimeStamp` DATETIME NULL , -- TIMESTAMP ??
197
 
  `grade` VARCHAR(8) NULL ,
198
 
  `gradeComment` VARCHAR(200) NULL ,
199
 
  PRIMARY KEY (`id`))
200
 
 
201
 
ENGINE = InnoDB;
202
 
CREATE  TABLE IF NOT EXISTS `lenasys`.`logBenchmark` (
203
 
  `id` INT NOT NULL ,
204
 
  `userName` VARCHAR(20) NOT NULL ,
205
 
  `userAgent` VARCHAR(200) NOT NULL ,
206
 
  `userIP` VARCHAR(20)  NOT NULL ,
207
 
  `browser` VARCHAR(20)  NOT NULL , -- will they be used to show different views? Can we just use userAgent instead?
208
 
  `browserVersion` VARCHAR(20) NOT NULL , -- -||-
209
 
  `renderer` VARCHAR(20) NOT NULL , -- ??
210
 
  `rendererVersion` VARCHAR(20) NOT NULL , -- ??
211
 
  `os` VARCHAR(64) NOT NULL ,
212
 
  `osVersion` VARCHAR(20) NOT NULL ,
213
 
  `fps` VARCHAR(20) NOT NULL ,
214
 
  `maxFps` VARCHAR(20) NOT NULL ,
215
 
  `hostName` VARCHAR(20) NOT NULL , -- Ändrad till hostName
216
 
  `app` VARCHAR(20) NOT NULL ,
217
 
  `screenResolution` VARCHAR(20) NOT NULL ,
218
 
  `logTimeStamp` DATETIME NOT NULL ,
219
 
  `runtime` INT NOT NULL ,
220
 
  PRIMARY KEY (`id`))
221
 
ENGINE = InnoDB;
222
 
 
223
 
INSERT INTO `lenasys`.`Users` (`userName`,`name`,`passwd`, passwdHint,`userType`,`ssn`) 
224
 
VALUES ('student','Per Student',sha1('Syp9393'),'gamla vanliga' ,2,'19900385-2345'),
225
 
('student2','Gösta Student',sha1('Syp9393'),'SypARN',2,'19800385-2385'),
226
 
('lärare','Kalle Lärare',sha1('Syp9393'),'Syp och året då Sverige först tillåter kommersiell radio x2',1,'19800385-2325');
227
 
 
228
 
INSERT INTO `Courses`(`courseID`, `name`, `courseData`) 
229
 
VALUES('DA133G'  , 'Webbutveckling - datorgrafik G1N' , ' 7,5hp (IKI)'),
230
 
('d1popcrn'  , 'Webbutveckling - Läran om Gson' , ' 7,5hp (IKI)'),
231
 
('DAG123'  , 'Webbutveckling - Nånting' , ' 7,5hp (IKI)');
232
 
 
233
 
INSERT INTO `StudentCourseRegistrations`(`courseOccasion`, `userName`, `courseID`) 
234
 
VALUES ('HT2012 period 2','student','d1popcrn'),
235
 
('HT2012 period 2','student','DA133G'),
236
 
('HT2012 period 2','student2','d1popcrn'),
237
 
('HT2012 period 2','student2','DAG123');
238
 
 
239
 
INSERT INTO `Categories`(`categoryName`, `courseID`, `orderNr`) 
240
 
VALUES ('Vektorgrafik','DA133G', 1),
241
 
('Shading','DA133G', 2),
242
 
('3D','DA133G', 3),
243
 
('Tidigt 90-tal','d1popcrn', 1),
244
 
('Categorie i nånting','DAG123', 1),
245
 
('Categorie i någontingen mer','DAG123', 2);
246
 
 
247
 
INSERT INTO `SubCategories`(`subCategoryName`, `categoryName`, `courseID`, `orderNr`) 
248
 
VALUES ('Punkt' ,'Vektorgrafik','DA133G', 1),
249
 
('Linjer' ,'Vektorgrafik','DA133G', 2),
250
 
('Böjningar' ,'Vektorgrafik','DA133G', 3),
251
 
('Vertexshading','Shading','DA133G', 1),
252
 
('Globalshading','Shading','DA133G', 2),
253
 
('Bra 3d' , '3D','DA133G', 1),
254
 
('Dålig 3d' , '3D','DA133G', 2),
255
 
('Smurfhits','Tidigt 90-tal','d1popcrn', 1),
256
 
('NES','Tidigt 90-tal','d1popcrn', 2),
257
 
('Sovmorgon','Tidigt 90-tal','d1popcrn', 3),
258
 
('Subcategorie i nånting' ,'Categorie i nånting','DAG123', 1),
259
 
('Subcategorie2 i nånting' ,'Categorie i nånting','DAG123', 2),
260
 
('Subcategorie i nåntingen mer', 'Categorie i någontingen mer','DAG123', 1),
261
 
('Subcategorie2 i nåntingen mer', 'Categorie i någontingen mer','DAG123', 2);
262
 
 
263
 
 
264
 
 
265
 
INSERT INTO Quizzes(`quizNr`, `subCategoryName`, `categoryName`, `courseID`, `quizData`, `allowMultipleReplies`,`autoCorrected`, `openingDate`,`closingDate` ) 
266
 
VALUES(1,'punkt' ,'Vektorgrafik','DA133G','Svara så gott du kan, lycka till',1,1, '2013-05-20 08:00:00','2013-05-25 23:59:00'),
267
 
(2,'punkt' ,'Vektorgrafik','DA133G','Lol glhf',1,1, '2013-05-20 08:00:00','2013-05-25 23:59:00'),
268
 
(3,'punkt' ,'Vektorgrafik','DA133G','ajaja detta kommer nu gå bra *NAWHT*',1,1, '2013-05-20 08:00:00','2013-05-25 23:59:00'),
269
 
(1,'linjer' ,'Vektorgrafik','DA133G','happ happ lycka till',1,1, '2013-05-20 08:00:00','2013-05-25 23:59:00');
270
 
  
271
 
 INSERT INTO QuizQuestions(`questionID`, `quizNr`, `subCategoryName`, `categoryName`, `courseID`, `questionData`, `correctAnswer`) 
272
 
 VALUES(1,1,'punkt' ,'Vektorgrafik','DA133G','vad är roten av pi plus solens massa?','inte vet jag lol'),
273
 
(2,1,'punkt' ,'Vektorgrafik','DA133G','hur mår du?','Bra som bara den');
274
 
 
275
 
INSERT INTO Examples(`exampleName`, `subCategoryName`, `categoryName`, `courseID`, `orderNr`, `description`) 
276
 
VALUES('punkt example 1','punkt' ,'Vektorgrafik','DA133G',1,'nån sorts förklaring om punkter'),
277
 
('punkt example 2','punkt' ,'Vektorgrafik','DA133G',2,'nån sorts förklaring om punkter i example 2'),
278
 
('ett till exempel inom punkt','punkt' ,'Vektorgrafik','DA133G',3,'nån sorts förklaring om punkter igen'),
279
 
('linjer example 1','linjer' ,'Vektorgrafik','DA133G',1,'nån sorts förklaring om linjer');
280
 
 
281
 
INSERT INTO Files(`fileName`,`fileType`,`codeLanguage`, `dataBlob`) 
282
 
VALUES('exempel fil1',1,'html','Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
283
 
Phasellus a tellus lacus, a dapibus velit. Integer ac lorem dui, nec condimentum purus. Nullam convallis erat a 
284
 
mauris pulvinar adipiscing. In consectetur, odio sit amet dictum pulvinar, erat risus condimentum mi, eu eleifend 
285
 
dolor est id elit. Pellentesque eu tellus sed sem molestie fringilla. Integer auctor arcu nec nunc pharetra non 
286
 
consectetur augue viverra. Pellentesque lorem nisl, tristique sed lobortis et, tincidunt sit amet diam. Maecenas 
287
 
lacinia laoreet ligula, eget pretium libero venenatis malesuada. Suspendisse eu velit in arcu consectetur dictum a quis orci. 
288
 
Maecenas vulputate tincidunt odio sit amet interdum. Curabitur non ante tristique mi malesuada dictum at quis nunc. 
289
 
Suspendisse ornare leo a elit egestas eu rutrum lorem cursus. Quisque sollicitudin, nisi eget consectetur auctor, 
290
 
leo risus blandit eros, id aliquet purus tortor a turpis. Donec venenatis blandit est quis imperdiet. Sed mauris eros, 
291
 
pharetra vitae tempus vel, pretium at purus.'),
292
 
 
293
 
('exempel fil2',1,'html','Donec sed turpis ante, et dapibus augue. Pellentesque habitant morbi tristique 
294
 
senectus et netus et malesuada fames ac turpis egestas. Sed at tellus ante. Nunc non dolor ipsum, quis lacinia felis. 
295
 
Sed tristique, leo eu imperdiet laoreet, lacus lacus porta purus, quis laoreet nisi sem non orci. In non consequat enim. 
296
 
Donec lacinia auctor convallis. Nulla facilisi. Nulla tortor mi, accumsan vel cursus nec, porta nec ante.
297
 
 Aenean venenatis elit vel sem sodales vulputate. Donec adipiscing porta tortor, sed sollicitudin erat dapibus id');
298
 
 
299
 
 
 
 
b'\\ No newline at end of file'