Kamis, 27 Desember 2012


STRUCTURED QUERY LANGUAGE (SQL)

A. Pengenalan SQL

Structured Query Languages (SQL) pertama kali diterapkan pada sistem R (sebuah proyek riset pada laboratorium riset San Jose, IBM). Kini SQL juga dijumpai pada berbagai platform, dari mikrokomputer hingga mainframe. SQL dapat digunakan baik secara berdiri sendiri maupun dilekatkan pada bahasa-bahasa lain seperti C dan Delphi. SQL juga telah menjadi bagian dari sejumlah DBMS, seperti Oracle, Sybase, MySQL dan Informix.

B. Element SQL

Elemen dasar SQL:
Pernyataan:  perintah SQL yang meminta sesuatu tindakan kepada DBMS. SQL memiliki kira-kira 30 pernyataan diantaranya: 
- ALTER : Mengubah struktur table
- COMMIT : Mengakhiri sebuah eksekusi transaksi
- CREATE : Menciptakan table, indeks atau pandangan
- DELETE : Menghapus baris pada tabel
- DROP : Menghapus tabel, indeks atau pandangan
- GRAND : Menugaskan hak terhadap basis data kepada pengguna atau grup pengguna
- INSERT : Menambahkan sebuah baris pada tableREVOKE : Membatalkan hak terhadap basis data
- ROLLBACK : Mengembalikan ke keadaan semula sekiranya suatu transaksi gagal dilaksanakan
- SELECT : Memilih baris dan kolom pada tabel
- UPDATE : Mengubah nilai pada sebuah baris

Nama digunakan sebagai identitas bagi objek-objek pada DBMS. Contoh objek pada DBMS adalah tabel, kolom dan pengguna.
Tipe Data Setiap data memiliki tipe data. Berikut ini adalah tipe data dalam MySQL :
1. Tipe data untuk numerik : TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL(M,D)
2. Tipe data string : CHAR(n), VARCHAR(n), TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET SET.
3. Tipe data tanggal dan jam : DATE, TIME, DATETIME. 

Konstanta menyatakan nilai yang tetap. 
Ekspresi: segala sesuatu yang menghasilkan nilai. Ekspresi digunakan untuk menghitung nilai.
Aggregate Functions (Fungsi Agregat)
Fungsi adalah sebuah subprogram yang menghasilkan suatu nilai jika dipanggil. Fungsi agregat adalah fungsi standar di dalam SQL, suatu fungsi yang digunakan untuk melakukan summary, fungsi statistik standar yang dikenakan pada suatu tabel atau query.
- AVG(ekspresi) : untuk mencari rata-rata nilai dalam suatu kolom
- COUNT(x) : untuk menghitung jumlah record (baris) dari suatu kolom dari suatu tabel. X adalah nama kolom yang ingin dicari jumlah barisnya.
- MAX(ekspresi) : untuk mencari nilai terbesar dari suatu kolom dari suatu tabel.
- MIN(ekspresi) : untuk mencari nilai terkecil dari suatu kolom dari suatu table.
- SUM(ekspresi) : untuk mendapatkan nilai total dari suatu kolom pada suatu tabel.

C. PERNYATAAN SQL

1. DDL(Data Definition Language)
DDL merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data, tabel, atribut(kolom), batasan-batasan terhadap suatu atribut, serta hubungan antar tabel. Yang termasuk dalam kelompok DDL ini adalah CREATE, ALTER, dan DROP.

2.    DML(Data Manipulation Language)
DML adalah kelompok perintah yang berfungsi untuk memanipulasi data dalam basis data, misalnya untuk pengambilan, penyisipan, pengubahan dan penghapusan data. Perintah yang termasuk dalah kategori DML adalah : INSERT, DELETE, UPDATE dan SELECT.

3.    DCL




OPTIMASI QUERY

A. Optimasi pada Perintah SQL
Index pada database digunakan untuk meningkatkan kecepatan akses data. Pada saat query dijalankan, index mencari data dan menentukan nilai ROWID yang membantu menemukan lokasi data secara fisik di disk. Akan tetapi penggunaan index yang tidak tepat, tidak akan meningkatkan unjuk kerja dalam hal ini kecepatan akses data.

Misal digunakan index yang melibatkan tiga buah kolom yang mengurutkan kolom menurut nama, fakultas dan NIM dari tabel mahasiswa, sebagai berikut :

CREATE INDEX idx_nama_fakultas_nim ON mahasiswa(nama, fakultas, nim) TABLESPACE INDX;

Kemudian user melakukan query sebagai berikut :

SELECT * FROM mahasiswa WHERE fakultas=’teknik’;

Pada saat melakukan query ini, index tidak akan digunakan karena kolom pertama (nama) tidak digunakan dalam klausa WHERE. Jika user sering melakukan query ini, maka kolom index harus diurutkan menurut fakultas.

SELECT * FROM mahasiswa WHERE nim BETWEEN 5302411050 AND 5302411105;

Query ini akan melakukan “scan” terhadap sedikit data block jika tabel mahasiswa diatas diurutkan berdasarkan kolom nim.

Alternatif yang lain, bisa digunakan perintah untuk membuat tabel lain yang memiliki urutan yang berbeda dari tabel asal, seperti perintah SQL berikut :

CREATE TABLE mahasiswa_urut AS SELECT * FROM mahasiswa ORDER BY nim;

Pada SQL diatas, tabel mahasiswa_urut berisi data yang sama dengan tabel mahasiswa hanya datanya terurut berdasarkan kolom nim.

B. Faktor Lain yang Berpengaruh Terhadap Kecepatan Akses Data
1. Optimasi Aplikasi
Dalam pembuatan aplikasi, yang perlu mendapat perhatian adalah apakah akses terhadap data sudah efisien. Efisien dalam hal penggunaan obyek yang mendukung kecepatan akses, seperti index atau cluster. Kemudian juga bagaimana cara database didesain.

Apakah desain database sudah melakukan normalisasi data secara tepat. Kadangkala normalisasi sampai level yang kesekian, tidak menjamin suatu desain yang efisien. Untuk membuat desain yang lebih tepat, kadang setelah melakukan normalisasi perlu dilakukan denormalisasi. Misalnya tabel yang hubungannya one-toone dan sering diakses bersama lebih baik disatukan dalam satu tabel.

2. Cluster dan Index
Cluster adalah suatu segment yang menyimpan data dari tabel yang berbeda dalam suatu struktur fisik disk yang berdekatan. Konfigurasi ini bermanfaat untuk akses data dari beberapa tabel yang sering di-query. Penggunaan cluster secara tepat dilaksanakan setelah menganalisa tabel-tabel mana saja yang sering di-query secara bersamaan menggunaan perintah SQL join.

Jika aplikasi sering melakukan query dengan menggunakan suatu kolom yang berada pada klausa WHERE, maka harus digunakan index yang melibatkan kolom tersebut. Penggunaan index yang tepat bergantung pada jenis nilai yang terdapat dalam kolom yang akan diindex. Dalam RDBMS Oracle, index B-Tree digunakan untuk kolom yang mengandung nilai yang cukup bervariasi, sedangkan untuk nilai yang tidak memiliki variasi cukup banyak, lebih baik menggunakan index bitmap.


Query Lanjutan
Subquery
Subquery adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL Statement yang lain. Untuk penulisan subquery pada SQL (SELECT select_list FROM table);

Penggunaan Subquery
Subquery ini digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui. Subquery terdapat banyak kolom yang merupakan tiap baris dari main query dibandingkan dengan nilai dari subquery multiple-row dan multiple-column.
Tipe Perbandingan Pada Subquery:
             a.       Perbandingan Berpasangan
             b.      Perbandingan Tidak Berpasangan

Penggunaan Subquery dalam Klausa From
Query ini dikenal juga dengan istilah inline view, karena tidak membentuk object database. Contoh penggunaan query pada from : (SELECT department_id, REDS(salary) salavg FROM employees GROUP BY department_id)

Ekspresi Scalar Subquery
Ekspresi scalar subquery merupakan subquery yang mengembalikan hanya satu nilai kolom dari satu baris. Contoh penggunaannya dengan ekspresi Case : (SELECT department_id FROM departments WHERE location_id = 1800).
Contoh penggunaanya dengan klausa ORDER BY : (SELECT department_name FROM departments WHERE e.department_id = d.department_id);

Korelasi Subquery
Korelasi Subquery digunakan untuk pemrosesan baris per baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari outer query.

Proses dari Korelasi
Proses dari korelasi itu sendiri bagaiman mengambil baris dari outer query kemudian menjalankan inner query untuk quality atau disquality baris kandidat selanjutnya menggunakan nilai dari inner querry quality atau disquality baris kandidat dan kembali lagi ke awal. Cara penulisan korelasi subquery : (SELECT column1, column2 FROM table2 WHERE expr1 = expr2);

Penggunaan Operator Exist Dan Non Exist
Operator EXISTS dan NOT EXIST digunakan untuk menguji keberadaan dari baris dalam himpunan hasil dari subquery.

Penggunaan Klausa With
Dalam menggunakan klausa WITH, kita dapat menggunakan blok query yang sama dalam statement SELECT pada saat terjadi lebih dari sekali dalam complex query.

Rabu, 28 November 2012

Dependency dan Normalisasi

Dalam postingan kali ini, saya mecoba mengulas kembali beberapa inti sari yang telah saya peroleh pada perkuliah sistem basis data.
Materi yang telah saya peroleh yaitu tentang Dependency dan Normalisasi.

Functional Dependency
Functional Dependency (FD) merupakan ketergantungan yang terjadi antara atribut-atibut pada suatu entiti.
Notasi dari FD yaitu: A –> B, maksudnya yaitu atribut B tergantung pada atribut A.
Salah satu contohnya yaitu:
KodeMK –> NamaMK (artinya atribut NamaMK tergantung pada atribut KodeMK)
Macam-macam Dependency:
1. Full Dependency
Merupakan suatu ketergantungan dimana terdapat atribut A dan atribut B dalam satu relasi.
Contoh:
NIM –> Nilai (artinya yaitu Nilai tergantung pada atribut NIM)
dari contoh di atas Dapat disimpulkan bahwa 1 atribut menetukan pada 1 atribut

2. Partially Dependency
Yaitu suatu functional Dependency yang mana beberapa atribut pada A dapat dihilangkan tetapi ketergantunga terhadap atribut B masih dapat dipertahankan.
Contoh: NIM, nama –> idRuang (artinya idRuang tergantung pada NIM dan nama)
sehingga apabila nama dihilangkan, NIM masih terdapat ketergantungan dengan idRuang.

3. Transitive Dependency
Merupakan salah satu functional dependency dimana keterhubungan anatara A,B,C saling berkaitan. Transitive Dependency dapat dinotasikan A –> B dan B –> C, sehingga apabila kita ingin mengaitkan A –> C maka membutuhkan relasi dari B.
Contoh:
Id_Pelanggan –> {Nama, Salesman, Area}
Salesman –> Area

Normalisasi
Merupakan suatu teknik untuk menghasilkan sekumpulan relasi dengan sifat-sifat yang diinginkan.
Hal-hal yang menjadi dasar acuan dalam proses normalisasi adalah tujuan pembentukan basis data, diantanya harus menghilangkan hal-hal berikut:
a. pengulangan informasi
b. potensi inkosistensi data pada operasi update
c. hindari atribut yang tidak perlu disimpan
d. tersembunyinya informasi tertentu.

Ada beberapa langkah normalisasi diantaranya yaitu: Bentuk 1NF, 2NF, 3NF,BCNF, 4NF dan 5NF.
Namun pada postingan kali ini saya hanya akan mencoba menjelaskan sampai langkah 3NF saja.
1. 1NF
Merupakan sebuah relasi dimana setiap irisan antara baris dan kolom berisikan satu dan hanya satu nilai.
Cara unttuk UNF ke 1NF:
- Tunjuk satu atau sekumpulan atribut sebagai kunci untuk tabel unnormalizied.
- Identifikasi grup yang berulang dalam tabel unnormalized yang berulang untuk kunci atribut
- Hapus grup yang berulang dengan cara memasukkan data yang semestinya ke dalam kolom yang kosong pada baris yang berisikan data yang berulang atau dengan cara menggantikan data yang ada dengan copy dari kunci atribut yang sesungguhnya  ke dalam relasi terpisah.

2. 2NF
Merupakan sebuah relasi dalam 1NF dan setiap atribut non-primary-key bersifat fully functionally dependent pada primary key.
Langkah perubahan dari 1NF ke 2NF yaitu:
- Mengidentifikasi primary key untuk relasi 1NF.
- Mengidentifikasi functional dependency dalam relasi.
- Jika terdapat partial dependency terhadap primary key, maka hapus dengan menempatkannya dalam relasi yang baru bersama dengan salinan determinannya.

3. 3NF
Merupakan sebuah relasi dalam 1NF dan 2NF dimana tidak terdapat atribut non-primary-key attribute yang bersifat transitive dependent pada primary key.
Langkah-langkah perubahan dari 2NF ke 3NF:
- Mengidentifikasi primary key dalam relasi 2NF.
- Mengidentifikasi functional dependency dalam relasi.
- Jika terdapat transitive dependency terhadap primary key, hapus dengan menempatkannya dalam relasi yang baru bersama dengan salinan determinannya.

Rabu, 14 November 2012

Query Language


Query Language 
(Bahasa yang meminta perintah dengan melibatkan data)

Relational Queries Language (RQL) :
ERD --> Model data Relational --> Query language

Relational Queries Language  diawali dengan pembuatan ERD yang kemudian diubah menjadi model data relational berupa table informasi terbatas kemudian diterjemahkan ke Query Language.

Bahasa Query Language
·         Bahasa Prosedural
Bahasa yang identik dengan aljabar  relational, berupa operasi dasar seperti select* dan beberapa operasi tambahan.
·         Bahasa non Prosedural
Bahasa yang identik dengan kalkulus relational, yaitu mendeskripsikan informasi tanpa memberi instruksi.


Query Unary
Yaitu query selection yang digunakan pada relasi binary,

Contoh1 :

Ada beberapa data pada suatu table bernama dosen yang kemudian akan dipilh data tersebut berdasarkan tempat_lahir dengan ketentuan :

Tempat_lahir=’jakarta’   v   tempat_lahir=’bogor’ dari table dosen
Artinya : menampilkan dosen dengan tempat lahir Jakarta atau bogor.

Syntaq pada SQL : select * from dosen where tanggal_lahir=’jakarta’

Contoh2 :

Ada beberapa data pada suatu table bernama dosen yang kemudian akan dipilh data tersebut berdasarkan tempat_lahir dengan ketentuan :

Tempat_lahir=’jakarta’  ^  jenis_kelamin=’pria’ dari table dosen
Artinya : menampilkan dosen dengan tempat lahir Jakarta dan berjenis kelamin pria.

Syntaq pada SQL : select * from dosen where tanggal_lahir=’jakarta’ and jenis_kelamin=’pria’
Dalam contoh diatas terdapat tanda “v”, dan ada juga tanda “^” , perbedaan kedua tanda tersebut adalah :

^ = berarti mengharuskan
v = bisa dipilih salah satu 

Selasa, 23 Oktober 2012

SBD

Transformasi Model Data

* Entitas Kuat

-> Himpunan entitas yang dilibatkan di ERD.Entitas yang mempunyai atribut kunci. Entitas ini bersifat mandiri, keberadaanya tidak bergantung pada entitas lainnya. Percepatan entitas kuat selalu memiliki karakteristik yang unik disebutidentifier (sebuah atribut tunggal atau gabungan atribut-atribut yang secara unik dapat digunakan untuk membedakannya dari entitas kuat yang lain).
Kebanyakan entitas dalam suatu organisasi dapat digolongkan sebagai entitas kuat (strong entity) yaitu entitas yang mandiri, yang keberadaannya tidak bergantung pada keberadaan entitas yang lainnya. Instansiasi entitas kuat selalu memiliki karakteristik yang unik (dinamakan identifier atau sering disebut sebagai atribut pengidentifikasi) yaitu, sebuah atribut tunggal atau gabungan atribut-atribut yang secara unik dapat digunakan untuk membedakannya dari entitas kuat yang lain.

* Entitas Lemah

-> suatu Entitas yang tidak mempunyai atribut kunci. Entitas lemah diidentifikasikan dengan menghubungkan entitas tertentu dari tipe entitas yang lain ditambah atribut dari entitas lemah. Tipe entitas lain yang dipakai untuk mengidentifikasikan suatu entitas lemah disebut identifying owner dan relasi yang menghubungkan entitas lemah dengan owner disebut identifying relationship Contoh entitas pegawai

* contoh entitas kuat dan lemah

* Agregasi
menggambarkan himpunan relasi yang secara langsung menghubungkan sebuah himpunan entitas dengan sebuah himpunan relasi dalam ERD. 
agregasi dapat dipandang sebagaimana relasi pada umumnya (yang menghubungkan 2 entitas). Karena relasi ini dibentuk dari relasi lain (relasi prasyarat) yang secara kronologis lebih dulu terbentuk, maka pengimplementasiannya juga harus dilakukan setelah relasi prasyarat tersebut terimplementasikan. Selanjutnya kita tinggal meninjau derajat relasi dari relasi agregasinya.

**yang berwarna merah adalah agregasi

* Transformasi model data ke basis data fisik
    ERD direpresentasikan menjadi sebuah basis data secara fisik
* Transformasi dasar
    setiap himpunan entitas akan diimplementasikan sebagai tabel.

* implimentasi himpunan entitas lemah dan sub entitas
implementasinya dalam tabel sebagaimana implementasi himpunan entitas kuat.
* perbedaan entitas lemah dan entitas kuat
Entitas Lemah (Weak Entity)
       Berisi entitas yang kemunculannya tergantung pada eksistensinya dalam sebuah relasi.misal entitas 
       Mahasiswa -orang tua & hobby, pegawai - tanggungan.
Entitas kuat (Strong Entity)
       Entitas yang berdiri sendiri, keberadaannya tidak tergantung dengan entitas lain

tabel implementasi entitas lemah dan sub entitas



* apa itu sub entitas?
          Sub Entitas merupakan himpunan entitas yang beranggotakan entitas entitas yang merupakan bagian dari himpunan entitas yang lebih superior/utama. 





Rabu, 03 Oktober 2012

MODAL DATA RELATIONAL

MODAL DATA RELATIONAL


adalah  kumpulan tabel berdimensi 2 dengan masing-masing relasi tersusun atas baris dan kolom pada suatu basis data

Istilah-Istilah dalam Model Relasional
  • Relasi
berdasarkan definisi matematika, adalah sebuah himpunan bagian dari perkalian kartesian dari sekumpulan domain. Dalam model relasional, relasi dapat direpresentasikan dengan tabel.
  • Atribut
adalah kepala/header dari setiap kolom yang ada dalam tabel relasi. Berdasarkan contoh tabel MHS sebelumnya, atribut yang ada adalah NPM, Nama, dan Alamat.
  • Tupel
adalah sebuah baris dalam tabel relasi. Berdasarkan contoh tabel MKUL sebelumnya, salah satu tupelnya adalah (KU122, Pancasila, 2).
  • Domain
adalah sekumpulan nilai yang valid untuk setiap atribut yang ada dalam tabel relasi. Berdasarkan contoh tabel NILAI sebelumnya, domain dari atribut FINAL adalah angka 0 sampai 100.
  • Derajat
adalah jumlah atribut yang ada dalam tabel relasi. Berdasarkan contoh tabel MHS sebelumnya, derajat dari relasinya adalah 3.
  • Kardinalitas
adalah jumlah tupel yang ada dalam tabel relasi. Berdasarkan contoh tabel MKUL sebelumnya, kardinalitas dari relasinya adalah 3.
Relational Keys
  • Super Key
adalah sebuah atau sekumpulan atribut yang secara unik mengidentifikasi sebuah tupel dalam tabel relasi. Berdasarkan contoh tabel MHS sebelumnya, super key yang mungkin adalah (NPM), (NPM, Nama), (NPM, Alamat), (Nama, Alamat), dan (NPM, Nama, Alamat).
  • Candidate Key
adalah super key yang himpunan bagian yang sebenarnya tidak ada yang menjadi super key juga. Berdasarkan contoh super key sebelumnya, candidate key yang mungkin adalah (NPM) dan (Nama, Alamat). Atribut Nama dan Alamat dapat dijadikan candidate key jika kombinasi keduanya bisa menjadi pengidentifikasi yang unik untuk sebuah tabel relasi.   
  • Primary Key
adalah candidate key yang dipilih sebagai pengidentifikasi unik untuk sebuah tabel relasi. Berdasarkan contoh candidate key sebelumnya, primary key yang dipilih adalah (NPM), karena nilai NPM sangat unik dan tidak ada 2 mahasiswa yang memiliki NPM yang sama.
  • Alternate Key
adalah candidate key yang tidak dipilih sebagai primary key. Berdasarkan contoh candidate key sebelumnya, alternate key adalah (Nama, Alamat).
Relational Integrity Rules
  • NULL
adalah nilai sebuah atribut yang tidak diketahui atau tidak ada pada sebuah tupel dalam tabel relasi. Misalnya pada contoh tabel MHS sebelumnya, seorang mahasiswa tidak diketahui alamatnya sehingga pada tupel yang mengidentifikasi mahasiswa tersebut nilai dari atribut alamat diisi dengan NULL.
  • Entity Integrity
adalah sebuah peraturan integritas yang menyatakan bahwa setiap tabel relasi harus mempunyai sebuah primary key, dan atribut/sekumpulan atribut yang dipilih sebagai primary key harus mempunyai nilai dan nilai tersebut harus unik dan tidak NULL.
  • Referential Integrity
adalah sebuah peraturan integritas yang menyatakan bahwa setiap atribut sebuah tabel relasi yang menunjuk ke tabel relasi lainnya harus merupakan hubungan yang valid. Berdasarkan contoh tabel MKUL dan NILAI sebelumnya, nilai atribut KDMK pada tabel NILAI harus merupakan data yang ada dan valid pada tabel MKUL yang ditunjuknya.


latihan 1


  1.  Candidate Key
    -          assets
    -          customer-street
    -          amount
  2.     Primary Key
    -          account-number
    -          customer-street
    -          loan-number
    -          branch-name
  3.   Alternate Key
    -          customer-city
    -          balance
    -          branch-city
  4.    Foreign Key
    -          Tidak ada
latihan 2

  1. Membuat Tabel
                       Tabel siswa
Nomor Induk
Nama Siswa
jurusan
Tanggal Lahir
11537
Anindia Salsabila
IPA
28 November 1996
11538
Najwa Sakinaturrahma
IPS
10 Agustus 1996
11539
M. Taufik
IPS
9 Januari 1996
11540
Rifda Ratih Pravida
Bahasa
4 Mei 1996
11541
Afin Amril Fatah
Bahasa
10 Desember 1996
11542
Rifqi Maulana
Bahasa
19 Oktober 1996

     Tabel Mata Pelajaran
Kode_MP
Nilai
Kehadiran
jam
00AB021
A
87 %
2 jam
01MP890
B
100 %
2 jam
02MK35
C
78 %
2 jam
03TP608
B
100 %
3 jam
04BD880
AB
93 %
2 jam
05FH401
A
89 %
2 jam
   
Tabel Guru
Nama Guru
Kode_MP
Mata Pelajaran
Nur Azizah, S.Pd.
00AB021
Matematika
M. Ali, S.F.
05FH401
Fisika
Sofyan Nurdin, S.B.
00AP321
Biologi
Fahrodah, S.S.
02MK35
Sosiologi
Sodiqin, S.S.
03TP608
Bahasa Indonesia
Sularso, S.Eng.
04BD880
Bahasa Inggris
 
     
2. Tabel Gabungan
Nomor Induk
Nama Siswa
Mata Pelajaran
Guru
Nilai
11537
Anindia Salsabila
Matematika
Nur Azizah, S.Pd.
A
11538
Najwa Sakinaturrahma
Fisika
M. Ali, S.F
C
11539
M. Taufik
Biologi
Sofyan Nurdin, S.B.
B
11540
Rifda Ratih Pravida
Sosiologi
Fahrodah, S.S.
B
11541
Afin Amril Fatah
Bahasa Indonesia
Sodiqin, S.S.
AB
11542
Rifqi Maulana
Bahasa Inggris
Sularso, S.Eng.
A
. 
   
3. Atribut Kunci

Tabel Siswa
Tabel Mata Pelajaran
Tabel Guru
Candidate Key
Nama Siswa
-
Nama Guru
Primary Key
Nomor Induk
kode_MP
kode_MP
Alternate Key
Jurusan, tanggal lahir
Nilai, kehadiran, jam
Mata pelajaran
Foreign Key
-
kode_MP
kode_MP