• Tidak ada hasil yang ditemukan

Lampiran 1 Implementasi Struktur Tabel

N/A
N/A
Protected

Academic year: 2021

Membagikan "Lampiran 1 Implementasi Struktur Tabel"

Copied!
59
0
0

Teks penuh

(1)

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)’

(2)

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’)

(3)

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

(4)

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’

(5)

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,

(6)

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,

(7)

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,

(8)

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,

(9)

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 )

(10)

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 )

(11)

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,

(12)

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 )

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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’

(20)

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)

(21)

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)

(22)

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)

(23)

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)

(24)

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

(25)

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)

(26)

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)

(27)

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

(28)

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 )

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

Lampiran 7 – Hasil wawancara sebagai analisis kebutuhan informasi

Hasil Wawancara

Setelah melalui analisis kebutuhan informasi dalam perusahaan, berikut ini kami

dokumentasikan kebutuhan-kebutuhan yang ada dalam perusahaan. Dalam perusahaan

membutuhkan data registrasi murid, profil murid, profil guru, profil karyawan, kelas yang

berjalan , penggunaan ruang, pendataan ujian, pencatatan absensi, hingga pencataan\\tan

pembayarannya. Berikut ini dilampirkan hasil wawancara yang dilakukan dalam proses

penelitian.

1. Tanya: Data murid tidak pernah dihapus?

Jawab: Tidak Pernah.

2. Tanya: Apakah ada status antara murid yang aktif dengan yang tidka aktif?

Jawab: Di sini status siswa dibedakan menjadi Baru, Cuti, Berhenti, dan Aktif.

3. Tanya: Berapa banyak jumlah pendaftar rata-rata dalam satu bulan?

Jawab: Kurang lebih 50-100 orang.

4. Tanya: Adakah pendaftar yang registrasi, kemudian tidak membayar biaya

registrasi tersebut? Bagaimana pencatatannya?

Jawab: Tidak ada. Pada saat registrasi pendaftar harus langsung membayar biaya

registrasi pada hari yang sama, termasuk pembayaran kelas untuk bulan pertama.

5. Tanya: Dalam setahun kira-kira berapa pertambahan rata-rata jumlah guru?

Jawab: Kurang lebih 10 orang.

6. Tanya: Berapa kali maksimal jumlah pembayaran yang dilakukan untuk

registrasi?

Jawab: Untuk pembayaran registrasi harus langsung dibayarkan lunas pada saat

registrasi.

7. Tanya: Bagaimana sistem absensi yang berjalan saat ini? Bagaimana

pencatatannya?

(37)

Jawab: Absensi dicatat dalam form yang diisi oleh guru yang bersangkutan. Tiap

murid untuk masing kelas yang diambil akan memiliki absennya

masing-masing.

8. Tanya: Untuk pembayaran bulanan bagaimana sistem pembayarannya? Apakah

boleh dicicil?

Jawab: Untuk pembayaran bulanan dibayar sekali setiap bulannya. Tidak ada

cicilan.

9. Tanya: Bagaimana sistem pembayarannya? Tunai/Debit/Transfer?

Jawab: Semua pembayaran dalam bentuk Tunai.

10. Tanya: Bagaimana sistem ujian di Cantata?

Jawab: Ujian diadakan untuk kenaikan level murid. Setiap murid untuk setiap

kelas yang diambil akan diadakan ujian. Jadi mungkin saja seorang murid ikut

dua ujian misalkan untuk piano dan biola.

11. Tanya: Berapa kali ujian diadakan dalam setahun. Apakah waktunya tetap?

Jawab: Kurang lebih 1-2 kali. Waktunya biasanya awal tahun dan tengah tahun.

12. Tanya: Apa syarat murid agar boleh ikut ujian?

Jawab: Sebelum ujian akan ada proses persiapan ujian di mana masing-masing

guru diberikan daftar murid yang diajarnya, kemudian guru yang berhak

menentukan mana murid yang berhak ikut ujian.

13. Tanya: Bagaimana jika murid gagal ujian?

Jawab: Murid bersangkutan tidak naik level, dan tetap pada levelnya. Murid boleh

ikut ujian yang berikutnya.

14. Tanya: Penyelenggaraan ujian diadakan bersamaan dengan kelas berjalan atau

kelas liburkan?

Jawab: Ujian dilakukan tidak bersamaan dengan kelas agar tidak menggangu

jalannya ujian.

(38)

15. Tanya: Bagaimana sistem penggunaan ruangan untuk ujian?

Jawab: Setiap ujian diadakan di masing-masing ruangannya sesuai dengan

jurusan. Pada saat ujian dibagi mana yang untuk ujian piano, biola, dan

sebagainya.

16. Tanya: Berapa jumlah jurusan yang ada saat ini?

Jawab: Sampai saat ini jurusan yang ada adalah Classic Piano, Jazz Piano, Biola,

Viola, Flute, Cello, Classic Gitar, Electric Guitar, Drum, Keyboard, Vokal.

17. Tanya: Berapa jumlah pengajar yang ada saat ini?

Jawab: Kurang lebih 30 orang.

18. Tanya: Berapa jumlah murid sampai saat ini?

Jawab: Kurang lebih 3000 orang yang tercatat namun yang masih aktif kurang

lebih 800 orang.

19. Tanya: Dalam satu minggu berapa shift yang berjalan rata-rata?

Jawab: Untuk seluruh cabang jika digabungkan bisa mencapai 700 shift per

minggu.

20. Tanya: Berapa jumlah yang ikut ujian rata-rata?

Jawab: Dalam satu kali periode ujian jumlah yang ikut ujian kurang lebih 100

orang.

21. Tanya: Dari jam berapa sampai jam berapa operasional berjalan di Cantata?

Jawab: Operasional dimulai dari jam 10 pagi hingga jam 8 malam.

Ms.Annalely B.A

(39)

Lampiran 8 - Perancangan Form Input

Menu Utama

(40)

Form Input Registrasi Murid

(41)
(42)

Form View Data Karyawan

(43)

Form View Cabang

Form Input Cabang

(44)

Form Input Data Jabatan

Form View Ruang

(45)

Form View Jurusan

Form Input Jurusan

(46)

Form Input Grade

Form View Data Level

(47)

Form Input Data Ruang Jurusan

(48)

Form View Data Penggunaan Ruang

(49)

Form View Data Kelas

(50)

Form View Data Ujian

(51)

Form Input Data Pembayaran Bulanan

(52)

Lampiran 9 - Validasi Relasi dengan Normalisasi

Tahap normalisasi 1NF

1. Murid (KodeMurid, NamaMurid, TempatLahir, TanggalLahir, JenisKelamin,

Kewarganegaraan, Agama, Alamat, Kota, KodePos, PekerjaanMurid, NamaAyah,

NamaIbu, StatusSiswa, TanggalRegistrasi, KodeKaryawan, KodeCabang,

Nominal, KodeKaryawanPembayaran)

2. Guru (KodeGuru, NamaGuru, TempatLahir, TanggalLahir, JenisKelamin,

Kewarganegaraan, Agama, Alamat, Kota, KodePos, Email, StatusNikah,

KodeCabang)

3. Karyawan (KodeKaryawan, NamaKaryawan, TempatLahir, TanggalLahir,

JenisKelamin, Kewarganegaraan, Agama, Alamat, Kota, KodePos, KodeCabang,

KodeJabatan)

4. Ruang (KodeRuang, NamaRuang, KodeCabang)

5. Jurusan (KodeJurusan, NamaJurusan)

6. Grade (KodeGrade, NamaGrade)

7. Level (KodeLevel, KodeJurusan, KodeGrade, Harga)

8. Kelas (KodeKelas, BulanMulai, TahunMulai, KodeGuru, KodeMurid,

KodeLevel, KodeCabang)

9. PembayaranBulanan (NoBayar, TanggalBayar, Tahun, Bulan, Nominal,

KodeKaryawan, KodeKelas)

10. Ujian (KodeUjian, KodeKelas, KodeRuang, TanggalUjian, WaktuMulai,

WaktuAkhir, NilaiUjian, KodeKaryawan, KodeLevel)

(53)

11. PembayaranUjian (NoBayar, TanggalBayar, Nominal,

KodeKaryawanPembayaran, KodeUjian)

12. Cabang (KodeCabang, NamaCabang)

13. Jabatan (KodeJabatan, NamaJabatan)

14. Absensi (KodeKelas, TanggalAbsen, Tahun, Bulan, Pertemuan, WaktuMulai,

WaktuSelesai, StatusAbsensi)

15. JadwalMengajar(KodeJadwal,KodeGuru,KodeCabang)

16. JadwalMengajarDetail (KodeJadwal, Hari, WaktuMulai, WaktuSelesai)

17. PenggunaanRuang (KodeRuang, KodeKelas, Hari, WaktuMulai, WaktuAkhir)

18. RuangJurusan (KodeRuang, KodeJurusan)

19. GuruLevel (KodeGuru, KodeLevel)

20. LevelCabang (KodeLevel, KodeCabang)

21. TeleponMurid (KodeMurid, Telepon)

22. HandphoneMurid (KodeMurid, Handphone)

23. ContactNoAyahMurid (KodeMurid, ContactNoAyah)

24. ContactNoIbuMurid (KodeMurid, ContactNoIbu)

25. DataSaudaraMurid (KodeMurid, NamaSaudara, BelajarMusik, Subjek, DiLMC,

TempatBelajarSaudara)

26. LatarBelakangMusikMurid (KodeMurid, Instrumen, Grade, LamaBelajar,

TempatBelajar, GuruPengajar)

27. AlatMusikDimilikiMurid (KodeMurid,Tipe,Merk,Seri)

28. TeleponGuru (KodeGuru, Telepon)

(54)

30. DataKeluargaGuru (KodeGuru, Relasi, NamaKeluarga, TempatLahir,

TanggalLahir, Pekerjaan, ContactNoKeluarga)

31. LatarBelakangPendidikanGuru (KodeGuru, PendidikanFormal, NamaSekolah,

Kota, Negara, Jurusan, TahunWisuda)

32. LatarBelakangMusikGuru (KodeGuru, Instrumen, Grade, LamaBelajar,

TempatBelajar, GuruPengajar)

33. Penghargaan (KodeGuru, NamaPenghargaan, NamaInstitusi,

TanggalPenghargaan)

34. PengalamanMengajar (KodeGuru, Mengajar, NamaInstitusi, LamaKerja)

35. TeleponKaryawan (KodeKaryawan, Telepon)

36. HandphoneKaryawan (KodeKaryawan, Handphone)

Tahap normalisasi 2NF

1. Murid (KodeMurid, NamaMurid, TempatLahir, TanggalLahir, JenisKelamin,

Kewarganegaraan, Agama, Alamat, Kota, KodePos, PekerjaanMurid, NamaAyah,

NamaIbu, StatusSiswa, TanggalRegistrasi, KodeKaryawan, KodeCabang,

Nominal, KodeKaryawanPembayaran)

2. Guru (KodeGuru, NamaGuru, TempatLahir, TanggalLahir, JenisKelamin,

Kewarganegaraan, Agama, Alamat, Kota, KodePos, Email, StatusNikah,

KodeCabang)

3. Karyawan (KodeKaryawan, NamaKaryawan, TempatLahir, TanggalLahir,

JenisKelamin, Kewarganegaraan, Agama, Alamat, Kota, KodePos, KodeCabang,

KodeJabatan)

(55)

4. Ruang (KodeRuang, NamaRuang, KodeCabang)

5. Jurusan (KodeJurusan, NamaJurusan)

6. Grade (KodeGrade, NamaGrade)

7. Level (KodeLevel, KodeJurusan, KodeGrade, Harga)

8. Kelas (KodeKelas, BulanMulai, TahunMulai, KodeGuru, KodeMurid,

KodeLevel, KodeCabang)

9. PembayaranBulanan (NoBayar, TanggalBayar, Tahun, Bulan, Nominal,

KodeKaryawan, KodeKelas)

10. Ujian (KodeUjian, KodeKelas, KodeRuang, TanggalUjian, WaktuMulai,

WaktuAkhir, NilaiUjian, KodeKaryawan, KodeLevel)

11. PembayaranUjian (NoBayar, TanggalBayar, Nominal,

KodeKaryawanPembayaran, KodeUjian)

12. Cabang (KodeCabang, NamaCabang)

13. Jabatan (KodeJabatan, NamaJabatan)

14. Absensi (KodeKelas, TanggalAbsen, Tahun, Bulan, Pertemuan, WaktuMulai,

WaktuSelesai, StatusAbsensi)

15. JadwalMengajar(KodeJadwal,KodeGuru,KodeCabang)

16. JadwalMengajarDetail (KodeJadwal, Hari, WaktuMulai, WaktuSelesai)

17. PenggunaanRuang (KodeRuang, KodeKelas, Hari, WaktuMulai, WaktuAkhir)

18. RuangJurusan (KodeRuang, KodeJurusan)

19. GuruLevel (KodeGuru, KodeLevel)

20. LevelCabang (KodeLevel, KodeCabang)

21. TeleponMurid (KodeMurid, Telepon)

(56)

22. HandphoneMurid (KodeMurid, Handphone)

23. ContactNoAyahMurid (KodeMurid, ContactNoAyah)

24. ContactNoIbuMurid (KodeMurid, ContactNoIbu)

25. DataSaudaraMurid (KodeMurid, NamaSaudara, BelajarMusik, Subjek, DiLMC,

TempatBelajarSaudara)

26. LatarBelakangMusikMurid (KodeMurid, Instrumen, Grade, LamaBelajar,

TempatBelajar, GuruPengajar)

27. AlatMusikDimilikiMurid (KodeMurid,Tipe,Merk,Seri)

28. TeleponGuru (KodeGuru, Telepon)

29. HandphoneGuru (KodeGuru, Handphone)

30. DataKeluargaGuru (KodeGuru, Relasi, NamaKeluarga, TempatLahir,

TanggalLahir, Pekerjaan, ContactNoKeluarga)

31. LatarBelakangPendidikanGuru (KodeGuru, PendidikanFormal, NamaSekolah,

Kota, Negara, Jurusan, TahunWisuda)

32. LatarBelakangMusikGuru (KodeGuru, Instrumen, Grade, LamaBelajar,

TempatBelajar, GuruPengajar)

33. Penghargaan (KodeGuru, NamaPenghargaan, NamaInstitusi,

TanggalPenghargaan)

34. PengalamanMengajar (KodeGuru, Mengajar, NamaInstitusi, LamaKerja)

35. TeleponKaryawan (KodeKaryawan, Telepon)

(57)

Tahap normalisasi 3NF

1. Murid (KodeMurid, NamaMurid, TempatLahir, TanggalLahir, JenisKelamin,

Kewarganegaraan, Agama, Alamat, Kota, KodePos, PekerjaanMurid, NamaAyah,

NamaIbu, StatusSiswa, TanggalRegistrasi, KodeKaryawan, KodeCabang,

Nominal, KodeKaryawanPembayaran)

2. Guru (KodeGuru, NamaGuru, TempatLahir, TanggalLahir, JenisKelamin,

Kewarganegaraan, Agama, Alamat, Kota, KodePos, Email, StatusNikah,

KodeCabang)

3. Karyawan (KodeKaryawan, NamaKaryawan, TempatLahir, TanggalLahir,

JenisKelamin, Kewarganegaraan, Agama, Alamat, Kota, KodePos, KodeCabang,

KodeJabatan)

4. Ruang (KodeRuang, NamaRuang, KodeCabang)

5. Jurusan (KodeJurusan, NamaJurusan)

6. Grade (KodeGrade, NamaGrade)

7. Level (KodeLevel, KodeJurusan, KodeGrade, Harga)

8. Kelas (KodeKelas, BulanMulai, TahunMulai, KodeGuru, KodeMurid,

KodeLevel, KodeCabang)

9. PembayaranBulanan (NoBayar, TanggalBayar, Tahun, Bulan, Nominal,

KodeKaryawan, KodeKelas)

10. Ujian (KodeUjian, KodeKelas, KodeRuang, TanggalUjian, WaktuMulai,

WaktuAkhir, NilaiUjian, KodeKaryawan, KodeLevel)

11. PembayaranUjian (NoBayar, TanggalBayar, Nominal,

KodeKaryawanPembayaran, KodeUjian)

(58)

12. Cabang (KodeCabang, NamaCabang)

13. Jabatan (KodeJabatan, NamaJabatan)

14. Absensi (KodeKelas, TanggalAbsen, Tahun, Bulan, Pertemuan, WaktuMulai,

WaktuSelesai, StatusAbsensi)

15. JadwalMengajar(KodeJadwal,KodeGuru,KodeCabang)

16. JadwalMengajarDetail (KodeJadwal, Hari, WaktuMulai, WaktuSelesai)

17. PenggunaanRuang (KodeRuang, KodeKelas, Hari, WaktuMulai, WaktuAkhir)

18. RuangJurusan (KodeRuang, KodeJurusan)

19. GuruLevel (KodeGuru, KodeLevel)

20. LevelCabang (KodeLevel, KodeCabang)

21. TeleponMurid (KodeMurid, Telepon)

22. HandphoneMurid (KodeMurid, Handphone)

23. ContactNoAyahMurid (KodeMurid, ContactNoAyah)

24. ContactNoIbuMurid (KodeMurid, ContactNoIbu)

25. DataSaudaraMurid (KodeMurid, NamaSaudara, BelajarMusik, Subjek, DiLMC,

TempatBelajarSaudara)

26. LatarBelakangMusikMurid (KodeMurid, Instrumen, Grade, LamaBelajar,

TempatBelajar, GuruPengajar)

27. AlatMusikDimilikiMurid (KodeMurid,Tipe,Merk,Seri)

28. TeleponGuru (KodeGuru, Telepon)

29. HandphoneGuru (KodeGuru, Handphone)

30. DataKeluargaGuru (KodeGuru, Relasi, NamaKeluarga, TempatLahir,

TanggalLahir, Pekerjaan, ContactNoKeluarga)

(59)

31. LatarBelakangPendidikanGuru (KodeGuru, PendidikanFormal, NamaSekolah,

Kota, Negara, Jurusan, TahunWisuda)

32. LatarBelakangMusikGuru (KodeGuru, Instrumen, Grade, LamaBelajar,

TempatBelajar, GuruPengajar)

33. Penghargaan (KodeGuru, NamaPenghargaan, NamaInstitusi,

TanggalPenghargaan)

34. PengalamanMengajar (KodeGuru, Mengajar, NamaInstitusi, LamaKerja)

35. TeleponKaryawan (KodeKaryawan, Telepon)

Referensi

Dokumen terkait

Didapatkan Ketinggian Tangannya saat memulai adalah 44.29 inchi (terletak diantara 37 inchi dan 57 inchi), Jarak mendorongnya adalah 28.38 Feet (terletak diantara 25 feet dan 50

Kesimpulan dari artikel tentang metode pembelajaran Think Pair Share ini adalah; metode pembelajaran Think Pair Share merupakan tipe model pembelajaran kooperatif yaitu

Mengumumkan Rencana Umum Pengadaan Barang/Jasa untuk pelaksanaan Kegiatan Tahun Anggaran 2012, seperti tersebut di bawah ini

 Rincian Perubahan APBD menurut urusan pemerintahan daerah, organisasi, pendapatan, belanja dan pembiayaan pada Lampiran A.XV.  Penjabaran Perubahan APBD pada

Aplikasi yang berada pada kuadran high potential dan strategi mampu memberikan manfaat kompetitif kepada perusahaan karena dapat memberikan manfaat kompetitif serta dapat

Dari hasil simulasi yang telah dilakukan dapat dilihat grafik perbandingan kriteria tegangan von- mises dengan material polipropilena dan kayu jati dengan variasi

Ya Tidak *) (Agar dituliskan dengan lengkap tiap jenis kendala) Kode1. ICD X Clinical Pathway (pada KMK 514/2015

Saya tahu bahwa PPA memberikan pengetahuan tentang masalah-masalah yang berhubungan dengan proses audit yang mungkin terjadi di masa yang akan datang sejalan dengan