~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to userdb/users.sql

  • Committer: drtomc
  • Date: 2008-01-31 21:24:45 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:354
Addressed the rest of sb's suggestions. No doubt this will lead to more suggestions. :-)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
CREATE TABLE user (
 
1
CREATE TABLE login (
2
2
    login       VARCHAR UNIQUE NOT NULL,
3
3
    loginid     SERIAL PRIMARY KEY NOT NULL,
4
4
    nick        VARCHAR,
11
11
    subj_name   VARCHAR NOT NULL,
12
12
    subj_code   VARCHAR NOT NULL,
13
13
    year        CHAR(4) NOT NULL,
14
 
    semester    INT NOT NULL
 
14
    semester    CHAR(1) NOT NULL,
 
15
    url         VARCHAR
15
16
);
16
17
 
17
18
CREATE TABLE group (
18
 
    groupnm       VARCHAR NOT NULL,
 
19
    groupnm     VARCHAR NOT NULL,
19
20
    groupid     SERIAL PRIMARY KEY NOT NULL,
20
21
    offeringid  INT4 REFERENCES offering (offeringid),
21
22
    nick        VARCHAR,
 
23
    createdby   INT4 REFERENCES login (loginid) NOT NULL,
 
24
    epoch       TIMESTAMP NOT NULL,
22
25
    UNIQUE (offeringid, groupnm)
23
26
);
24
27
 
25
28
CREATE TABLE group_invitation (
26
 
    loginid     INT4 REFERENCES user (loginid),
27
 
    groupid     INT4 REFERENCES group (groupid),
 
29
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
 
30
    groupid     INT4 REFERENCES group (groupid) NOT NULL,
 
31
    inviter     INT4 REFERENCES login (loginid) NOT NULL,
 
32
    invited     TIMESTAMP NOT NULL,
 
33
    accepted    TIMESTAMP,
28
34
    UNIQUE (loginid,groupid)
29
35
);
30
36
 
31
37
CREATE TABLE group_member (
32
 
    loginid     INT4 REFERENCES user (loginid),
 
38
    loginid     INT4 REFERENCES login (loginid),
33
39
    groupid     INT4 REFERENCES group (groupid),
34
40
    projectid   INT4 REFERENCES project (projectid),
35
41
    UNIQUE (loginid,projectid),
37
43
);
38
44
 
39
45
CREATE TABLE enrolment (
40
 
    loginid     INT4 REFERENCES user (loginid),
 
46
    loginid     INT4 REFERENCES login (loginid),
41
47
    offeringid  INT4 REFERENCES offering (offeringid),
42
48
    result      INT,
 
49
    special_result VARCHAR,
43
50
    supp_result INT,
 
51
    special_supp_result VARCHAR,
44
52
    notes       VARCHAR,
45
53
    PRIMARY KEY (loginid,offeringid)
46
54
);
47
55
 
48
56
CREATE TABLE ivle_role (
49
 
    loginid     INT4 PRIMARY KEY REFERENCES user (loginid),
 
57
    loginid     INT4 PRIMARY KEY REFERENCES login (loginid),
50
58
    rolenm      VARCHAR
51
59
);
52
60
 
58
66
    deadline    TIMESTAMP
59
67
);
60
68
 
 
69
CREATE TABLE assessed (
 
70
    assessedid  SERIAL PRIMARY KEY NOT NULL,
 
71
    loginid     INT4 REFERENCES login (loginid),
 
72
    groupid     INT4 REFERENCES group (groupid),
 
73
    -- exactly one of loginid and groupid must be non-null
 
74
    CHECK ((loginid IS NOT NULL AND groupid IS NULL)
 
75
        OR (loginid IS NULL AND groupid IS NOT NULL))
 
76
);
 
77
 
61
78
CREATE TABLE project_extension (
62
 
    loginid     INT4 REFERENCES user (loginid),
63
 
    groupid     INT4 REFERENCES group (groupid),
 
79
    assesedid   INT4 REFERENCES assessed (assesedid) NOT NULL,
64
80
    projectid   INT4 REFERENCES project (projectid) NOT NULL,
65
81
    deadline    TIMESTAMP NOT NULL,
66
 
    approver    INT4 REFERENCES user (loginid) NOT NULL,
67
 
    notes       VARCHAR,
68
 
    -- exactly one of loginid and groupid must be non-null
69
 
    CHECK ((loginid IS NOT NULL AND groupid IS NULL)
70
 
        OR (loginid IS NULL AND groupid IS NOT NULL))
 
82
    approver    INT4 REFERENCES login (loginid) NOT NULL,
 
83
    notes       VARCHAR
71
84
);
72
85
 
73
86
CREATE TABLE project_mark (
74
 
    loginid     INT4 REFERENCES user (loginid),
75
 
    groupid     INT4 REFERENCES group (groupid),
 
87
    assesedid   INT4 REFERENCES assessed (assesedid) NOT NULL,
76
88
    projectid   INT4 REFERENCES project (projectid) NOT NULL,
77
89
    componentid INT4,
78
 
    marker      INT4 REFERENCES user (loginid) NOT NULL,
 
90
    marker      INT4 REFERENCES login (loginid) NOT NULL,
79
91
    mark        INT,
80
92
    marked      TIMESTAMP,
81
93
    feedback    VARCHAR,
82
 
    notes       VARCHAR,
83
 
    -- exactly one of loginid and groupid must be non-null
84
 
    CHECK ((loginid IS NOT NULL AND groupid IS NULL)
85
 
        OR (loginid IS NULL AND groupid IS NOT NULL))
 
94
    notes       VARCHAR
86
95
);
87
96
 
88
97
CREATE TABLE problem (
93
102
CREATE TABLE problem_tag (
94
103
    problemid   INT4 REFERENCES tutorial_problem (problemid),
95
104
    tag         VARCHAR NOT NULL,
96
 
    added_by    INT4 REFERENCES user (loginid) NOT NULL,
 
105
    added_by    INT4 REFERENCES login (loginid) NOT NULL,
97
106
    date        TIMESTAMP NOT NULL,
98
107
    PRIMARY KEY (problemid,added_by,tag)
99
108
);
110
119
    testcaseid  INT4 REFERENCES problem_test_case (testcaseid) NOT NULL,
111
120
    tag         VARCHAR NOT NULL,
112
121
    description VARCHAR,
113
 
    added_by    INT4 REFERENCES user (loginid) NOT NULL,
 
122
    added_by    INT4 REFERENCES login (loginid) NOT NULL,
114
123
    date        TIMESTAMP NOT NULL,
115
124
    PRIMARY KEY (testcaseid,added_by,tag)
116
125
);
117
126
 
118
127
CREATE TABLE problem_attempt (
119
128
    problemid   INT4 REFERENCES problem (problemid) NOT NULL,
120
 
    loginid     INT4 REFERENCES user (loginid) NOT NULL,
 
129
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
121
130
    date        TIMESTAMP NOT NULL,
122
131
    attempt     VARCHAR NOT NULL,
123
132
    complete    BOOLEAN NOT NULL,
129
138
CREATE TABLE problem_attempt_breakdown (
130
139
    problemid   INT4 REFERENCES problem (problemid) NOT NULL,
131
140
    testcaseid  INT4 REFERENCES problem_test_case (testcaseid) NOT NULL,
132
 
    loginid     INT4 REFERENCES user (loginid) NOT NULL,
 
141
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
133
142
    date        TIMESTAMP NOT NULL,
134
143
    result      BOOLEAN
135
144
);