Lampiran 1 – Implementasi Struktur Tabel
CREATE DATABASE Cantata GO
USE Cantata GO
EXEC sp_addtype KodeMurid, ‘CHAR(6)’ EXEC sp_addtype KodeGuru, ‘CHAR(11)’ EXEC sp_addtype KodeKaryawan, ‘CHAR(3)’ EXEC sp_addtype KodeRuang, ‘CHAR(2)’ EXEC sp_addtype KodeJurusan, ‘CHAR(2)’ EXEC sp_addtype KodeGrade, ‘CHAR(2)’ EXEC sp_addtype KodeLevel, ‘CHAR(3)’ EXEC sp_addtype KodeKelas, ‘CHAR(13)’ EXEC sp_addtype KodeUjian, ‘CHAR(6)’ EXEC sp_addtype KodeJadwal, int
EXEC sp_addtype NoBayarUjian, ‘CHAR(6)’
EXEC sp_addtype NoBayarPembayaranBulanan, ‘CHAR(7)’ EXEC sp_addtype KodeCabang, ‘CHAR(2)’
EXEC sp_addtype KodeJabatan, ‘CHAR(2)’ EXEC sp_addtype Nama, ‘VARCHAR(30)’
EXEC sp_addtype TempatLahir, ‘VARCHAR(30)’ EXEC sp_addtype Alamat, ‘VARCHAR(70)’ EXEC sp_addtype Kota, ‘VARCHAR(15)’ EXEC sp_addtype KodePos, ‘CHAR(5)’ EXEC sp_addtype JenisKelamin, ‘CHAR(1)’ EXEC sp_addtype Kewarganegaraan, ‘CHAR(3)’ EXEC sp_addtype Agama, ‘CHAR(1)’
EXEC sp_addtype PekerjaanMurid, ‘CHAR(1)’
EXEC sp_addtype TeleponHandphone, ‘VARCHAR(15)’ EXEC sp_addtype YaTidak, ‘CHAR(1)’
EXEC sp_addtype StatusSiswa, ‘CHAR(1)’ EXEC sp_addtype Email, ‘VARCHAR(30)’ EXEC sp_addtype StatusNikah, ‘CHAR(1)’ EXEC sp_addtype Tahun, smallint
EXEC sp_addtype Bulan, tinyint EXEC sp_addtype Pertemuan, tinyint
EXEC sp_addtype Instrumen, ‘VARCHAR(15)’ EXEC sp_addtype Grade, ‘VARCHAR(5)’ EXEC sp_addtype LamaTahun, tinyint
EXEC sp_addtype TempatBelajar, ‘VARCHAR(20)’ EXEC sp_addtype Waktu, ‘CHAR(4)’
EXEC sp_addtype Nilai, tinyint EXEC sp_addtype Hari, ‘CHAR(1)’
EXEC sp_addtype StatusAbsensi, ‘CHAR(1)’ EXEC sp_addtype Tanggal, datetime
EXEC sp_addtype NamaRuang, ‘VARCHAR(15)’ EXEC sp_addtype NamaJurusan, ‘VARCHAR(10)’ EXEC sp_addtype NamaCabang, ‘VARCHAR(20)’ EXEC sp_addtype NamaJabatan, ‘VARCHAR(35)’ EXEC sp_addtype Merk, ‘VARCHAR(15)’
EXEC sp_addtype Seri, ‘VARCHAR(5)’ EXEC sp_addtype Relasi, ‘VARCHAR(10)’ EXEC sp_addtype Pekerjaan, ‘VARCHAR(25)’
EXEC sp_addtype PendidikanFormal, ‘VARCHAR(15)’ EXEC sp_addtype NamaSekolah, ‘VARCHAR(25)’ EXEC sp_addtype KotaSekolah, ‘VARCHAR(20)’ EXEC sp_addtype NegaraSekolah, ‘VARCHAR(20)’ EXEC sp_addtype NamaPenghargaan, ‘VARCHAR(30)’ CREATE RULE KodeMurid_Rule
AS
((LEFT (@kode, 2) BETWEEN ‘00’ AND ‘99’) AND (RIGHT (@kode, 4) BETWEEN ‘0001’ AND ‘9999’)) CREATE RULE KodeGuru_Rule
AS
((LEFT (@kode, 5) BETWEEN ‘00001’ AND ‘99999’) AND (SUBSTRING (@kode, 8, 2) BETWEEN ‘01’ AND ‘12’) AND (RIGHT (@kode, 2) BETWEEN ‘00’ AND ‘99’))
CREATE RULE KodeKaryawan_Rule AS
(@kode BETWEEN ‘000’ AND ‘999’) CREATE RULE KodeRuang_Rule AS
(@kode LIKE ‘[A-Z][0-9]’) CREATE RULE KodeJurusan_Rule AS
(@kode LIKE ‘[A-Z][A-Z]’) CREATE RULE KodeGrade_Rule AS
(@kode LIKE ‘[A-Z][0-9]’) CREATE RULE KodeLevel_Rule AS
(@kode BETWEEN ‘001’ AND ‘999’)
CREATE RULE KodeKelas_Rule AS
(LEFT(@kode,5) BETWEEN ‘00001’ AND ‘99999’) AND (SUBSTRING(@kode,10,2) BETWEEN ‘01’ AND ‘12’) AND (RIGHT(@kode,2) BETWEEN ‘00’ AND ‘99’)
CREATE RULE KodeUjian_Rule AS
(LEFT(@kode,2) BETWEEN ‘00’ AND ‘99’) AND (RIGHT(@kode,4) BETWEEN ‘0001’ AND ‘9999’)
CREATE RULE NoBayarUjian_Rule AS
(LEFT(@kode,2) BETWEEN ‘00’ AND ‘99’) AND (RIGHT(@kode,4) BETWEEN ‘0001’ AND ‘9999’)
CREATE RULE NoBayarPembayaranBulanan_Rule AS
(LEFT(@kode,2) BETWEEN ‘00’ AND ‘99’) AND (RIGHT(@kode,5) BETWEEN ‘00001’ AND ‘99999’) CREATE RULE KodeCabang_Rule
AS
(@kode LIKE ‘[A-Z][A-Z]’) CREATE RULE KodePos_Rule AS
(@value LIKE ‘[0-9][0-9][0-9][0-9][0-9]’) CREATE RULE JenisKelamin_Rule
AS
(@value IN (‘P’,’W’))
CREATE RULE Kewarganegaraan_Rule AS
(@value IN (‘WNI’,’WNA’)) CREATE RULE Agama_Rule AS
(@value IN (‘I’,’K’,’X’,’B’,’H’,’L’)) CREATE RULE PekerjaanMurid_Rule AS
(@value IN (‘A’,’B’,’C’,’D’)) CREATE RULE YaTidak_Rule AS
(@value IN (‘Y’,’T’))
CREATE RULE StatusSiswa_Rule AS
(@value IN (‘B’,’C’,’H’,’A’)) CREATE RULE StatusNikah_Rule AS
(@value IN (‘B’,’M’,’C’,’D’)) CREATE RULE Waktu_Rule
AS
((LEFT(@value,2) BETWEEN ‘00’ AND ‘23’) AND (RIGHT(@value,2) BETWEEN ‘00’ AND ‘59’)) CREATE RULE Nilai_Rule
AS
(@value >= 0 AND @value <= 100) CREATE RULE Hari_Rule
AS
CREATE RULE StatusAbsensi_Rule AS
(@value IN (‘M’,’T’))
EXEC SP_BINDRULE ‘KodeMurid_Rule’, ‘KodeMurid’ EXEC SP_BINDRULE ‘KodeGuru_Rule’, ‘KodeGuru’
EXEC SP_BINDRULE ‘KodeKaryawan_Rule’, ‘KodeKaryawan’ EXEC SP_BINDRULE ‘KodeRuang_Rule’, ‘KodeRuang’
EXEC SP_BINDRULE ‘KodeJurusan_Rule’, ‘KodeJurusan’ EXEC SP_BINDRULE ‘KodeGrade_Rule’, ‘KodeGrade’ EXEC SP_BINDRULE ‘KodeLevel_Rule’, ‘KodeLevel’ EXEC SP_BINDRULE ‘KodeKelas_Rule’, ‘KodeKelas’ EXEC SP_BINDRULE ‘KodeUjian_Rule’, ‘KodeUjian’
EXEC SP_BINDRULE ‘NoBayarUjian_Rule’, ‘NoBayarUjian’ EXEC SP_BINDRULE ‘NoBayarPembayaranBulanan_Rule’, ‘NoBayarPembayaranBulanan’
EXEC SP_BINDRULE ‘KodeCabang_Rule’, ‘KodeCabang’ EXEC SP_BINDRULE ‘KodePos_Rule’, ‘KodePos’
EXEC SP_BINDRULE ‘JenisKelamin_Rule’, ‘JenisKelamin’
EXEC SP_BINDRULE ‘Kewarganegaraan_Rule’, ‘Kewarganegaraan’ EXEC SP_BINDRULE ‘Agama_Rule’, ‘Agama’
EXEC SP_BINDRULE ‘PekerjaanMurid_Rule’, ‘PekerjaanMurid’ EXEC SP_BINDRULE ‘YaTidak_Rule’, ‘YaTidak’
EXEC SP_BINDRULE ‘StatusSiswa_Rule’, ‘StatusSiswa’ EXEC SP_BINDRULE ‘StatusNikah_Rule’, ‘StatusNikah’ EXEC SP_BINDRULE ‘Waktu_Rule’, ‘Waktu’
EXEC SP_BINDRULE ‘Nilai_Rule’, ‘Nilai’ EXEC SP_BINDRULE ‘Hari_Rule’, ‘Hari’
CREATE TABLE Cabang
(
kodeCabang KodeCabang NOT NULL, namaCabang NamaCabang NOT NULL,
Primary Key (kodeCabang)
)
CREATE TABLE Jabatan (
kodeJabatan KodeJabatan NOT NULL, namaJabatan NamaJabatan NOT NULL,
Primary Key (kodeJabatan)
)
CREATE TABLE Jurusan (
kodeJurusan kodeJurusan NOT NULL, namaJurusan namaJurusan NOT NULL,
Primary Key (kodeJurusan)
)
CREATE TABLE Grade (
kodeGrade KodeGrade NOT NULL, namaGrade Grade NOT NULL,
Primary Key (kodeGrade)
)
CREATE TABLE Level (
kodeLevel KodeLevel NOT NULL, kodeJurusan KodeJurusan NOT NULL, kodeGrade KodeGrade NOT NULL, harga Money NOT NULL,
Primary Key (kodeLevel),
Foreign Key (kodeJurusan) references Jurusan (kodeJurusan) ON
UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key (kodeGrade) references Grade (kodeGrade) ON UPDATE
CASCADE ON DELETE NO ACTION )
CREATE TABLE Ruang (
kodeRuang KodeRuang NOT NULL, namaRuang NamaRuang NOT NULL, kodeCabang KodeCabang NOT NULL,
Primary Key kodeRuang,
Foreign Key kodeCabang references Cabang (kodeCabang) ON UPDATE
CASCADE ON DELETE NO ACTION )
CREATE TABLE Guru (
kodeGuru KodeGuru NOT NULL, namaGuru Nama NOT NULL,
tempatLahir TempatLahir NOT NULL, tanggalLahir Tanggal NOT NULL, jenisKelamin JenisKelamin NOT NULL,
kewarganegaraan Kewarganegaraan NOT NULL DEFAULT ‘WNI’, agama Agama NOT NULL,
alamat Alamat NOT NULL, kota Kota NOT NULL, kodePos KodePos,
email Email,
statusNikah StatusNikah NOT NULL, kodeCabang KodeCabang NOT NULL,
Primary Key (kodeGuru),
Foreign Key (kodeCabang) references Cabang (kodeCabang) ON UPDATE
CASCADE ON DELETE NO ACTION )
CREATE TABLE RuangJurusan (
kodeRuang KodeRuang NOT NULL, kodeJurusan KodeJurusan NOT NULL,
Primary Key (kodeRuang, kodeJurusan),
Foreign Key (kodeRuang) references Ruang (kodeRuang) ON UPDATE
CASCADE ON DELETE CASCADE,
Foreign Key (kodeJurusan) references Jurusan (kodeJurusan) ON
UPDATE CASCADE ON DELETE CASCADE )
CREATE TABLE GuruLevel (
kodeGuru KodeGuru NOT NULL, kodeLevel KodeLevel NOT NULL,
Primary Key (kodeGuru, kodeLevel),
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE
CASCADE ON DELETE CASCADE,
Foreign Key (kodeLevel) references Level (kodeLevel) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE LevelCabang (
kodeLevel KodeLevel NOT NULL, kodeCabang KodeCabang NOT NULL,
Primary Key (kodeLevel, kodeCabang),
Foreign Key (kodeLevel) references Level (kodeLevel) ON UPDATE
CASCADE ON DELETE CASCADE,
Foreign Key (kodeCabang) references Cabang (kodeCabang) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE Murid (
kodeMurid CHAR(6) NOT NULL, namaMurid VARCHAR(30) NOT NULL, tempatLahir VARCHAR(25) NOT NULL, tanggalLahir DATETIME NOT NULL, jenisKelamin CHAR(1) NOT NULL, Kewarganegaraan CHAR(3) NOT NULL, agama CHAR(1) NOT NULL,
alamat VARCHAR(70) NOT NULL, kota VARCHAR(15) NOT NULL, kodePos CHAR(5) NULL,
pekerjaanMurid CHAR(1) NOT NULL, namaAyah VARCHAR(30) NOT NULL, namaIbu VARCHAR(30) NOT NULL, statusSiswa CHAR(1) NOT NULL,
tanggalRegistrasi Tanggal NOT NULL, kodeKaryawan KodeKaryawan NOT NULL, nominal Money NOT NULL,
kodeKaryawanPembayaran KodeKaryawan NOT NULL,
Primary Key (kodeMurid),
Foreign Key (KodeKaryawan) references Karyawan (KodeKaryawan) ON
UPDATE CASCADE ON DELETE NO ACTION
Foreign Key (KodeKaryawanPembayaran) references Karyawan
(KodeKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION )
CREATE TABLE Karyawan (
kodeKaryawan KodeKaryawan NOT NULL, namaKaryawan Nama NOT NULL,
tempatLahir TempatLahir NOT NULL, tanggalLahir Tanggal NOT NULL, jenisKelamin JenisKelamin NOT NULL,
kewarganegaraan Kewarganegaraan NOT NULL DEFAULT ‘WNI’, agama Agama NOT NULL,
alamat Alamat NOT NULL, kota Kota NOT NULL, kodePos KodePos,
kodeCabang KodeCabang NOT NULL, kodeJabatan KodeJabatan NOT NULL,
Primary Key (kodeKaryawan),
Foreign Key (kodeCabang) references Cabang (kodeCabang) ON UPDATE
CASCADE ON DELETE NO ACTION,
Foreign Key (kodeJabatan) references Jabatan (kodeJabatan) ON
UPDATE CASCADE ON DELETE NO ACTION
)
CREATE TABLE Kelas (
kodeKelas KodeKelas NOT NULL, bulanMulai Bulan NOT NULL, tahunMulai Tahun NOT NULL, kodeGuru KodeGuru NOT NULL, KodeMurid KodeMurid NOT NULL, kodeLevel KodeLevel NOT NULL, kodeCabang KodeCabang NOT NULL,
Primary Key (kodeKelas),
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE
CASCADE ON DELETE CASCADE,
Foreign Key (KodeMurid) references Murid (KodeMurid) ON UPDATE
CASCADE ON DELETE CASCADE,
Foreign Key (kodeLevel) references Level (kodeLevel) ON UPDATE
CASCADE ON DELETE CASCADE,
Foreign Key (kodeCabang) references Cabang (kodeCabang) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE PembayaranBulanan (
noBayar NoBayarPembayaranBulanan NOT NULL, tanggalBayar Tanggal NOT NULL,
tahun Tahun NOT NULL, bulan Bulan NOT NULL,
nominal Money NOT NULL,
kodeKaryawan KodeKaryawan NOT NULL, kodeKelas KodeKelas NOT NULL,
Primary Key (noBayar),
Foreign Key (kodeKaryawan) references Karyawan (kodeKaryawan) ON
UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key (kodeKelas) references Kelas (kodeKelas) ON UPDATE
CASCADE ON DELETE NO ACTION )
CREATE TABLE Ujian (
kodeUjian KodeUjian NOT NULL, kodeKelas KodeKelas NOT NULL, kodeRuang KodeRuang NOT NULL, tanggalUjian Tanggal NOT NULL, waktuMulai Waktu NOT NULL, waktuAkhir Waktu NOT NULL, nilaiUjian Nilai NULL,
kodeKaryawan KodeKaryawan NOT NULL, kodeLevel KodeLevel NOT NULL,
Primary Key (kodeUjian),
Foreign Key (kodeKaryawan) references Karyawan (kodeKaryawan) ON
UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key (kodeKelas) references Kelas (kodeKelas) ON UPDATE
CASCADE ON DELETE NO ACTION,
Foreign Key (kodeRuang) references Ruang (kodeRuang) ON UPDATE
CASCADE ON DELETE NO ACTION,
Foreign Key (kodeLevel) references Level (kodeLevel) ON UPDATE
CASCADE ON DELETE NO ACTION )
CREATE TABLE PembayaranUjian (
noBayar NoBayarUjian NOT NULL, tanggalBayar Tanggal NOT NULL, nominal Money NOT NULL,
kodeKaryawanPembayaran KodeKaryawan NOT NULL, kodeUjian KodeUjian NOT NULL,
Primary Key (noBayar),
Foreign Key (kodeKaryawanPembayaran) references Karyawan
(kodeKaryawan) ON UPDATE CASCADE ON DELETE NO ACTION,
Foreign Key (kodeUjian) references Ujian (kodeUjian) ON UPDATE
CASCADE ON DELETE NO ACTION )
CREATE TABLE JadwalMengajar (
kodeJadwal KodeJadwal NOT NULL, kodeGuru KodeGuru NOT NULL, kodeCabang KodeCabang NOT NULL,
Primary Key (kodeJadwal),
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE
CASCADE ON DELETE CASCADE,
Foreign Key (kodeCabang) references Cabang (kodeCabang) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE JadwalMengajarDetail (
kodeJadwal KodeJadwal NOT NULL, hari Hari NOT NULL,
waktuMulai Waktu NOT NULL, waktuSelesai Waktu NOT NULL,
Primary Key (kodeJadwal, hari, waktuMulai, waktuSelesai)
Foreign Key (kodeJadwal) references JadwalMengajar (kodeJadwal)
ON UPDATE CASCADE ON DELETE CASCADE )
CREATE TABLE Absensi (
kodeKelas KodeKelas NOT NULL, tanggalAbsen Tanggal NOT NULL, tahun Tahun NOT NULL,
bulan Bulan NOT NULL,
pertemuan Pertemuan NOT NULL, waktuMulai Waktu NOT NULL, waktuSelesai Waktu NOT NULL,
statusAbsensi StatusAbsensi NOT NULL,
Primary Key (kodeKelas, tahun, bulan, pertemuan),
Foreign Key (kodeKelas) references Kelas (kodeKelas) ON UPDATE
CASCADE ON DELETE NO ACTION )
CREATE TABLE PenggunaanRuang (
kodeRuang KodeRuang NOT NULL, kodeKelas KodeKelas NOT NULL, hari Hari NOT NULL,
waktuMulai Waktu NOT NULL, waktuAkhir Waktu NOT NULL,
Primary Key (kodeRuang, kodeKelas, hari, waktuMulai, waktuAkhir), Foreign Key (kodeRuang) references Ruang (kodeRuang) ON UPDATE
CASCADE ON DELETE NO ACTION,
Foreign Key (kodeKelas) references Kelas (kodeKelas) ON UPDATE
CASCADE ON DELETE NO ACTION )
CREATE TABLE TeleponMurid (
kodeMurid KodeMurid NOT NULL, telepon TeleponHandphone NOT NULL,
Primary Key (kodeMurid, telepon),
Foreign Key (kodeMurid) references Murid (kodeMurid) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE HandphoneMurid (
kodeMurid KodeMurid NOT NULL,
handphone TeleponHandphone NOT NULL,
Primary Key (kodeMurid, handphone),
Foreign Key (kodeMurid) references Murid (kodeMurid) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE ContactNoAyahMurid (
kodeMurid KodeMurid NOT NULL,
contactNoAyah TeleponHandphone NOT NULL,
Primary Key (kodeMurid, contactNoAyah),
Foreign Key (kodeMurid) references Murid (kodeMurid) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE ContactNoIbuMurid (
kodeMurid KodeMurid NOT NULL,
contactNoIbu TeleponHandphone NOT NULL,
Primary Key (kodeMurid, contactNoIbu),
Foreign Key (kodeMurid) references Murid (kodeMurid) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE DataSaudaraMurid (
kodeMurid KodeMurid NOT NULL, namaSaudara Nama NOT NULL, belajarMusik YaTidak NOT NULL, subjek Instrumen,
diLMC YaTidak,
tempatBelajarSaudara TempatBelajar,
Primary Key (kodeMurid, namaSaudara),
Foreign Key (kodeMurid) references Murid (kodeMurid) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE LatarBelakangMusikMurid (
kodeMurid KodeMurid NOT NULL, instrumen Instrumen NOT NULL, grade Grade NOT NULL,
lamaBelajar LamaTahun NOT NULL,
tempatBelajar TempatBelajar NOT NULL, guruPengajar Nama NOT NULL,
Primary Key (kodeMurid, instrumen),
Foreign Key (kodeMurid) references Murid (kodeMurid) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE AlatMusikDimilikiMurid (
kodeMurid KodeMurid NOT NULL, tipe Instrumen NOT NULL, merk Merk NOT NULL, seri Seri,
Primary Key (kodeMurid, tipe, merk),
Foreign Key (kodeMurid) references Murid (kodeMurid) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE TeleponGuru (
kodeGuru KodeGuru NOT NULL,
telepon TeleponHandphone NOT NULL,
Primary Key (kodeGuru, telepon),
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE HandphoneGuru (
kodeGuru KodeGuru NOT NULL,
handphone TeleponHandphone NOT NULL,
Primary Key (kodeGuru, handphone),
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE
CASCADE ON DELETE CASCADE )
CREATE TABLE DataKeluargaGuru (
kodeGuru KodeGuru NOT NULL, relasi Relasi NOT NULL, namaKeluarga Nama NOT NULL, tempatLahir TempatLahir, tanggalLahir Tanggal, pekerjaan Pekerjaan,
contactNoKeluarga TeleponHandphone,
Primary Key (kodeGuru, relasi, namaKeluarga),
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE CASCADE
ON DELETE CASCADE )
CREATE TABLE LatarBelakangPendidikanGuru (
kodeGuru KodeGuru NOT NULL,
pendidikanFormal PendidikanFormal NOT NULL, namaSekolah NamaSekolah NOT NULL,
kota KotaSekolah NOT NULL, negara NegaraSekolah NOT NULL, jurusan NamaJurusan NOT NULL, tahunWisuda Tahun NOT NULL,
Primary Key (kodeGuru, pendidikanFormal),
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE CASCADE
ON DELETE CASCADE )
CREATE TABLE LatarBelakangMusikGuru (
kodeGuru KodeGuru NOT NULL, instrumen Instrumen NOT NULL, grade Grade NOT NULL,
lamaBelajar LamaTahun NOT NULL,
tempatBelajar TempatBelajar NOT NULL, guruPengajar Nama NOT NULL,
Primary Key (kodeGuru, instrumen),
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE CASCADE
ON DELETE CASCADE )
CREATE TABLE Penghargaan (
kodeGuru KodeGuru NOT NULL,
namaPenghargaan NamaPenghargaan NOT NULL, namaInstitusi NamaSekolah NOT NULL,
tanggalPenghargaan Tanggal NOT NULL,
Primary Key (kodeGuru, namaPenghargaan, tanggalPenghargaan),
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE CASCADE
ON DELETE NO ACTION )
CREATE TABLE PengalamanMengajar (
kodeGuru KodeGuru NOT NULL, mengajar Instrumen NOT NULL,
namaInstitusi NamaSekolah NOT NULL , lamaKerja LamaTahun NOT NULL,
Foreign Key (kodeGuru) references Guru (kodeGuru) ON UPDATE CASCADE
ON DELETE CASCADE )
CREATE TABLE TeleponKaryawan (
kodeKaryawan KodeKaryawan NOT NULL, telepon TeleponHandphone NOT NULL,
Primary Key (kodeKaryawan, telepon),
Foreign Key (kodeKaryawan) references Karyawan (kodeKaryawan) ON
UPDATE CASCADE ON DELETE CASCADE )
CREATE TABLE HandphoneKaryawan (
kodeKaryawan KodeKaryawan NOT NULL, handphone TeleponHandphone NOT NULL,
Primary Key (kodeKaryawan, handphone),
Foreign Key (kodeKaryawan) references Karyawan (kodeKaryawan) ON
UPDATE CASCADE ON DELETE CASCADE )
Lampiran 2 – Implementasi Enterprise Constraints
1. Validitas data waktuMulai dan waktuSelesai. Nilai dari waktuMulai haruslah
lebih kecil dari waktuSelesai. Constraint ini ditambahkan di setiap tabel yang
mengandung kedua atribut ini.
ALTER TABLE Ujian
ADD CONSTRAINT UjianValidWaktu
CHECK ( waktuMulai < waktuSelesai )
ALTER TABLE Absensi
ADD CONSTRAINT AbsensiValidWaktu
CHECK ( waktuMulai < waktuSelesai )
ALTER TABLE PenggunaanRuang
ADD CONSTRAINT PenggunaanRuangValidWaktu
CHECK ( waktuMulai < waktuSelesai )
ALTER TABLE JadwalMengajarDetail ADD CONSTRAINT UjianValidWaktu
2. Validitas JadwalMengajar guru, setiap guru memiliki jadwal mengajar di tiap
cabang, dalam hal ini jadwal-jadwal tersebut tidak boleh terjadi tabrakan.
CREATE TRIGGER ValidJadwalMengajar
ON JadwalMengajar FOR INSERT, UPDATE AS
IF EXISTS
( SELECT * FROM inserted i LEFT JOIN JadwalMengajar j ON i.kodeGuru=j.kodeGuru AND i.kodeCabang=j.kodeCabang) BEGIN
ROLLBACK TRAN END
CREATE TRIGGER ValidJadwalMengajarDetail
ON JadwalMengajarDetail FOR INSERT, UPDATE AS
IF EXISTS (
SELECT * FROM inserted i LEFT JOIN JadwalMengajarDetail j ON j.kodeJadwal=i.kodeJadwal AND i.Hari=j.Hari
WHERE ( i.waktuMulai > j.waktuMulai ) OR
(i.waktuMulai=j.waktuMulai)) AND ( i.waktuMulai < j.waktuSelesai ) ) BEGIN ROLLBACK TRAN END
3. Validitas jadwal penggunaan ruang. Seorang guru tidak boleh mengajar di beda
ruang dalam waktu yang bersamaan. Suatu ruang tidak boleh digunakan lebih dari
satu kelas dalam kurun waktu tertentu.
CREATE TRIGGER ValidPenggunaanRuang
ON PenggunaanRuang FOR INSERT, UPDATE AS
IF NOT EXISTS (
SELECT * FROM inserted i LEFT JOIN Kelas k
ON i.kodeKelas=k.kodeKelas LEFT JOIN PenggunaanRuang p
ON k.kodeKelas=p.kodeKelas WHERE
( i.waktuMulai > p.waktuMulai ) OR
(i.waktuMulai=p.waktuMulai)) AND ( i.waktuMulai < p.waktuSelesai ) ) OR EXISTS (
SELECT * FROM inserted i LEFT JOIN PenggunaanRuang p ON i.kodeRuang=p.kodeRuang
WHERE i.Hari=p.Hari AND
( i.waktuMulai > p.waktuMulai ) OR (i.waktuMulai=p.waktuMulai)) AND ( i.waktuMulai < p.waktuSelesai ) ) BEGIN ROLLBACK TRAN END
4. Validitas kode guru. Digit ke-6 dari Kode guru yang dimasukan harus sesuai
dengan kode lokasi tempat guru tersebut terdaftar.
CREATE TRIGGER ValidKodeGuru ON Guru FOR INSERT, UPDATE AS
IF NOT EXISTS (SELECT * FROM inserted WHERE inserted.KodeCabang = SUBSTRING(inserted.KodeGuru,6,2) )
BEGIN
ROLLBACK TRAN END
5. Validitas kode kelas. Digit ke-6 dari Kode Kelas yang dimasukan harus sesuai
dengan kode jurusan, dan digit ke-8 dari Kode Kelas yang dimasukkan harus
sesuai dengan Kode Cabang tempat kelas tersebut berjalan.
CREATE TRIGGER ValidKodeKelas ON Kelas FOR INSERT, UPDATE AS
IF NOT EXISTS (SELECT * FROM inserted A JOIN [Level] B on A.KodeLevel = B.KodeLevel
WHERE B.KodeJurusan = SUBSTRING(inserted.KodeKelas,6,2) and
inserted.KodeCabang = SUBSTRING(inserted.KodeKelas,8,2) )
BEGIN
ROLLBACK TRAN END
6. Validitas kode murid. Digit pertama dari Kode Murid yang dimasukan harus
sesuai dengan tahun dari tanggal registrasi.
CREATE TRIGGER ValidKodeMurid ON Murid FOR INSERT, UPDATE AS
IF NOT EXISTS (SELECT * FROM inserted WHERE SUBSTRING(KodeMurid,1,2) =
SUBSTRING(CONVERT(char(4),YEAR(TanggalRegistrasi)), 3, 2)) BEGIN
ROLLBACK TRAN END
7. Validitas kode ujian. Digit pertama dari Kode Ujian yang dimasukan harus sesuai
dengan tahun dari tanggal Ujian.
CREATE TRIGGER ValidKodeUjian ON Ujian FOR INSERT, UPDATE AS
IF NOT EXISTS (SELECT * FROM inserted WHERE SUBSTRING(KodeUjian,1,2) =
SUBSTRING(CONVERT(char(4),YEAR(TanggalUjian)), 3, 2)) BEGIN
ROLLBACK TRAN END
8. Validitas no bayar ujian. Digit pertama dari No bayar yang dimasukan harus
sesuai dengan tahun dari tanggal bayar ujian.
CREATE TRIGGER ValidNoBayarUjian
ON PembayaranUjian FOR INSERT, UPDATE AS
IF NOT EXISTS (SELECT * FROM inserted WHERE SUBSTRING(NoBayar,1,2) =
SUBSTRING(CONVERT(char(4),YEAR(TanggalBayar)), 3, 2)) BEGIN
ROLLBACK TRAN END
9. Validitas no bayar bulanan. Digit pertama dari No bayar yang dimasukan harus
sesuai dengan tahun dari tanggal bayar bulanan.
CREATE TRIGGER ValidNoBayarBulanan
ON PembayaranBulanan FOR INSERT, UPDATE AS
IF NOT EXISTS (SELECT * FROM inserted WHERE SUBSTRING(NoBayar,1,2) =
SUBSTRING(CONVERT(char(4),YEAR(TanggalBayar)), 3, 2)) BEGIN
ROLLBACK TRAN END
10. Validitas waktu mulai dan waktu selesai harus sesuai dengan jam operasional
yaitu dari jam 10.00 sampai jam 20.00.
ALTER TABLE Ujian
ADD CONSTRAINT UjianValidWaktu CHECK waktuMulai >= ’1000’
AND waktuSelesai <= ’2000’
ALTER TABLE Absensi
ADD CONSTRAINT AbsensiValidWaktu CHECK waktuMulai >= ’1000’
AND waktuSelesai >= ’2000’
ALTER TABLE PenggunaanRuang
ADD CONSTRAINT PenggunaanRuangValidWaktu CHECK waktuMulai >= ’1000’
AND waktuSelesai <= ’2000’
ALTER TABLE JadwalMengajarDetail ADD CONSTRAINT UjianValidWaktu CHECK waktuMulai >= ’1000’
Lampiran 3 – Implementasi Indeks
CREATE UNIQUE CLUSTERED INDEX IdxMurid_KodeMurid ON Murid (KodeMurid)
CREATE INDEX IdxMurid_NamaMurid ON Murid (NamaMurid)
CREATE INDEX IdxMurid_TanggalRegistrasi ON Murid (TanggalRegistrasi)
CREATE INDEX IdxMurid_KodeCabang ON Murid (KodeCabang)
CREATE UNIQUE CLUSTERED INDEX IdxGuru_KodeGuru ON Guru(KodeGuru)
CREATE INDEX IdxGuru_NamaGuru ON Guru (NamaGuru)
CREATE INDEX IdxGuru_KodeCabang ON Guru (KodeCabang)
CREATE UNIQUE CLUSTERED INDEX IdxKaryawan_KodeKaryawan ON Karyawan(KodeKaryawan)
CREATE INDEX IdxKaryawan_NamaKaryawan ON Karyawan (NamaKaryawan)
CREATE UNIQUE CLUSTERED INDEX IdxRuang_KodeRuang ON Ruang(KodeRuang)
CREATE INDEX IdxRuang_NamaRuang ON Ruang (NamaRuang)
CREATE UNIQUE CLUSTERED INDEX IdxJurusan_KodeJurusan ON Jurusan(KodeJurusan)
CREATE INDEX IdxJurusan_NamaJurusan ON Jurusan (NamaJurusan)
CREATE UNIQUE CLUSTERED INDEX IdxGrade_KodeGrade ON Grade(KodeGrade)
CREATE INDEX IdxGrade_NamaGrade ON Grade (NamaGrade)
CREATE UNIQUE CLUSTERED INDEX IdxLevel_KodeLevel ON Level(KodeLevel)
CREATE INDEX IdxLevel_KodeJurusan ON Level (KodeJurusan)
CREATE UNIQUE CLUSTERED INDEX IdxKelas_KodeKelas ON Kelas(KodeLevel)
CREATE INDEX IdxKelas_KodeGuru ON Kelas (KodeGuru)
CREATE INDEX IdxKelas_KodeLevel ON Kelas (KodeLevel)
CREATE UNIQUE CLUSTERED INDEX IdxPembBulanan_NoBayar ON PembayaranBulanan(NoBayar)
CREATE INDEX IdxPembBulanan_TanggalBayarBulanan ON PembayaranBulanan (TanggalBayar)
CREATE INDEX IdxPembBulanan_KodeKelas ON PembayaranBulanan (KodeKelas)
CREATE UNIQUE CLUSTERED INDEX IdxUjian_KodeUjian ON Ujian(KodeUjian)
CREATE INDEX IdxUjian_KodeKelas ON Ujian (KodeKelas)
CREATE UNIQUE CLUSTERED INDEX IdxPembUjian_NoBayar ON PembayaranUjian(KodeUjian)
CREATE INDEX IdxPembUjian_TanggalBayar ON PembayaranUjian (KodeKelas)
CREATE UNIQUE CLUSTERED INDEX IdxCabang_KodeCabang ON Cabang(KodeCabang)
CREATE INDEX IdxCabang_NamaCabang ON Cabang (NamaCabang)
CREATE UNIQUE CLUSTERED INDEX IdxJabatan_KodeJabatan ON Jabatan(KodeJabatan)
CREATE INDEX IdxJabatan_NamaJabatan ON Jabatan (NamaJabatan)
CREATE INDEX IdxAbsensi_KodeKelas ON Absensi(KodeKelas)
CREATE INDEX IdxAbsensi_TanggalAbsensi ON Absensi (TanggalAbsensi)
CREATE CLUSTERED INDEX IdxJadwalMengajar_KodeGuruKodeCabang ON JadwalMengajar(KodeGuru,KodeCabang)
CREATE INDEX idxJadwal_KodeGuru ON JadwalMengajar (KodeGuru) CREATE INDEX idxJadwal_KodeCabang ON JadwalMengajar (KodeCabang)
CREATE CLUSTERED INDEX IdxDetailKodeJadwalHariWaktuMulaiWaktuSelesai ON JadwalMengajarDetail(KodeJadwal, Hari, WaktuMulai, WaktuSelesai)
CREATE INDEX idxDetailKodeJadwalHari
ON JadwalMengajarDetail(KodeJadwal, Hari) CREATE INDEX idxDetailHari
ON JadwalMengajarDetail (Hari) CREATE INDEX idxDetailKodeJadwal
ON JadwalMengajarDetail (KodeJadwal)
CREATE CLUSTERED INDEX idxPenggunaan_KodeKelasKodeRuang ON PenggunaanRuang(KodeKelas, KodeRuang)
CREATE INDEX idxPenggunaan_Hari ON PenggunaanRuang(Hari) CREATE INDEX idxPenggunaan_Ruang ON PenggunaanRuang (KodeRuang) CREATE INDEX idxPenggunaan_Kelas ON PenggunaanRuang (KodeKelas)
Lampiran 4 – 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 +
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)
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
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
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
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)
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)
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)
Lampiran 5 – Implementasi View
CREATE VIEW ViewProfileMurid As
Select A.KodeMurid, A.NamaMurid, A.TempatLahir, A.TanggalLahir,
A.JenisKelamin, A.Kewarganegaraan, A.Agama, A.Alamat, A.Kota, A.KodePos, A.PekerjaanMurid, A.NamaAyah, A.NamaIbu, A.StatusSiswa, B.NamaCabang
From Murid A
Left Join Cabang B on A.KodeCabang = B.KodeCabang
CREATE VIEW ViewTeleponHandphoneMurid As
(
Select A.KodeMurid, A.NamaMurid, Contact = B.Telepon From Murid A
Left Join TeleponMurid B on A.KodeMurid = B.KodeMurid )
union
(
Select A.KodeMurid, A.NamaMurid, Contact = C.Handphone From Murid A
Left Join HandphoneMurid C on A.KodeMurid = C.KodeMurid )
CREATE VIEW ViewContactOrangTuaMurid As
(
Select A.KodeMurid, A.NamaMurid, Contact = B.ContactNoAyah From Murid A
Left Join ContactNoAyahMurid B on A.KodeMurid = B.KodeMurid )
union
(
Select A.KodeMurid, A.NamaMurid, Contact = C.ContactNoIbu From Murid A
Left Join ContactNoIbuMurid C on A.KodeMurid = C.KodeMurid )
CREATE VIEW ViewDataSaudaraMurid As
Select A.KodeMurid, A.NamaMurid, Contact = B.ContactNoAyah From Murid A
Left Join DataSaudaraMurid B on A.KodeMurid = B.KodeMurid
CREATE VIEW ViewLatarBelakangMusikMurid As
Select A.KodeMurid, A.NamaMurid, B.Instrumen,
B.Grade, B.LamaBelajar, B.TempatBelajar, B.GuruPengajar
From Murid A
CREATE VIEW ViewAlatMusikMurid As
Select A.KodeMurid, A.NamaMurid, B.Tipe, B.Merk, B.Seri From Murid A
Left Join AlatMusikDimilikiMurid B on A.KodeMurid = B.KodeMurid CREATE VIEW ViewProfileKaryawan
As
Select A.KodeKaryawan, A.NamaKaryawan, A.TempatLahir,
A.TanggalLahir, A.JenisKelamin, A.Kewarganegaraan, A.Agama, A.Alamat, A.Kota, A.KodePos, A.KodeCabang, A.KodeJabatan, B.NamaJabatan, C.NamaCabang
From Karyawan A
Left Join Jabatan B on A.KodeJabatan = B.KodeJabatan Left Join Cabang C on A.KodeCabatan = C.KodeCabatan CREATE VIEW ViewTeleponHandphoneKaryawan
As
(
Select A.KodeKaryawan, A.NamaKaryawan, Contact = B.Telepon From Karyawan A
Left Join TeleponKaryawan B on A.KodeKaryawan = B.KodeKaryawan )
union
(
Select A. KodeKaryawan, A.NamaKaryawan, Contact = C.Handphone From Karyawan A
Left Join HandphoneKaryawan C on A.KodeKaryawan = C.KodeKaryawan )
CREATE VIEW ViewProfileGuru As
Select A.KodeGuru, A.NamaGuru, A.TempatLahir, A.TanggalLahir,
A.JenisKelamin, A.Kewarganegaraan, A.Agama, A.Alamat, A.Kota, A.KodePos, A.Email, A.StatusNikah, B.NamaCabang
From Guru A
Left Join Cabang B on A.KodeCabang = B.KodeCabang CREATE VIEW ViewTeleponHandphoneGuru
As
(
Select A.KodeGuru, A.NamaGuru, Contact = B.Telepon From Guru A
Left Join TeleponGuru B on A.KodeGuru = B.KodeGuru )
union
(
Select A.KodeGuru, A.NamaGuru, Contact = C.Handphone From Guru A
Left Join HandphoneGuru C on A.KodeGuru = C.KodeGuru )
CREATE VIEW ViewDataKeluargaGuru As
Select A.KodeGuru, A.NamaGuru, B.Relasi,
B.NamaKeluarga, B.TempatLahir, B.TanggalLahir, B.Pekerjaan, B.ContactNoKeluarga
From Guru A
Left Join DataKeluargaGuru B on A.KodeGuru = B.KodeGuru CREATE VIEW ViewLatarBelakangPendidikanGuru
As
Select A.KodeGuru, A.NamaGuru, B.PendidikanFormal,
B.NamaSekolah, B.Kota, B.Negara, B.Jurusan, B.TahunWisuda
From Guru A
Left Join LatarBelakangPendidikanGuru B on A.KodeGuru = B.KodeGuru CREATE VIEW ViewLatarBelakangMusikGuru
As
Select A.KodeGuru, A.NamaGuru, B.Instrumen,
B.Grade, B.LamaBelajar, B.TempatBelajar, B.GuruPengajar
From Guru A
Left Join LatarBelakangMusikGuru B on A.KodeGuru = B.KodeGuru CREATE VIEW ViewPenghargaanGuru
As
Select A.KodeGuru, A.NamaGuru, B.NamaPenghargaan,
B.NamaInstitusi, B.TanggalPenghargaan
From Guru A
Left Join Penghargaan B on A.KodeGuru = B.KodeGuru CREATE VIEW ViewPengalamanMengajarGuru
As
Select A.KodeGuru, A.NamaGuru, B.Mengajar,
B.NamaInstitusi, B.LamaKerja
From Guru A
Left Join PengalamanMengajar B on A.KodeGuru = B.KodeGuru
CREATE VIEW ViewRegistrasiMurid As
Select A.KodeMurid, A.NamaMurid, A.TanggalRegistrasi, B.NamaCabang
,B.NamaKaryawan
From Murid A
Left Join Cabang B on A.KodeCabang = B.KodeCabang Left Join Karyawan C on A.KodeKaryawan=C.KodeKaryawan
CREATE VIEW ViewPembayaranRegistrasi As
Select A.KodeMurid, A.NamaMurid, A.TanggalRegistrasi,A.Nominal, A.
KodeKaryawanPembayaran ,B.NamaKaryawan,C.NamaCabang
From Murid A
Left Join Karyawan B on A.KodeKaryawan=B.KodeKaryawan Left Join Cabang C on A.KodeCabang = C.KodeCabang
CREATE VIEW ViewPembayaran Bulanan As
Select A.NoBayar, A.TanggalBayar, A.Tahun, A.Bulan, A.Nominal,
A.KodeKelas,
A.KodeKaryawan,B.NamaKaryawan, A.KodeCabang,D.KodeCabang, ,E.KodeMurid,E.NamaMurid
From PembayaranBulanan
Left Join Karyawan B on A.KodeKaryawan=B.KodeKaryawan Join Kelas C on A.KodeKelas=C.KodeKelas
Left Join Cabang D on C.KodeCabang = D.KodeCabang Left Join Murid E on C.KodeMurid=E.KodeMurid CREATE VIEW ViewUjian
As
Select A. KodeUjian, A.KodeKelas, A. KodeRuang, A.TanggalUjian,
A.WaktuMulai, A.WaktuAkhir, A.NilaiUjian, A. KodeKaryawan, A.KodeLevel,C.KodeMUrid,C.namaMurid,D.namaCabang,
F.NamaJurusan,G.NamaGrade,H.NamaRuang
From Ujian A
Join Kelas B on A.kodeKelas =B.KodeKelas Join Murid C on B.KodeMurid=C.KodeMurid Join cabang D on B..KodeCabang=D.Kodecabang Join Level E on B.Kodelevel=E.Kodelevel
Join Jurusan F on F.KodeJurusan=E.Kodejurusan Join Grade G on G.KOdeGrade=E.KodeGrade
Join Ruang H on A.kodeRuang=H.KOdeRuang Create view ViewPembayaranUjian
As
Select A.NoBayar, A.TanggalBayar, A.Nominal,
A.KodeKaryawanPembayaran, A.KodeUjian ,B.KodeKelas, D.Kodemurid, D.namaMurid,E.NamaCabang,F.NamaKaryawan
From PembayaranUjianUjian A
Join Ujian B on A.kodeujian=B.KodeUjian Join Kelas C on B.kodeKelas =C.KodeKelas Join Murid D on C.KodeMurid=D.KodeMurid Join cabang E on C.KodeCabang=E.Kodecabang
Join Karyawan F on A. KodeKaryawanPembayaran=F.KodeKaryawan
CREATE VIEW ViewJadwalKesediaanGuruPerCabang As
Select A.KodeJadwal, A.KodeGuru,
A.KodeCabang,B.NamaGuru,C.NamaCabang, D.Hari, D.WaktuMulai, D.WaktuSelesai
From JadwalMengajar A
Join Guru B on A.kodeGuru=B.KodeGuru
Join cabang C on A.KodeCabang=C.Kodecabang
Join JadwalMengajarDetail D on A. KodeJadwal=D.KodeJadwal CREATE VIEW ViewGuruyangtersediauntukTiaplevel
As
Select A.KodeGuru, A.KodeLevel,
A.KodeCabang,B.NamaGuru,D.namaJurusan, E.NamaGrade, F.NamaCabang
From GuruLevel A
Join Guru B on A.kodeGuru=B.KodeGuru Join Level C on A.KodeLevel=C.KodeLevel
Join Jurusan D on C. KodeJurusan=D.KodeJurusan Join Grade E on C.kodeGrade=E.KodeGrade
Join Cabang F on A.kodeCabang=F.KodeCabang CREATE VIEW ViewLevelyangtersediaPadacabang As
Select A.KodeLevel,
A.KodeCabang,B.NamaCabang,C.Harga,D.Namajurusan,E.namaGrade
From LevelCabang A
Join Cabang B on A.kodeCabang=B.KodeCabang Join Level C on A.KodeLevel=C.KodeLevel
Join Jurusan D on C. KodeJurusan=D.KodeJurusan Join Grade E on C.kodeGrade=E.KodeGrade
CREATE VIEW ViewKelas As
Select A.KodeKelas, A.BulanMulai, A.TahunMulai, A.KodeGuru,
A.KodeLevel,B.KodeMurid,B.NamaMurid,B.StatusSiswa,C.Harga,
D.NamaJurusan,E.NamaGrade, F.NamaCabang,G.NamaGuru, H.KodeRuang, H.Hari, H.WaktuMulai, H.WaktuSelesai,
I.NamaRuang
From Kelas A
Join Murid B on A.KodeMurid=B.KodeMurid Join Level C on A.KodeKelas=C.KodeKelas
Join Jurusan D on C.KodeJurusan=D.KodeJurusan Join Grade E on C.kodeGrade=E.KodeGrade
Join Cabang F on A.KodeCabang=F.KodeCabang Join Guru G on A.KodeGuru=G.KodeGuru
Join PenggunaanRuang H on A.KodeKelas=H.KodeKelas Join Ruang I on H.KodeRuang=I.KodeRuang
CREATE VIEW ViewAbsensiKelas As
Select A.KodeKelas, B.TanggalAbsen, B.Tahun, B.Bulan,
B.Pertemuan, B.WaktuMulai, B.WaktuSelesai, B.StatusAbsensi C.NamaGuru,D.KodeMurid, D.NamaMurid,E.NamaCabang
From Kelas A
Join Absensi B on A.KodeKelas=B.KodeKelas Join Guru C on A.KodeGuru=C.KodeGuru Join Murid D on A.KodeMurid=D.KodeMurid Join Cabang E on A.KodeCabang=E.KodeCabang CREATE VIEW ViewPenggunaanRuang
As
Select A.KodeRuang, A.KodeKelas, A.Hari,
A.WaktuMulai, A.WaktuAkhir, B.NamaRuang, C.KodeCabang, D.NamaCabang
From PenggunaanRuang A
Join Ruang B on A.KodeRuang=B.KodeRuang Join Kelas C on A.KodeKelas=C.KodeKelas Join Cabang D on C.KodeCabang=D.KodeCabang
Lampiran 6 – Implementasi user dan hak aksesnya
EXEC sp_addrole ‘Principal’ EXEC sp_addrole ‘Management’ EXEC sp_addrole ‘KaBagAdmin’ EXEC sp_addrole ‘AdminManagement’ EXEC sp_addrole ‘AdminEducation’ EXEC sp_addrole ‘KaCab’
EXEC sp_addrole ‘AdminCab’ GRANT SELECT ON Murid TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Guru TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Karyawan TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Ruang TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Jurusan TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Grade TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Level TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Kelas TO
Principal, Management, KaBagAdmin, AdminEducation, KaCab, AdminCab
GRANT SELECT ON PembayaranBulanan TO
Principal, Management, KaBagAdmin, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Ujian TO
Principal, Management, KaBagAdmin, AdminEducation, KaCab, AdminCab
GRANT SELECT ON PembayaranUjian TO
Principal, Management, KaBagAdmin, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Cabang TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Jabatan TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON Absensi TO
Principal, Management, KaBagAdmin, AdminEducation, KaCab, AdminCab
GRANT SELECT ON JadwalMengajar TO
Principal, Management, KaBagAdmin, AdminEducation, KaCab, AdminCab
GRANT SELECT ON JadwalMengajarDetail TO
Principal, Management, KaBagAdmin, AdminEducation, KaCab, AdminCab
GRANT SELECT ON PenggunaanRuang TO
Principal, Management, KaBagAdmin, AdminEducation, KaCab, AdminCab
GRANT SELECT ON RuangJurusan TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON GuruLevel TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON LevelCabang TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON TeleponMurid TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab, AdminCab
GRANT SELECT ON HandphoneMurid TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab, AdminCab
GRANT SELECT ON ContactNoAyahMurid TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab, AdminCab
GRANT SELECT ON ContactNoIbuMurid TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab, AdminCab
GRANT SELECT ON DataSaudaraMurid TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab
GRANT SELECT ON LatarBelakangMusikMurid TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab
GRANT SELECT ON AlatMusikDimilikiMurid TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab
GRANT SELECT ON TeleponGuru TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON HandphoneGuru TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON DataKeluargaGuru TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab
GRANT SELECT ON LatarBelakangPendidikanGuru TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab
GRANT SELECT ON LatarBelakangMusikGuru TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab
GRANT SELECT ON Penghargaan TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab
GRANT SELECT ON PengalamanMengajar TO
Principal, Management, KaBagAdmin, AdminManagement, KaCab
GRANT SELECT ON TeleponKaryawan TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT SELECT ON HandphoneKaryawan TO
Principal, Management, KaBagAdmin, AdminManagement, AdminEducation, KaCab, AdminCab
GRANT INSERT, UPDATE ON Murid TO AdminManagement
GRANT UPDATE ON Murid (TanggalRegistrasi, KodeKaryawan, KodeCabang,
Nominal, KodeKaryawanPembayaran) TO AdminCab
GRANT INSERT, UPDATE ON Guru TO AdminManagement GRANT INSERT, UPDATE ON Karyawan TO AdminManagement GRANT INSERT, UPDATE ON Ruang TO AdminManagement GRANT INSERT, UPDATE ON Jurusan TO AdminManagement GRANT INSERT, UPDATE ON Grade TO AdminManagement GRANT INSERT, UPDATE ON Level TO AdminManagement GRANT INSERT, UPDATE ON Kelas TO AdminEducation
GRANT INSERT, UPDATE ON PembayaranBulanan TO AdminCab GRANT INSERT, UPDATE ON Ujian TO AdminEducation
GRANT INSERT ON PembayaranUjian TO AdminCab
GRANT INSERT, UPDATE ON Cabang TO AdminManagement GRANT INSERT, UPDATE ON Jabatan TO AdminManagement
GRANT INSERT, UPDATE, DELETE ON Absensi TO AdminEducation GRANT INSERT ON JadwalMengajar TO AdminEducation
GRANT INSERT ON PenggunaanRuang TO AdminEducation
GRANT INSERT, UPDATE, DELETE ON RuangJurusan TO AdminManagement GRANT INSERT, UPDATE, DELETE ON GuruLevel TO AdminManagement GRANT INSERT, UPDATE, DELETE ON LevelCabang TO AdminManagement GRANT INSERT, UPDATE, DELETE ON TeleponMurid TO AdminManagement GRANT INSERT, UPDATE, DELETE ON HandphoneMurid TO AdminManagement GRANT INSERT, UPDATE, DELETE ON ContactNoAyahMurid TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON ContactNoIbuMurid TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON DataSaudaraMurid TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON LatarBelakangMusikMurid TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON AlatMusikDimilikiMurid TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON TeleponGuru TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON HandphoneGuru TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON DataKeluargaGuru TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON LatarBelakangPendidikanGuru TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON LatarBelakangMusikGuru TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON Penghargaan TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON PengalamanMengajar TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON TeleponKaryawan TO
AdminManagement
GRANT INSERT, UPDATE, DELETE ON HandphoneKaryawan TO