L1 Lampiran 1 - CREATE TABLE
CREATE TABLE Anggaran ( Kodeanggaran
Kodeanggaran
NOT NULL,
Kodepengguna
Kodepengguna
NOT NULL,
Kodepejabat
Kodepejabat
NOT NULL,
Tahun
Tahun
NOT NULL,
Volume_fisik
Volume_fisik
NOT NULL,
Rupiah
Rupiah
NOT NULL,
Status
Status
NOT NULL,
Primary Key (Kodeanggaran), Foreign Key (Kodepengguna) REFERENCES Pengguna(Kodepengguna) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key (Kodepejabat) REFERENCES Pejabat(Kodepejabat) ON UPDATE CASCADE ON DELETE NO ACTION);
CREATE TABLE Belanja ( Kodebelanja
Kodebelanja
NOT NULL,
Namabelanja
Namabelanja
NOT NULL,
Kodekegiatan
Kodekegiatan
NOT NULL,
Kodebelanja
Kodebelanja
NOT NULL,
Primary Key (Kodebelanja));
CREATE TABEL Kegiatan (
L2 Namakegiatan
Namakegiatan
NOT NULL,
PPJ
PPJ
NOT NULL,
NTS
NTS
NOT NULL,
Satuan
Satuan
NOT NULL,
Primary Key (Kodekegiatan), Foreign Key (Kodebelanja) REFERENCES Belanja(Kodebelanja) ON UPDATE CASCADE ON DELETE NO ACTION);
CREATE TABLE Pejabat ( Kodepejabat
Kodepejabat
NOT NULL,
NIP
NIP
NOT NULL,
Pejabat_berwenang
Pejabat_berwenang
NOT NULL,
Kodepengguna
Kodepengguna
NOT NULL,
KodePTN
KodePTN
NOT NULL,
KodeKOP
KodeKOP
NOT NULL,
Username
Username
NOT NULL,
Password
Password
NOT NULL,
Primary Key (Kodepejabat));
CREATE TABLE Pengguna (
Primary Key (Kodepengguna), Foreign Key (KodePTN) REFERENCES PTN (KodePTN) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key (KodeKOP) REFERENCES KOPERTIS (KodeKOP)
L3 ON UPDATE CASCADE ON DELETE NO ACTION);
CREATE TABLE PT ( KodePTN
KodePTN
NOT NULL,
Namaptn
Namaptn
NOT NULL,
KodeKOP
KodeKOP
NOT NULL,
Namakop
Namakop
NOT NULL,
KodePTN
KodePTN
NOT NULL,
Notelp
Notelp
NOT NULL,
Primary Key (KodePTN));
CREATE TABLE KOPERTIS (
Primary Key (KodeKOP));
CREATE TABLE TelpPT (
Primary Key (Notelp), Foreign Key (KodePTN) REFERENCES PTN (KodePTN) ON UPDATE CASCADE ON DELETE CASCADE);
CREATE TABLE TelpKOP ( KodeKOP
KodeKOP
NOT NULL,
Notelp
Notelp
NOT NULL,
Primary Key (Notelp), Foreign Key (KodeKOP) references KOPERTIS (KodeKOP)
L4 ON UPDATE CASCADE ON DELETE CASCADE);
CREATE TABLE TelpPTN ( KodePTN
KodePTN
NOT NULL,
Alamat
Alamat
NOT NULL,
Primary Key (Alamat), Foreign Key (KodePTN) REFERENCES PTN(KodePTN) ON UPDATE CASCADE ON DELETE CASCADE);
CREATE TABLE AlamatKOP ( KodeKOP
KodeKOP
NOT NULL,
Alamat
Alamat
NOT NULL,
Primary Key (Alamat), Foreign Key (KodeKOP) REFERENCES KOPERTIS(KodeKOP) ON UPDATE CASCADE ON DELETE CASCADE);
CREATE TABLE Persetujuan ( Kodeanggaran
Kodeanggaran
NOT NULL,
Kodepejabat
Kodepejabat
NOT NULL,
Kodepersetujuan
Kodepersetujuan
NOT NULL,
Tanggal
Tanggal
NOT NULL,
Status
Status
NOT NULL,
Primary Key (Kodeanggaran), Foreign Key (Kodepejabat) REFERENCES Pejabat(Kodepejabat)
L5 ON UPDATE CASCADE ON DELETE NO ACTION); Foreign Key (Kodeanggaran) REFERENCES Anggaran(Kodeanggaran) ON UPDATE CASCADE ON DELETE NO ACTION);
CREATE TABLE Program ( Kodeprog
Kodeprogram
NOT NULL,
Kodekegiatan
Kodekegiatan
NOT NULL,
Namaprog
Namaprogram
NOT NULL,
Satuan_fisik
Satuan_fisik
NOT NULL,
Primary Key (Kodeprog), Foreign Key (Kodekegiatan) REFERENCES Kegiatan(Kodekegiatan) ON UPDATE CASCADE ON DELETE NO ACTION);
CREATE TABLE Review_realiasasi ( Kodereview
Kodereview
NOT NULL,
Tanggal
Tanggal
NOT NULL,
Status
Status
NOT NULL,
Kodepejabat
Kodepejabat
NOT NULL,
Primary Key (Kodereview), Foreign Key (Kodepejabat) REFERENCES Pejabat(Kodepejabat) ON UPDATE CASCADE ON DELETE NO ACTION);
CREATE TABLE Realisasi ( Koderealisasi
Koderealisasi
NOT NULL,
L6 Kodereview
Kodereview
NOT NULL,
Kodeanggaran
Kodeanggaran
NOT NULL,
Bulan
Bulan
NOT NULL,
Rupiah
Rupiah
NOT NULL,
Fisik
Fisik
NOT NULL,
Keterangan
Keterangan
NOT NULL,
Flag
Flag
NOT NULL,
Primary Key (Koderealisasi), Foreign Key (Kodeanggaran) REFERENCES Anggaran(Kodeanggaran) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key (Kodereview) REFERENCES Review_realisasi(Kodereview) ON UPDATE CASCADE ON DELETE NO ACTION);
CREATE TABLE Log ( Kodelog
Kodelog
NOT NULL,
Koderealisasi
Koderealisasi
NOT NULL,
Tanggal
Tanggal
NOT NULL,
Waktu
Waktu
NOT NULL,
Primary Key (Kodelog), Foreign Key Koderealisasi references Realisasi(Koderealisasi) ON UPDATE CASCADE ON DELETE NO ACTION);
CREATE TABLE AnggaranProgram ( Kodeprog
Kodeprog
NOT NULL,
L7 Kodeanggaran
Kodeanggaran
NOT NULL,
Primary Key (Kodeprog, Kodeanggaran), Foreign Key (Kodeprog) REFERENCES Program(Kodeprog) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key (Kodeanggaran) REFERENCES Anggaran(Kodeanggaran) ON UPDATE CASCADE ON DELETE NO ACTION);
CREATE TABLE ProgramRealisasi ( Kodeprog
KodeProgram
NOT NULL,
Koderealisasi
KodeRealisasi
NOT NULL,
Primary Key (Kodeprog, Koderealisasi), Foreign Key (Kodeprog) REFERENCES Program(Kodeprog) ON UPDATE CASCADE ON DELETE NO ACTION, Foreign Key (Koderealisasi) REFERENCES Realisasi(Koderealisasi) ON UPDATE CASCADE ON DELETE NO ACTION);
Lampiran 2 - NORMALISASI
Tahap Normalisasi 1 NF 1. Anggaran (Kodeanggaran, Kodepengguna, Kodepejabat, Tahun, Volume_fisik, Rupiah, Status) 2. Belanja (Kodebelanja, Namabelanja) 3. Kegiatan (Kodekegiatan, Kodebelanja, Namakegiatan, PPJ, NTS, Satuan)
L8 4. Pejabat (Kodepejabat, NIP, Pejabat_berwenang) 5. Pengguna (Kodepengguna, KodePTN, KodeKOP, Usename, Password) 6. PTN (KodePTN, Namaptn) 7. TelpPTN (KodePTN, Notelp) 8. AlamatPTN (KodePTN, Alamat) 9. KOPERTIS (KodeKOP, Namakop) 10. TelpKOPERTIS (KodeKOP, Notelp) 11. AlamatKOPERTIS (KodeKOP, Alamat) 12. Persetujuan (Kodeanggaran, Kodepejabat, Kodepersetujuan, Tanggal, Status) 13. Program (Kodeprog, Kodekegiatan, Namaprog, Satuan_fisik) 14. Review_realiasasi (Kodereview, Tanggal, Status, Kodepejabat) 15. Realisasi (Koderealisasi, Kodereview, Kodeanggaran, Bulan, Rupiah, Fisik, Keterangan, Flag) 16. Log (Kodelog, Koderealisasi, Tanggal, Waktu) 17. AnggaranProgram (Kodeprog, Kodeanggaran) 18. ProgramRealisasi (Kodeprog, Koderealisasi)
Tahap Normalisasi 2 NF 1. Anggaran (Kodeanggaran, Kodepengguna, Kodepejabat, Tahun, Volume_fisik, Rupiah, Status) 2. Belanja (Kodebelanja, Namabelanja) 3. Kegiatan (Kodekegiatan, Kodebelanja, Namakegiatan, PPJ, NTS, Satuan) 4. Pejabat (Kodepejabat, NIP, Pejabat_berwenang) 5. Pengguna (Kodepengguna, KodePTN, KodeKOP, Usename, Password) 6. PTN (KodePTN, Namaptn)
L9 7. TelpPTN (KodePTN, Notelp) 8. AlamatPTN (KodePTN, Alamat) 9. KOPERTIS (KodeKOP, Namakop) 10. TelpKOPERTIS (KodeKOP, Notelp) 11. AlamatKOPERTIS (KodeKOP, Alamat) 12. Persetujuan (Kodeanggaran, Kodepejabat, Kodepersetujuan, Tanggal, Status) 13. Program (Kodeprog, Kodekegiatan, Namaprog, Satuan_fisik) 14. Review_realiasasi (Kodereview, Tanggal, Status, Kodepejabat) 15. Realisasi (Koderealisasi, Kodereview, Kodeanggaran, Bulan, Rupiah, Fisik, Keterangan, Flag) 16. Log (Kodelog, Koderealisasi, Tanggal, Waktu) 17. AnggaranProgram (Kodeprog, Kodeanggaran) 18. ProgramRealisasi (Kodeprog, Koderealisasi)
Tahap Normalisasi 3 NF 1. Anggaran (Kodeanggaran, Kodepengguna, Kodepejabat, Tahun, Volume_fisik, Rupiah, Status) 2. Belanja (Kodebelanja, Namabelanja) 3. Kegiatan (Kodekegiatan, Kodebelanja, Namakegiatan, PPJ, NTS, Satuan) 4. Pejabat (Kodepejabat, NIP, Pejabat_berwenang) 5. Pengguna (Kodepengguna, KodePTN, KodeKOP, Usename, Password) 6. PTN (KodePTN, Namaptn) 7. TelpPTN (KodePTN, Notelp) 8. AlamatPTN (KodePTN, Alamat) 9. KOPERTIS (KodeKOP, Namakop)
L10 10. TelpKOPERTIS (KodeKOP, Notelp) 11. AlamatKOPERTIS (KodeKOP, Alamat) 12. Persetujuan (Kodeanggaran, Kodepejabat, Kodepersetujuan, Tanggal, Status) 13. Program (Kodeprog, Kodekegiatan, Namaprog, Satuan_fisik) 14. Review_realiasasi (Kodereview, Tanggal, Status, Kodepejabat) 15. Realisasi (Koderealisasi, Kodereview, Kodeanggaran, Bulan, Rupiah, Fisik, Keterangan, Flag) 16. Log (Kodelog, Koderealisasi, Tanggal, Waktu) 17. AnggaranProgram (Kodeprog, Kodeanggaran) 18. ProgramRealisasi (Kodeprog, Koderealisasi)
Lampiran 3 - DOMAIN Create domain Kodeanggaran as char(7); Create domain Kodepengguna as char(6); Create domain Kodepejabat as char(5); Create domain Tahun as char(4); Create domain Volume_fisik as int(5); Create domain Rupiah as int(10); Create domain Status as varchar(15); Create domain Kodebelanja as char(7); Create domain Namabelanja as varchar(10); Create domain Kodekegiatan as char(7); Create domain NIP as int(9);
L11 Create domain Pejabat_berwenang as varchar(20); Create domain KodePTN as char(6); Create domain KodeKOP as char(6); Create domain Namaptn as varchar(35); Create domain Alamat as varchar(50); Create domain Notelp as int(12); Create domain Kodepersetujuan as char(8); Create domain Status as varchar(15); Create domain Kodeprog as char(7); Create domain Kodekegiatan as char(7); Create domain Namaprog as varchar(120); Create domain Satuan_fisik as varchar(20); Create domain Kodereview as char(8); Create domain Tanggal as date; Create domain Koderealisasi as char(7); Create domain Bulan as varchar(12); Create domain Rupiah as int(10); Create domain Fisik as int(5); Create domain Keterangan as varchar(15);
Lampiran 4 - INDEX CREATE UNIQUE INDEX Kodeanggaran_idx ON Anggaran (Kodeanggaran); CREATE UNIQUE INDEX Kodebelanja_idx ON Belanja (Kodebelanja);
L12 CREATE UNIQUE INDEX Kodekegiatan_idx ON Kegiatan (Kodekegiatan); CREATE UNIQUE INDEX Kodepejabat_idx ON Pejabat (Kodepejabat); CREATE UNIQUE INDEX Kodepengguna_idx ON Pengguna (Kodepengguna); CREATE UNIQUE INDEX KodePTN_idx ON PTN (KodePTN); CREATE UNIQUE INDEX TelpPTN_idx ON TelpPTN (TelpPTN); CREATE UNIQUE INDEX KodeKOP_idx ON KOPERTIS (KodeKOP); CREATE UNIQUE INDEX TelpKOP_idx ON TelpKOP (TelpKOP); CREATE UNIQUE INDEX Kodepersetujuan_idx ON Persetujuan (Kodepersetujuan); CREATE UNIQUE INDEX KodeProg_idx ON Program (KodeProg) CREATE UNIQUE INDEX Kodereview_idx ON Review_realisasi (Kodereview); CREATE UNIQUE INDEX Koderealisasi_idx ON Realisasi (Koderealisasi); CREATE UNIQUE INDEX Kodelog_idx ON Log (Kodelog); CREATE UNIQUE INDEX Kodeanggaran_idx ON AnggaranProgram (Kodeanggaran); CREATE UNIQUE INDEX Kodeprog_idx ON ProgramRealisasi (Kodeprog); CREATE INDEX Namaptn_idx ON PT (Namaptn); CREATE INDEX NamaKOP_idx ON KOPERTIS (NamaKOP); CREATE INDEX Bulan_idx ON Realisasi (Bulan);
Lampiran 5 - ENTERPRISE CONSTRAINT
CREATE ASSERTION stabilisasi_anggaran CHECK(NOT EXIST(select sum(rupiah), sum(r_rupiah) from anggaran as a, program as p, kegiatan as k, belanja as b, ap as ap, realisasi as r, pengguna as pe where
L13 a.Kodeanggaran=r.Kodeanggaran ap.Kodeprog=p.Kodeprog
and and
ap.Kodeanggaran
=
a.Kodeanggaran
p.Kodekegiatan=k.Kodekegiatan
and and
k.Kodebelanja=b.Kodebelanja and (pe.KodePTN is not null and pe.KodeKOP is not null) and
pe.Kodepengguna=a.Kodepengguna group by Kodebelanja having
sum(rupiah)>=sum(r_rupiah)));
Lampiran 6 - View create view ViewPTN as select pe.KodePTN ,Namaptn, ptn.Alamat, ptn.Notelp, pe.Kodepengguna, username, password from pengguna as pe, ptn as ptn where ptn.KodePTN=pe.KodePTN
create view Viewkopertis as select pe.KodeKOP ,Namakop, k.Alamat, k.Notelp, username, password from pengguna as pe, kopertis as k where k.KodeKOP=pe.KodeKOP
create view Viewadmin as select * from admin
L14
create view Viewguest as select * from guest
create view Viewdikti as select * from dikti
Lampiran 7 – ESTIMASI DISK SPACE
Menghitung ukuran tabel 1. Number of rows in the table = Num_Rows 2. Number of columns = Num_Cols Sum of bytes in all fixed-length columns = Fixed_Data_Size Number of variable-length columns = Num_Variable_Cols Maximum size of all variable-length columns = Max_Var_Size 3. Null Bitmap (Null_Bitmap) = 2 + (( Num_Cols + 7) / 8 ), dibulatkan ke bawah. 4. Total size of variable-length columns (Variable_Data_Size) = 2 + (Num_Variable_Cols x 2) + Max_Var_Size Jika tidak ada variable-length columns, nilai Variable_Data_Size adalah 0. 5. Menghitung row size: Total row size (Row_Size) = Fixed_Data_Size + Variable_Data_Size +
L15 Null_Bitmap +4 Penambahan 4 di belakang adalah untuk row header. 6. Menghitung number of rows per page (8096 free bytes per page): Number of rows per page (Rows_Per_Page) = ( 8096 ) / (Row_Size + 2) Menggunakan pembulatan ke bawah. 7. Number of free rows per page (Free_Rows_Per_Page) = 8096 x ((100 Fill_Factor) / 100) / (Row_Size + 2) Nilai Fill_Factor secara default adalah 100. 8. Menghitung jumlah page yang dibutuhkan: Number of pages (Num_Pages) = Num_Rows / (Rows_Per_Page Free_Rows_Per_Page) Dilakukan pembulatan ke atas. 9. Menghitung jumlah byte yang dibutuhkan (8192 total bytes per page): Table size (bytes) = 8192 x Num_Pages
Menghitung penggunaan space oleh Clustered Index 1. Number of columns in index key = Num_CKey_Cols Sum of bytes in all fixed-length key columns = Fixed_CKey_Size Number of variable-length columns in index key = Num_Variable_CKey_Cols Maximum size of all variable-length key columns = Max_Var_CKey_Size 2. Index Null Bitmap (CIndex_Null_Bitmap) = 2 + (( Num_CKey_Cols + 7) / 8 ) Dilakukan pembulatan ke bawah. 3. Total size of variable length columns (Variable_CKey_Size) = 2 + (Num_Variable_CKey_Cols x 2) + Max_Var_CKey_Size
L16 Jika tidak ada variable-length columns, nilai Variable_CKey_Size adalah 0. 4. Menghitung row size: Total index row size (CIndex_Row_Size) = Fixed_CKey_Size + Variable_CKey_Size + CIndex_Null_Bitmap + 1 + 8 5. Menghitung number of index rows per page (8096 free bytes per page): Number of index rows per page (CIndex_Rows_Per_Page) = ( 8096 ) / (CIndex_Row_Size + 2) Dilakukan pembulatan ke bawah. 6. Menghitung jumlah page yang dibutuhkan untuk masing-masing level indeks. Number of pages (level 0) (Num_Pages_CLevel_0) = (Data_Space_Used / 8192) / CIndex_Rows_Per_Page Number of pages (level 1) (Num_Pages_CLevel_1) = Num_Pages_CLevel_0 / CIndex_Rows_Per_Page Setiap level akan dihitung hingga Number of pages mencapai nilai 1 (root page). Number of pages (level 2) (Num_Pages_CLevel_2) = Num_Pages_CLevel_1 / CIndex_Rows_Per_Page Setiap perhitungan dilakukan pembulatan ke atas. Menghitung total page untuk keseluruhan level: Total number of pages (Num_CIndex_Pages) = Num_Pages_CLevel_0 + Num_Pages_CLevel_1 + Num_Pages_CLevel_2 + ... + Num_Pages_CLevel_n 7. Menghitung ukuran space untuk clustered index (8192 total bytes per page): Clustered index size (bytes) = 8192 x Num_CIndex_Pages
L17 Calculate the Space Used to Store Each Additional Nonclustered Index 1. Number of columns in index key = Num_Key_Cols Sum of bytes in all fixed-length key columns = Fixed_Key_Size Number of variable-length columns in index key = Num_Variable_Key_Cols Maximum size of all variable-length key columns = Max_Var_Key_Size 2. Index Null Bitmap (Index_Null_Bitmap) = 2 + (( Num_Key_Cols + 7) / 8 ) Dilakukan pembulatan ke bawah. 3. Total size of variable length columns (Variable_Key_Size) = 2 + (Num_Variable_Key_Cols x 2) + Max_Var_Key_Size Jika tidak variable-length columns, nilai Variable_Key_Size adalah 0. 4. Menghitung nonleaf index row size: Total nonleaf index row size (NL_Index_Row_Size) = Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap + 1 + 8 5. Menghitung number of nonleaf index rows per page: Number of nonleaf index rows per page (NL_Index_Rows_Per_Page) = ( 8096 ) / (NL_Index_Row_Size + 2) Dilakukan pembulatan ke bawah. 6. Menghitung leaf index row size: Total leaf index row size (Index_Row_Size) = CIndex_Row_Size + Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap + 1 Penambahan 1 adalah untuk index row header. 7. Menghitung number of leaf level index rows per page: Number of leaf level index rows per page (Index_Rows_Per_Page) = ( 8096 ) / (Index_Row_Size + 2)
L18 Dilakukan pembulatan ke bawah. 8. Number of free index rows per page (Free_Index_Rows_Per_Page) = 8096 x ((100 - Fill_Factor) / 100) / Index_Row_Size Dilakukan pembulatan ke bawah. 9. Menghitung jumlah page untuk semua level indeks: Number of pages (level 0) (Num_Pages_Level_0) = Num_Rows / (Index_Rows_Per_Page - Free_Index_Rows_Per_Page) Number of pages (level 1) (Num_Pages_Level_1) = Num_Pages_Level_0 / NL_Index_Rows_Per_Page Setiap level akan dihitung hingga Number of pages mencapai nilai 1 (root page). Setiap perhitungan dilakukan pembulatan ke atas. Total number of pages (Num_Index_Pages) = Num_Pages_Level_0 + Num_Pages_Level_1 +Num_Pages_Level_2 + ... + Num_Pages_Level_n 10. Menghitung ukuran space untuk nonclustered index: Nonclustered index size (bytes) = 8192 x Num_Index_Pages (Sumber dari Anonim, Books Online, Microsoft SQL Server 2000)