Perancangan Basis Data : Sistem manajemen perpustakaan

ABSTRAK

Dalam tugas 1 sistem basis data ini dibuat desain basis data Sistem Manajemen Perpustakaan. Desain basis data meliputi Analisis Persyaratan, Desain basis data konseptual , Desain basis data logika , Perbaikan skema, Desain basis data fisik dan Desain Aplikasi antarmuka.
Digunakan pemodelan Entity Relationship Diagram untuk desain basis data konseptual yang akan tersimpan dan teroganisasi dalam data perpustakaan. SQL diperlukan untuk membuat desain basis data logika . Sistem meliputi entitas kartu perpustakaan, customer, pustakawan, lokasi perpustakaan, buku, video dan relasi diantaranya.

1. Pendahuluan

ER Diagram merupakan merupakan model data berupa notasi grafis dalam pemodelan data konseptual yang menggambarkan hubungan antara penyimpan. Model data sendiri merupakan sekumpulan cara, peralatan untuk mendeskripsikan data-data yang hubungannya satu sama lain, semantiknya, serta batasan konsistensi. Model data terdiri dari model hubungan entitas dan model relasional. Diagram hubungan entitas ditemukan oleh Peter Chen dalam buku Entity Relational Model-Toward a Unified of Data. Chen mencoba merumuskan dasar-dasar model dan setelah itu dikembangkan dan dimodifikai oleh Chen dan banyak pakar lainnya. Pada saat itu diagram hubungan entitas dibuat sebagai bagian dari perangkat lunak yang juga merupakan modifikasi khusus, karena tidak ada bentuk tunggal dan standar dari diagram hubungan entitas [1].

2. Analisis Persyaratan

Berdasarkan sumber [2], sebuah basis data perpustakaan menyimpan informasi tentang customer, petugas, lokasi penyimpanan dan media. Media dibatasi pada 2 (dua) jenis yaitu buku dan video.
Perpustakaan menyimpan informasi tentang lokasi penyimpanan, status, deskripsi dan denda dari setiap media yang menjadi koleksi. Buku memiliki ISBN , sedangkan video memiliki judul dan tahun. Buku dan video dapat digandakan, masing-masing memiliki nomor ID yang unik.
Informasi yang tersimpan dalam kartu perpustakaan customer adalah nama, alamat, no_tlp dan tgl_lahir. Customer akan mendapatkan nomor_ID dan user_name yang unik serta password temporer yang dapat diubah kapanpun.
Perpustakaan memiliki cabang di lokasi yang berbeda. Cabang memiliki atribut nama , alamat dan no telp. Sebagai tambahan cabang perpustakaan memiliki media dan pekerja. Pekerja bekerja di cabang perpustakaan tertentu.

Fasilitas untuk Customer, diantaranya :
1. Login
2. Searching terhadap media yang hendak dicari , berdasarkan :
o type (buku, video atau keduanya)
o judul
o pengarang
o tahun
3. Akses informasi akun personal
○ Denda
○ Media yang tidak ada / keluar .
○ Media yang sedang kita pinjam
4. Pinjam media
5. Membayar denda untuk media yang hilang atau terlambat dikembalikan.
6. Update informasi pribadi:
○ No telp
○ Alamat
○ Password

Pustakawan memiliki fungsi yang sama dengan customer, ditambah dengan kemampuan untuk:
1. menambah customer
2. tambah kartu perpustakaan dan ttd untuk customer
3. Check out media
4. mengatur media yang ada
5. menangani pengembalian
6. mengubah denda customer
7. menambah media dalam basis data
8. menghapus media dari basis data
9. menerima pembayaran dari customer dan update denda customer
10. melihat semua informasi tentang customer kecuali password

3. Desain Basis Data Konseptual

Gambar 1. Entity Relationship Diagram
Sumber :[2]

Informasi tentang buku dan video terpisah dari entity media. Basis data menyimpan lebih dari satu jenis dari item media yang sama tanpa ada redundansi.. Tabel hold , terdapat “queue” , digunakan untuk membuat list customer yang tertarik dengan media. Pustakawan memiliki hak yang sama dengan customer ditambah dengan fungsi administratif seperti cek media yang keluar masuk dan update denda customer.

4. Desain Basis Data Logika / Relational

Desain Basis data relational didapat dari ER diagram. Berikut disajikan 13 tabel dari sistem manajemen perpustakaan.

Tabel 1. Skema Basis Data Logika/ Relational
Status Code Description
Media media_id code )
Book ISBN Title author year dewey price
BookMedia media_id ) ISBN )
Customer ID Name addr DOB phone username Password
Card Num Fines ID )
Checkout media_id ) num ) since until
Location Name Addr phone
Hold media_id ) num ) name ) until queue
Stored_In media_id ) name )
Librarian Eid ID ) Pay name ) since
Video Title Year director rating price
VideoMedia media_id ) title ) year )

Catatan :
1. tanda kurung tutup “)” menunjukkan foreign key
2. garis bawah menunjukkan primary key.

5. Perbaikan Skema / Normalisasi

Table pada basis data diatas merupakan bentuk Third Normal Form (3 NF) untuk mendekomposisi relationship pada form ini, dilakukan pemisahan dari table status dari table Media. Setiap Media memiliki status code dan setiap status code memiliki description.
Akan terjadi redundansi jika dilakukan penyimpanan bersama codes dan descriptions pada Media, oleh karena itu dibuat table status dengan code sebagai primary key.
Entity Card terpisah dari entity Customer untuk menghindari functional dependency (saat atribut “num” dari entity Card entity menentukan atribut “fines”.)

6. Desain Basis Data Fisik

Langkah selanjutnya adalah membuat basis data fisik ( physical database) dan input beberapa data.

CREATE TABLE Status ( code INTEGER, description CHAR(30), PRIMARY KEY (code) );

CREATE TABLE Media( media_id INTEGER, code INTEGER, PRIMARY KEY (media_id),
FOREIGN KEY (code) REFERENCES Status );

CREATE TABLE Book(ISBNCHAR(14), title CHAR(128), author CHAR(64),
year INTEGER, dewey INTEGER, price REAL, PRIMARY KEY (ISBN) );

CREATE TABLE BookMedia( media_id INTEGER, ISBN CHAR(14), PRIMARY KEY (media_id),
FOREIGN KEY (media_id) REFERENCES Media,
FOREIGN KEY (ISBN) REFERENCES Book);

CREATE TABLE Customer( ID INTEGER, name CHAR(64), addr CHAR(256), DOB CHAR(10),
phone CHAR(30), username CHAR(16), password CHAR(32), PRIMARY KEY (ID), UNIQUE (username) );

CREATE TABLE Card( num INTEGER, fines REAL, ID INTEGER, PRIMARY KEY (num),
FOREIGN KEY (ID) REFERENCES Customer );

CREATE TABLE Checkout( media_id INTEGER, num INTEGER, since CHAR(10),
until CHAR(10), PRIMARY KEY (media_id),
FOREIGN KEY (media_id) REFERENCES Media,
FOREIGN KEY (num) REFERENCES Card );

CREATE TABLE Location( name CHAR(64), addr CHAR(256), phone CHAR(30),
PRIMARY KEY (name) );

CREATE TABLE Hold( media_id INTEGER, num INTEGER, name CHAR(64), until CHAR(10),
queue INTEGER, PRIMARY KEY (media_id, num),
FOREIGN KEY (name) REFERENCES Location,
FOREIGN KEY (num) REFERENCES Card,
FOREIGN KEY (media_id) REFERENCES Media );

CREATE TABLE Stored_In( media_id INTEGER, name char(64), PRIMARY KEY (media_id),
FOREIGN KEY (media_id) REFERENCES Media ON DELETE CASCADE,
FOREIGN KEY (name) REFERENCES Location );

CREATE TABLE Librarian( eid INTEGER, ID INTEGER NOT NULL, Pay REAL,
Loc_name CHAR(64) NOT NULL, PRIMARY KEY (eid),
FOREIGN KEY (ID) REFERENCES Customer ON DELETE CASCADE,
FOREIGN KEY (Loc_name) REFERENCES Location(name) );

CREATE TABLE Video( title CHAR(128), year INTEGER, director CHAR(64),
rating REAL, price REAL, PRIMARY KEY (title, year) );

CREATE TABLE VideoMedia( media_id INTEGER, title CHAR(128), year INTEGER,
PRIMARY KEY (media_id), FOREIGN KEY (media_id) REFERENCES Media,
FOREIGN KEY (title, year) REFERENCES Video );

Input beberapa data , dengan perintah sebagai berikut :

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(60201, ‘Jason L. Gray’, ’2087 Timberbrook Lane, Gypsum, CO 81637′,
’09/09/1958′, ’970-273-9237′, ‘jlgray’, ‘password1′);

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(89682, ‘Mary L. Prieto’, ’1465 Marion Drive, Tampa, FL 33602′,
’11/20/1961′, ’813-487-4873′, ‘mlprieto’, ‘password2′);

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(64937, ‘Roger Hurst’, ’974 Bingamon Branch Rd, Bensenville, IL 60106′,
’08/22/1973′, ’847-221-4986′, ‘rhurst’, ‘password3′);

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(31430, ‘Warren V. Woodson’, ’3022 Lords Way, Parsons, TN 38363′,
’03/07/1945′, ’731-845-0077′, ‘wvwoodson’, ‘password4′);

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(79916, ‘Steven Jensen’, ’93 Sunny Glen Ln, Garfield Heights, OH 44125′,
’12/14/1968′, ’216-789-6442′, ‘sjensen’, ‘password5′);

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(93265, ‘David Bain’, ’4356 Pooh Bear Lane, Travelers Rest, SC 29690′,
’08/10/1947′, ’864-610-9558′, ‘dbain’, ‘password6′);

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(58359, ‘Ruth P. Alber’, ’3842 Willow Oaks Lane, Lafayette, LA 70507′,
’02/18/1976′, ’337-316-3161′, ‘rpalber’, ‘password7′);

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(88564, ‘Sally J. Schilling’, ’1894 Wines Lane, Houston, TX 77002′,
’07/02/1954′, ’832-366-9035′, ‘sjschilling’, ‘password8′);

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(57054, ‘John M. Byler’, ’279 Raver Croft Drive, La Follette, TN 37766′,
’11/27/1954′, ’423-592-8630′, ‘jmbyler’, ‘password9′);

INSERT INTO Customer(ID, name, addr, DOB, phone, username, password) VALUES
(49312, ‘Kevin Spruell’, ’1124 Broadcast Drive, Beltsville, VA 20705′,
’03/04/1984′, ’703-953-1216′, ‘kspruell’, ‘password10′);

INSERT INTO Card(num, fines, ID) VALUES ( 5767052, 0.0, 60201);

INSERT INTO Card(num, fines, ID) VALUES ( 5532681, 0.0, 60201);

INSERT INTO Card(num, fines, ID) VALUES ( 2197620, 10.0, 89682);

INSERT INTO Card(num, fines, ID) VALUES ( 9780749, 0.0, 64937);

INSERT INTO Card(num, fines, ID) VALUES ( 1521412, 0.0, 31430);

INSERT INTO Card(num, fines, ID) VALUES ( 3920486, 0.0, 79916);

INSERT INTO Card(num, fines, ID) VALUES ( 2323953, 0.0, 93265);

INSERT INTO Card(num, fines, ID) VALUES ( 4387969, 0.0, 58359);

INSERT INTO Card(num, fines, ID) VALUES ( 4444172, 0.0, 88564);

INSERT INTO Card(num, fines, ID) VALUES ( 2645634, 0.0, 57054);

INSERT INTO Card(num, fines, ID) VALUES ( 3688632, 0.0, 49312);

INSERT INTO Location(name, addr, phone) VALUES (‘Texas Branch’,
’4832 Deercove Drive, Dallas, TX 75208′, ’214-948-7102′);

INSERT INTO Location(name, addr, phone) VALUES (‘Illinois Branch’,
’2888 Oak Avenue, Des Plaines, IL 60016′, ’847-953-8130′);

INSERT INTO Location(name, addr, phone) VALUES (‘Louisiana Branch’,
’2063 Washburn Street, Baton Rouge, LA 70802′, ’225-346-0068′);

INSERT INTO Status(code, description) VALUES (1, ‘Available’);

INSERT INTO Status(code, description) VALUES (2, ‘In Transit’);

INSERT INTO Status(code, description) VALUES (3, ‘Checked Out’);

INSERT INTO Status(code, description) VALUES (4, ‘On Hold’);

INSERT INTO Media( media_id, code) VALUES (8733, 1);

INSERT INTO Media( media_id, code) VALUES (9982, 1);

INSERT INTO Media( media_id, code) VALUES (3725, 1);

INSERT INTO Media( media_id, code) VALUES (2150, 1);

INSERT INTO Media( media_id, code) VALUES (4188, 1);

INSERT INTO Media( media_id, code) VALUES (5271, 2);

INSERT INTO Media( media_id, code) VALUES (2220, 3);

INSERT INTO Media( media_id, code) VALUES (7757, 1);

INSERT INTO Media( media_id, code) VALUES (4589, 1);

INSERT INTO Media( media_id, code) VALUES (5748, 1);

INSERT INTO Media( media_id, code) VALUES (1734, 1);

INSERT INTO Media( media_id, code) VALUES (5725, 1);

INSERT INTO Media( media_id, code) VALUES (1716, 4);

INSERT INTO Media( media_id, code) VALUES (8388, 1);

INSERT INTO Media( media_id, code) VALUES (8714, 1);

INSERT INTO Book(ISBN, title, author, year, dewey, price) VALUES
(’978-0743289412′, ‘Lisey”s Story’, ‘Stephen King’,
2006, 813, 10.0);

INSERT INTO Book(ISBN, title, author, year, dewey, price) VALUES
(’978-1596912366′, ‘Restless: A Novel’, ‘William Boyd’,
2006, 813, 10.0);

INSERT INTO Book(ISBN, title, author, year, dewey, price) VALUES
(’978-0312351588′, ‘Beachglass’, ‘Wendy Blackburn’,
2006, 813, 10.0);

INSERT INTO Book(ISBN, title, author, year, dewey, price) VALUES
(’978-0156031561′, ‘The Places In Between’, ‘Rory Stewart’,
2006, 910, 10.0);

INSERT INTO Book(ISBN, title, author, year, dewey, price) VALUES
(’978-0060583002′, ‘The Last Season’, ‘Eric Blehm’,
2006, 902, 10.0);

INSERT INTO Book(ISBN, title, author, year, dewey, price) VALUES
(’978-0316740401′, ‘Case Histories: A Novel’, ‘Kate Atkinson’,
2006, 813, 10.0);

INSERT INTO Book(ISBN, title, author, year, dewey, price) VALUES
(’978-0316013949′, ‘Step on a Crack’, ‘James Patterson, et al.’,
2007, 813, 10.0);

INSERT INTO Book(ISBN, title, author, year, dewey, price) VALUES
(’978-0374105235′, ‘Long Way Gone: Memoirs of a Boy Soldier’,
‘Ishmael Beah’, 2007, 916, 10.0);

INSERT INTO Book(ISBN, title, author, year, dewey, price) VALUES
(’978-0385340229′, ‘Sisters’, ‘Danielle Steel’, 2006, 813, 10.0);

INSERT INTO BookMedia(media_id, ISBN) VALUES (8733, ’978-0743289412′);

INSERT INTO BookMedia(media_id, ISBN) VALUES (9982, ’978-1596912366′);

INSERT INTO BookMedia(media_id, ISBN) VALUES (3725, ’978-1596912366′);

INSERT INTO BookMedia(media_id, ISBN) VALUES (2150, ’978-0312351588′);

INSERT INTO BookMedia(media_id, ISBN) VALUES (4188, ’978-0156031561′);

INSERT INTO BookMedia(media_id, ISBN) VALUES (5271, ’978-0060583002′);

INSERT INTO BookMedia(media_id, ISBN) VALUES (2220, ’978-0316740401′);

INSERT INTO BookMedia(media_id, ISBN) VALUES (7757, ’978-0316013949′);

INSERT INTO BookMedia(media_id, ISBN) VALUES (4589, ’978-0374105235′);

INSERT INTO BookMedia(media_id, ISBN) VALUES (5748, ’978-0385340229′);

INSERT INTO Checkout(media_id, num, since, until) VALUES
(2220, 9780749, ’02/15/2007′, ’03/15/2007′);

INSERT INTO Video(title, year, director, rating, price) VALUES
(‘Terminator 2: Judgment Day’, 1991, ‘James Cameron’, 8.3, 20.0);

INSERT INTO Video(title, year, director, rating, price) VALUES
(‘Raiders of the Lost Ark’, 1981, ‘Steven Spielberg’, 8.7, 20.0);

INSERT INTO Video(title, year, director, rating, price) VALUES
(‘Aliens’, 1986, ‘James Cameron’, 8.3, 20.0);

INSERT INTO Video(title, year, director, rating, price) VALUES
(‘Die Hard’, 1988, ‘John McTiernan’, 8.0, 20.0);

INSERT INTO VideoMedia(media_id, title, year) VALUES
( 1734, ‘Terminator 2: Judgment Day’, 1991);

INSERT INTO VideoMedia(media_id, title, year) VALUES
( 5725, ‘Raiders of the Lost Ark’, 1981);

INSERT INTO VideoMedia(media_id, title, year) VALUES
( 1716, ‘Aliens’, 1986);

INSERT INTO VideoMedia(media_id, title, year) VALUES
( 8388, ‘Aliens’, 1986);

INSERT INTO VideoMedia(media_id, title, year) VALUES
( 8714, ‘Die Hard’, 1988);

INSERT INTO Hold(media_id, num, name, until, queue) VALUES
(1716, 4444172, ‘Texas Branch’, ’02/20/2008′, 1);

INSERT INTO Librarian(eid, ID, pay, Loc_name) Values
(2591051, 88564, 30000.00, ‘Texas Branch’);

INSERT INTO Librarian(eid, ID, pay, Loc_name) Values
(6190164, 64937, 30000.00, ‘Illinois Branch’);

INSERT INTO Librarian(eid, ID, pay, Loc_name) Values
(1810386, 58359, 30000.00, ‘Louisiana Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(8733, ‘Texas Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(9982, ‘Texas Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(1716, ‘Texas Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(1734, ‘Texas Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(4589, ‘Texas Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(4188, ‘Illinois Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(5271, ‘Illinois Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(3725, ‘Illinois Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(8388, ‘Illinois Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(5748, ‘Illinois Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(2150, ‘Louisiana Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(8714, ‘Louisiana Branch’);

INSERT INTO Stored_In(media_id, name) VALUES(7757, ‘Louisiana Branch’);
INSERT INTO Stored_In(media_id, name) VALUES(5725, ‘Louisiana Branch’);

Basis Data telah dibuat, data terdiri dari 10 Customers, 11 Cards, 3 Locations dan 3 Employees, serta 15 media items, beserta dengan relasinya.

About these ads

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s