BASIS DATA
DI
OLEH :
DEDI PRAMANA
NIM.11950310418
Tabel Anggota – Pada tabel anggota berisi data-data anggota perpustakaan yang
mempunyai hak untuk membaca buku yang tersedia diperpustakaan atau meminjam
dalam jangka waktu tertentu.
Tabel Buku – Pada tabel buku berisi deskripsi buku baik itu judul, pengarang penerbit
dan lainnya. Selain itu kita juga dapat mengetahui jumlah stok buku yang tersedia yang
dapat dipinjam.
Tabel Rak – Tabel rak nantinya berfungsi untuk memberikan informasi lokasi buku pada
setiap rak didalam perpustakaan tersebut.
Tabel Peminjaman – pada tabel ini nantinya akan disimpan data-data terkait
peminjaman buku.
Deskripsi tabel menjelaskan bagaimana atribut yang tersusun didalam setiap tabel. masing-
masing tabel mempunyai atribut yang membentuk karakteristik/sifat yang melekat pada
sebuah tabel. Contohnya untuk tabel buku karakteristik yang melekat pada buku adalah
judul, nama pengarang dan penerbit. Berikut ini adalah keterangan setiap atribut atau field
pada masing-masing tabel:
Tabel Petugas
4 no_telp_petugas char(13) –
5 alamat_petugas varchar(100) –
Tabel Anggota
6 no_telp_anggota char(13) –
7 alamat_anggota varchar(100) –
Tabel Buku
5 penerbit_buku varchar(50) –
6 tahun_penerbit char(4) –
7 stok int(11) –
Tabel Rak
Tabel Peminjaman
3 denda int(11) –
Relasi tabel adalah sesuatu yang menggambarkan hubungan antara tabel satu dengan
yang lain pada database. Relasi dibuat pada setiap atribut/field yang menjadi kunci utama
(primary key) pada sebuah tabel kemudian dihubungkan ke field kunci tamu (foreign key)
pada tabel lainnya. Syarat utamanya adalah field yang dijadikan kunci utama (primary key)
harus unik artinya tidak boleh ada data yang sama atau lebih dari satu (duplicate).
Entity Relationship
A. One To One Relation
Mempunyai pengertian setiap baris data pada tabel pertama dihubungkan hanya ke satu
baris data pada tabel ke dua. Hubungan antara file pertama dan file kedua adalah satu
berbanding satu.
Contoh :
Seorang guru mengajar seorang siswa, Seorang siswa diajar oleh seroang guru.
Gambar :
Mempunyai pengertian setiap baris data dari tabel pertama dapat dihubungkan ke satu baris
atau lebih data pada tabel ke dua. Hubungan antara file pertama dan file kedua adalah satu
berbanding banyak atau banyak berbanding satu.
Contoh :
Satu bagian memperkerjakan banyak pegawai, Satu pegawai kerja dalam satu bagian.
Gambar :
C. Many To One Relation
Kebalikan dari relation One To Many dimana setiap baris data dari tabel pertama
dihubungkan lebih dari satu baris ke tabel kedua. Hubungan antara file pertama dan file
kedua adalah banyak berbanding satu.
Contoh :
Gambar :
Mempunyai pengertian Satu baris atau lebih data pada tabel pertama bisa dihubugkan ke
satu atau lebih baris data pada tabel ke dua. Artinya ada banyak baris di tabel satu dan
tabel dua yang saling berhubungan satu sama lain. Hubunga tabel pertama dan tabel kedua
adalah banyak berbanding banyak.
Contoh :
Satu mahasiswa banyak mengambil banyak mata kuliah dan satu mata kuliah diambil
banyak mahasiswa.
Gambar :
Apa itu Entity Relationship Diagram (ERD)?
Basis data mutlak merupakan bagian integral dari sistem perangkat lunak. Untuk
sepenuhnya memanfaatkan Diagram ER dalam rekayasa basis data menjamin Anda untuk
menghasilkan desain basis data berkualitas tinggi untuk digunakan dalam pembuatan,
pengelolaan, dan pemeliharaan basis data. Model ER juga menyediakan sarana untuk
komunikasi.
Entity Relationship Diagram, juga dikenal sebagai ERD, ER Diagram atau model ER, adalah jenis
diagram struktural untuk digunakan dalam desain database. ERD berisi simbol dan konektor berbeda
yang memvisualisasikan dua informasi penting: Entitas utama dalam ruang lingkup sistem ,
Ketika kita berbicara tentang entitas dalam ERD, sangat sering kita merujuk pada objek bisnis
seperti orang / peran (misalnya Siswa), objek bisnis berwujud (misalnya Produk), objek bisnis tidak
berwujud (misalnya Log), dll. "Hubungan" adalah tentang bagaimana entitas-entitas ini berhubungan
Atribut Entitas
Juga dikenal sebagai kolom, atribut adalah properti atau karakteristik entitas yang
menyimpannya .
Atribut memiliki nama yang menggambarkan properti dan tipe yang menggambarkan jenis
atributnya, seperti varchar untuk sebuah string, dan int untuk integer. Ketika ERD dibuat untuk
pengembangan basis data fisik, penting untuk memastikan penggunaan tipe yang didukung oleh
RDBMS target.
Contoh diagram ER di bawah ini menunjukkan entitas dengan beberapa atribut di dalamnya.
Kunci utama
Juga dikenal sebagai PK, kunci utama adalah jenis khusus dari atribut entitas yang secara unik
mendefinisikan catatan dalam tabel database . Dengan kata lain, tidak boleh ada dua (atau lebih) catatan
yang memiliki nilai yang sama untuk atribut primary key. Contoh ERD di bawah ini menunjukkan
entitas 'Produk' dengan atribut kunci primer 'ID', dan pratinjau catatan tabel dalam database. Catatan
ketiga tidak valid karena nilai ID 'PDT-0002' sudah digunakan oleh catatan lain.
Kunci asing
Juga dikenal sebagai FK, kunci asing adalah referensi ke kunci utama dalam sebuah tabel . Ini
digunakan untuk mengidentifikasi hubungan antar entitas. Perhatikan bahwa kunci asing tidak harus
unik. Beberapa catatan dapat berbagi nilai yang sama. Contoh Diagram ER di bawah ini menunjukkan
entitas dengan beberapa kolom, di antaranya kunci asing digunakan dalam referensi entitas lain.
Hubungan
Hubungan antara dua entitas menandakan bahwa kedua entitas tersebut saling terkait satu sama
lain . Misalnya, seorang siswa dapat mendaftar dalam suatu kursus. Entitas Siswa karena itu terkait
dengan Kursus, dan hubungan disajikan sebagai penghubung yang menghubungkan antara mereka.
Kardinalitas
dengan jumlah kejadian di entitas lain . Misalnya, SATU tim memiliki pemain BANYAK. Saat hadir
dalam ERD, entitas Tim dan Pemain saling terhubung dengan hubungan satu-ke-banyak.
Dalam diagram ER, kardinalitas direpresentasikan sebagai kaki gagak di ujung konektor. Tiga
Hubungan satu-ke-satu sebagian besar digunakan untuk membagi entitas menjadi dua untuk
memberikan informasi secara ringkas dan membuatnya lebih dimengerti. Gambar di bawah ini
Hubungan satu-ke-banyak mengacu pada hubungan antara dua entitas X dan Y di mana sebuah
instance X dapat dihubungkan ke banyak instance Y, tetapi sebuah instance Y terkait hanya dengan satu
Hubungan banyak-ke-banyak mengacu pada hubungan antara dua entitas X dan Y di mana X
dapat dikaitkan dengan banyak contoh Y dan sebaliknya. Gambar di bawah ini menunjukkan contoh
hubungan satu ke banyak dalam ERD fisik. Anda akan tahu apa ERD fisik di bagian selanjutnya.
Model data konseptual, Logis, dan Fisik
Model ER biasanya digambar hingga tiga tingkat abstraksi:
ERD Konseptual / model data Konseptual
ERD logis / Model data logis
ERD Fisik / Model data fisik
Sementara ketiga level model ER berisi entitas dengan atribut dan hubungan, mereka berbeda
Pemahaman umum terhadap tiga model data adalah bahwa analis bisnis menggunakan model
konseptual dan logis untuk memodelkan objek bisnis yang ada dalam sistem, sementara perancang basis
data atau insinyur basis data menguraikan model ER konseptual dan logis untuk menghasilkan model
fisik yang menyajikan fisik. struktur basis data siap untuk pembuatan basis data. Tabel di bawah ini
dengan mengenali objek bisnis yang terlibat. Ini mendefinisikan entitas apa yang ada, BUKAN tabel
mana. Sebagai contoh, tabel 'banyak ke banyak' mungkin ada dalam model data logis atau fisik tetapi
mereka hanya ditampilkan sebagai hubungan tanpa kardinalitas di bawah model data konseptual.
Contoh model data konseptual
'semacam' antara dua entitas, misalnya, Segitiga, adalah semacam Bentuk. Penggunaannya seperti
memperkaya model konseptual dengan mendefinisikan secara eksplisit kolom di setiap entitas dan
memperkenalkan entitas operasional dan transaksional. Meskipun model data logis masih independen
dari sistem database aktual di mana database akan dibuat, Anda masih bisa mempertimbangkannya jika
menguraikan model data logis dengan menetapkan setiap kolom dengan jenis, panjang, nullable, dll.
Karena ERD fisik menunjukkan bagaimana data harus disusun dan terkait dalam DBMS tertentu,
penting untuk mempertimbangkan konvensi dan pembatasan sistem basis data aktual di mana basis data
akan dibuat. Pastikan jenis kolom didukung oleh DBMS dan kata-kata yang dipesan tidak digunakan
bagian ini, kami akan memberikan Anda beberapa tips ERD. Coba ikuti langkah-langkah di bawah ini
nip (nomor induk pegawai), dijamin unik karena tiap pegawai pasti
beda.
nama, tidak unik. Agus, Budi, Cahyo biasanya banyak yang pakai.
email, juga unik. Tidak mungkin satu email dipake rame-rame.
Dari ketiga data di atas, hanya dua yang bisa jadi primary key
yaitu nip dan email , karena secara proses bisnis, nilainya harus unik di tiap
record pegawai. Kedua data ini, bila kita pilih salah satunya menjadi primary
key, maka disebut dengan istilah natural key, artinya primary key yang
diambil dari data yang memang sudah ada.
Selain natural key, kita juga bisa membuat data lain yang tidak berkaitan
dengan proses bisnis. Misalnya menambahkan primary key berupa
kolom id di tabel pegawai yang nilainya kita konfigurasi supaya bertambah
satu (increment) tiap ada record baru yang dimasukkan ke tabel.
Kolom id ini disebut dengan istilah surrogate key.
Natural vs Surrogate
Kerugian dari natural key adalah nilainya bisa berubah. Sebagai contoh, bila
perusahaan merger, maka nilai nip bisa dipastikan akan menyesuaikan
dengan perusahaan lain yang dimerger. Bisa formatnya ikut perusahaan lain
tersebut, dan bisa juga membuat format baru sesuai kesepakatan bersama.
Email justru lebih sering berubah. Gak perlu merger, cukup ada layanan yang
menawarkan kapasitas lebih besar, orang langsung bikin akun email baru.
Yang namanya primary key, akan digunakan di tabel lain sebagai foreign key.
Apalagi untuk tabel master, pasti dia akan direlasikan di berbagai tabel
lainnya. Jika primary key berubah, maka semua tabel lain harus ikut diupdate
isi foreign key-nya. Ini akan membutuhkan locking yang luas karena harus
meliputi banyak tabel sekaligus. Semakin luas locking, semakin lemot
performance, karena proses lain harus antri mendapatkan lock.
Kekurangan dari surrogate key adalah ada tambahan space harddisk untuk
menyimpan data kolom tambahan. Juga tambahan space untuk membuat
index dari natural key (yang seharusnya otomatis terindex bila dia menjadi
primary key).
Saya selalu pakai surrogate key. Sebabnya karena space harddisk semakin
lama semakin murah, sedangkan locking problem dan composite key akan
memakan mandays programmer yang semakin lama semakin mahal.
Karena nilai dari surrogate key tidak berhubungan dengan data yang
diwakilinya, maka kita bisa melakukan optimasi dalam pemilihan algoritma
untuk menghasilkan nilai baru. Ada beberapa strategi yang biasa digunakan:
Saya biasa pakai UUID, karena dia dijamin unik siapapun yang menjalankan
generator. Ini akan sangat berguna dalam skenario database terdistribusi
seperti ini.
Misalnya database kita split menjadi database kantor pusat dan kantor
cabang. Masing-masing cabang insert data transaksi ke database yang ada di
kantor cabang. Pada sore hari, database cabang diupload ke kantor pusat
dan digabungkan ke database pusat, bersama-sama dengan data transaksi
dari cabang lain.
Bila kita menggunakan sequence, akan terjadi duplikasi primary key, karena
masing-masing cabang memulai sequence dari angka 1. Cabang A akan
punya data 1 - 100, demikian juga cabang-cabang lain.
Lain halnya bila kita menggunakan UUID. Nilai yang dihasilkan oleh cabang
A dijamin berbeda dengan nilai yang dihasilkan cabang B. Dengan demikian,
kita tinggal insert data cabang A dan cabang B ke database pusat tanpa ada
primary key yang bentrokan.
Tabel Transaksi
Sekarang kita beranjak ke tabel untuk menyimpan data transaksi.
Pola ini bisa kita gunakan untuk aplikasi perpustakaan seperti ini
Ataupun untuk aplikasi bengkel, dimana detailnya ada dua (part dan jasa)
Pola yang sama bisa digunakan dalam pencatatan transaksi lain, misalnya:
Identifying Relationship
Tabel Akumulasi
Terakhir, kita bahas tentang tabel akumulasi. Tabel ini sebetulnya tidak
wajib dibuat. Kita membuat tabel ini terutama untuk alasan performance.
Misalnya kita ingin menampilkan data jumlah stok buku di satu hari tertentu.
Atau kita ingin mencari berapa jumlah barang yang tersisa untuk satu jenis
barang tertentu.
Tanpa tabel akumulasi, kita harus mencari dulu saldo awalnya, kemudian kita
melakukan penjumlahan berapa penambahan dan pengurangan selama
periode bisnis berjalan. Kalau bisnisnya baru jalan 3 hari tidak masalah, tapi
bagaimana kalau sudah jalan 3 tahun? Tentu ada jutaan record yang harus
dijumlahkan oleh database dalam sekali request. Bagaimana kalau usernya
banyak?
id : surrogate key
id_xx : relasi ke tabel master barang/akun/produk/dsb
tanggal : supaya memudahkan, kita buat satu record per hari
saldo_awal : nilai di awal hari
debet : penambahan nilai dalam hari itu
kredit : pengurangan nilai dalam hari itu
Ya kan tinggal dihitung saja. Saldo akhir = saldo awal + debet - kredit.
Gampang kan?
Ada dua pilihan metode dalam mengisi tabel akumulasi ini:
Kesimpulan
Poin penting yang bisa diambil dari artikel ini:
Tentunya tidak semua database, hanya tipe “relational database” bisa di normalisasi.
bentuk data yang yang saat ini di simpan. Sebagai contoh, saya punya data pembelian
Contoh data di atas merupakan data yang belum dinormalisasi, untuk selanjutnya
1NF
Suatu tabel dikatakan 1NF jika dan hanya jika setiap setiap atribut dari
Jadi tabel yang belum normal tadi perlu diubah, sehingga bentuk 1NF menjadi seperti
ini:
Intinya pada tahap 1NF ini tidak diperbolehkan ada grouping data ataupun duplikasi
2NF
Itu adalah batasan keterkaitan antara 2 attribut dalam suatu tabel (pasti banyak yang
bingung).
Intinya adalah pada 2NF ini tabel tersebut harus dipecah berdasarkan primary key.
3NF.
3NF
Intinya adalah pada 3NF ini, jika terdapat suatu atribut yang tidak bergantung pada
primary key tapi bergantung pada field yang lain maka atribut-atribut tersebut perlu
yang bukan merupakan primary key field “tipe_member”. Jadi setelah di normalisasi