-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate.sql
202 lines (182 loc) · 5.74 KB
/
create.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
CREATE SCHEMA SIRIMA;
CREATE DOMAIN YEAR AS CHAR(4);
CREATE TABLE AKUN(
username VARCHAR(50) NOT NULL,
role BOOLEAN NOT NULL,
password VARCHAR(20) NOT NULL,
PRIMARY KEY(username)
);
CREATE TABLE PERIODE_PENERIMAAN(
nomor SMALLINT NOT NULL,
tahun YEAR NOT NULL,
PRIMARY KEY(nomor, tahun)
);
CREATE TABLE JENJANG(
nama CHAR(2) NOT NULL,
PRIMARY KEY(nama)
);
CREATE TABLE JADWAL_PENTING(
nomor SMALLINT NOT NULL,
tahun YEAR NOT NULL,
jenjang CHAR(2) NOT NULL,
waktu_mulai TIMESTAMP NOT NULL,
waktu_selesai TIMESTAMP NOT NULL,
deskripsi VARCHAR(150) NOT NULL,
PRIMARY KEY(nomor, tahun, jenjang, waktu_mulai),
FOREIGN KEY(nomor, tahun) REFERENCES PERIODE_PENERIMAAN(nomor, tahun),
FOREIGN KEY(jenjang) REFERENCES JENJANG(nama)
);
CREATE TABLE PROGRAM_STUDI(
kode SERIAL NOT NULL,
nama VARCHAR(100) NOT NULL,
jenis_kelas VARCHAR(50) NOT NULL,
nama_fakultas VARCHAR(50) NOT NULL,
jenjang CHAR(2) NOT NULL,
PRIMARY KEY(kode),
FOREIGN KEY(jenjang) REFERENCES JENJANG(nama)
);
CREATE TABLE PENERIMAAN_PRODI(
nomor_periode INT NOT NULL,
tahun_periode YEAR NOT NULL,
kode_prodi INT NOT NULL,
kuota INT NOT NULL,
jumlah_pelamar INT,
jumlah_diterima INT,
PRIMARY KEY(nomor_periode, tahun_periode, kode_prodi),
FOREIGN KEY(nomor_periode, tahun_periode) REFERENCES PERIODE_PENERIMAAN(nomor, tahun),
FOREIGN KEY(kode_prodi) REFERENCES PROGRAM_STUDI(kode)
);
CREATE TABLE PELAMAR(
username VARCHAR(50) NOT NULL,
nama_lengkap VARCHAR(100) NOT NULL,
alamat TEXT NOT NULL,
jenis_kelamin CHAR(1) NOT NULL,
tanggal_lahir DATE NOT NULL,
no_ktp CHAR(16) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
PRIMARY KEY(username),
FOREIGN KEY(username) REFERENCES AKUN(username)
);
CREATE TABLE PENDAFTARAN(
id SERIAL NOT NULL,
status_lulus BOOLEAN NOT NULL DEFAULT 'FALSE',
status_verifikasi BOOLEAN NOT NULL DEFAULT 'FALSE',
npm CHAR(10),
pelamar VARCHAR(50) NOT NULL,
nomor_periode SMALLINT NOT NULL,
tahun_periode YEAR NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(pelamar) REFERENCES PELAMAR(username),
FOREIGN KEY(nomor_periode, tahun_periode) REFERENCES PERIODE_PENERIMAAN(nomor, tahun)
);
CREATE TABLE PENDAFTARAN_UUI(
id_pendaftaran INT NOT NULL,
rapot VARCHAR(100) NOT NULL,
surat_rekomendasi VARCHAR(100) NOT NULL,
asal_sekolah VARCHAR(100) NOT NULL,
jenis_sma VARCHAR(50) NOT NULL,
alamat_sekolah TEXT NOT NULL,
nisn VARCHAR(10) NOT NULL,
tgl_lulus DATE NOT NULL,
nilai_uan NUMERIC(10,2) NOT NULL,
PRIMARY KEY(id_pendaftaran),
FOREIGN KEY(id_pendaftaran) REFERENCES PENDAFTARAN(id)
);
CREATE TABLE REKOMENDASI(
tgl_review DATE NOT NULL,
id_pendaftaran INT NOT NULL,
status BOOLEAN NOT NULL,
nilai INT NOT NULL,
komentar TEXT NOT NULL,
PRIMARY KEY(tgl_review, id_pendaftaran),
FOREIGN KEY(id_pendaftaran) REFERENCES PENDAFTARAN_UUI(id_pendaftaran)
);
CREATE TABLE PENDAFTARAN_SEMAS(
id_pendaftaran INT NOT NULL,
status_hadir BOOLEAN NOT NULL,
nilai_ujian INT NOT NULL,
no_kartu_ujian CHAR(10) NOT NULL,
lokasi_kota VARCHAR(100) NOT NULL,
lokasi_tempat VARCHAR(150) NOT NULL,
PRIMARY KEY(id_pendaftaran),
FOREIGN KEY(id_pendaftaran) REFERENCES PENDAFTARAN(id),
FOREIGN KEY(lokasi_kota, lokasi_tempat) REFERENCES LOKASI_UJIAN(kota, tempat)
);
CREATE TABLE PENDAFTARAN_SEMAS_SARJANA(
id_pendaftaran INT NOT NULL,
asal_sekolah VARCHAR(100) NOT NULL,
jenis_sma VARCHAR(50) NOT NULL,
alamat_sekolah TEXT NOT NULL,
nisn VARCHAR(10) NOT NULL,
tgl_lulus DATE NOT NULL,
nilai_uan NUMERIC(10, 2) NOT NULL,
PRIMARY KEY(id_pendaftaran),
FOREIGN KEY(id_pendaftaran) REFERENCES PENDAFTARAN_SEMAS(id_pendaftaran)
);
CREATE TABLE PENDAFTARAN_SEMAS_PASCASARJANA(
id_pendaftaran INT NOT NULL,
nilai_tpa INT NOT NULL,
nilai_toefl INT NOT NULL,
jenjang_terakhir CHAR(2) NOT NULL,
asal_univ VARCHAR(100) NOT NULL,
alamat_univ TEXT NOT NULL,
prodi_terakhir VARCHAR(100) NOT NULL,
nilai_ipk NUMERIC(10, 2) NOT NULL,
no_ijazah VARCHAR(50) NOT NULL,
tgl_lulus DATE NOT NULL,
jenjang CHAR(2) NOT NULL,
nama_rekomender VARCHAR(100),
prop_penelitian VARCHAR(100),
PRIMARY KEY(id_pendaftaran),
FOREIGN KEY(id_pendaftaran) REFERENCES PENDAFTARAN_SEMAS(id_pendaftaran),
FOREIGN KEY(jenjang_terakhir) REFERENCES JENJANG(nama),
FOREIGN KEY(jenjang) REFERENCES JENJANG(nama)
);
CREATE TABLE PEMBAYARAN(
id SERIAL NOT NULL,
waktu_bayar TIMESTAMP NOT NULL,
jumlah_bayar NUMERIC(10,2) NOT NULL,
id_pendaftaran INT NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(id_pendaftaran) REFERENCES PENDAFTARAN_SEMAS(id_pendaftaran)
);
CREATE TABLE LOKASI_UJIAN(
kota VARCHAR(100) NOT NULL,
tempat VARCHAR(150) NOT NULL,
);
CREATE TABLE LOKASI_JADWAL(
kota VARCHAR(100) NOT NULL,
tempat VARCHAR(150) NOT NULL,
nomor_periode SMALLINT NOT NULL,
tahun_periode YEAR NOT NULL,
jenjang CHAR(2) NOT NULL,
waktu_awal TIMESTAMP NOT NULL,
PRIMARY KEY(kota,tempat,nomor_periode,tahun_periode,jenjang,waktu_awal),
FOREIGN KEY(kota,tempat) REFERENCES LOKASI_UJIAN(kota,tempat),
FOREIGN KEY(nomor_periode,tahun_periode,jenjang,waktu_awal) REFERENCES JADWAL_PENTING(nomor,tahun,jenjang,waktu_mulai)
);
CREATE TABLE RUANG_UJIAN(
kota VARCHAR(100) NOT NULL,
tempat VARCHAR(150) NOT NULL,
id SMALLINT NOT NULL,
PRIMARY KEY(kota,tempat,id),
FOREIGN KEY(kota, tempat) REFERENCES LOKASI_UJIAN(kota, tempat)
);
CREATE TABLE PENGAWAS(
nomor_induk VARCHAR(16) NOT NULL,
nama VARCHAR(100) NOT NULL,
no_telp TEXT NOT NULL,
lokasi_kota VARCHAR(100) NOT NULL,
lokasi_tempat VARCHAR(150) NOT NULL,
lokasi_id SMALLINT NOT NULL,
PRIMARY KEY(nomor_induk),
FOREIGN KEY(lokasi_kota, lokasi_tempat, lokasi_id) REFERENCES RUANG_UJIAN(kota, tempat, id)
);
CREATE TABLE PENDAFTARAN_PRODI(
id_pendaftaran INT NOT NULL,
kode_prodi INT NOT NULL,
status_lulus BOOLEAN NOT NULL,
PRIMARY KEY(id_pendaftaran,kode_prodi),
FOREIGN KEY(id_pendaftaran) REFERENCES PENDAFTARAN(id),
FOREIGN KEY(kode_prodi) REFERENCES PROGRAM_STUDI(kode)
);