Basis data adalah kumpulan data yang saling berhubungan secara logis dan didesain untuk mendapatkan data yang dibutuhkan oleh suatu organisasi (Indrajani, 2015).
Basis data (database) adalah sebuah kumpulan informasi yang disimpan di dalam komputer dan dapat diperiksa, diolah, atau dimanipulasi secara sistematis menggunakan program komputer. Istilah “basis” mengacu pada gudang atau tempat penyimpanan, sedangkan “data” merujuk pada fakta-fakta yang dikumpulkan. Dengan menggunakan basis data, pengguna dapat menyimpan informasi dalam media lain dan mengaksesnya kembali ketika diperlukan.
Komponen-komponen dari basis data terdiri dari:
Perangkat keras (Hardware) : Merupakan komponen fisik yang terdiri dari komputer, server, penyimpanan data, dan perangkat keras lainnya yang digunakan untuk menyimpan dan mengakses basis data.
Sistem Operasi (Operating System) : Merupakan perangkat lunak yang mengelola sumber daya perangkat keras dan menyediakan lingkungan yang diperlukan untuk menjalankan basis data.
Basis Data (Database) : Merupakan kumpulan data yang tersimpan di dalam komputer dan terorganisir dalam suatu struktur tertentu, seperti tabel, relasi, atau objek, untuk memudahkan pengaksesan dan pengelolaan data.
Sistem Manajemen Basis Data (DBMS): Merupakan perangkat lunak yang digunakan untuk mengelola, mengatur, dan mengontrol basis data. DBMS menyediakan antarmuka yang memungkinkan pengguna untuk berinteraksi dengan basis data, melakukan operasi seperti penyimpanan, pengambilan, pembaruan, dan penghapusan data.
Pengguna (User): Merupakan individu atau entitas yang menggunakan basis data. Pengguna dapat memiliki peran yang berbeda, seperti pengguna akhir yang menggunakan aplikasi untuk mengakses dan memanipulasi data, atau administrator basis data yang bertanggung jawab untuk mengatur dan mengelola basis data.
Aplikasi: Merupakan perangkat lunak lain yang digunakan bersama dengan basis data untuk menyediakan fungsionalitas tambahan. Aplikasi ini dapat berupa program khusus yang dibangun untuk keperluan tertentu atau aplikasi umum yang menggunakan basis data sebagai sumber data mereka.
MySQL diciptakan oleh seorang programer asal Swedia yang bernama Michael “Monty” Widenius pada tahun 1995.
MySQL adalah salah satu Relational Database Management System (RDBMS) yang menggunakan bahasa pemrograman SQL (Structured Query Language) sebagai bahasa standarnya dan bersifat open sources dengan dua bentuk lisensi, yaitu free software (bebas diakses secara gratis) dan shareware (penggunanya terbatas). Lisensi MySQL yang biasa kita gunakan adalah MySQL free software yang memiliki lisensi GNU (General Public Licence), sehingga dapat digunakan untuk keperluan pribadi ataupun untuk komersial secara gratis. MySQL biasa digunakan untuk menyimpan berbagai data dalam database yang data-datanya dapat dimanipulasi sesuai keperluan. Manipulasi data tersebut berupa menambah, mengubah dan menghapus data yang berada di dalam database.
Database MySQL memiliki beberapa kelebihan dibandingkan dengan database lainnya, yaitu:
Open Source : MySQL bersifat gratis dan dapat digunakan oleh siapa saja.
Mendukung bahasa pemrograman lain : MySQL bisa melakukan integrasi dengan bahasa pemrograman lain seperti R, Phyton, PHP, JavaScript dll.
Tidak membutuhkan RAM yang besar : MySQL dapat digunakan pada spesifikasi hardware yang rendah.
Multi-user : MySQL dapat digunakan secara bersamaan oleh beberapa user.
Keamanan : MySQL memiliki sistem keamanan yang baik dengan lebih dari satu lapisan keamanan.
Mendukung berbagai macam data : MySQLmendukung berbagai macam data, mulai dari integer, timestamp, text, date, character, float dll.
Struktur tabel fleksibel : MySQL memiliki struktur tabel yang mudah dipakai dan fleksibel.
Seperti software pada umumnya, MySQL juga memiliki beberapa kekurangan, yaitu:
Kurang mampu untuk mengelola database dalam jumlah besar : MySQL dikembangkan untuk ramah dengan perangkat yang memiliki spesifikasi rendah.
Kurang cocok untuk aplikasi game dan mobile : Kebanyakan pengembang game maupun aplikasi mobile tidak menggunakan MySQL karena database ini masih kurang bagus untuk mengembangkan sistem aplikasi tersebut.
Kurang bagus dari segi technical support : MySQL tidak memiliki technical support untuk komunitas, sedangkan pengguna Enterprise tersedia technical support dan berbayar.
## Warning: package 'RMySQL' was built under R version 4.3.3
## Loading required package: DBI
## Warning: package 'DBI' was built under R version 4.3.3
## character(0)
## DATABASE()
## 1 basis
library(DBI)
library(RMySQL)
#MEMBUAT DATABASE BARU
dbExecute(basis, "CREATE DATABASE IF NOT EXISTS `ba20`")
## [1] 1
#MENGGUNAKAN DATABASE BARU
dbExecute(basis,"USE `ba20`")
## [1] 0
#MEMBUAT TABEL MAHASISWA
dbExecute(basis, "
CREATE TABLE Mahasiswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100),
asal VARCHAR(100)
)
")
## [1] 0
#MEMBUAT TABEL JURUSAN
dbExecute(basis, "
CREATE TABLE jurusan (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_jurusan VARCHAR(100)
)
")
## [1] 0
#MEMASUKAN DATA KE DALAM TABEL
tbl_mhs_nw <- "
INSERT INTO Mahasiswa (id, nama, asal)
VALUES (1001, 'Asep','Serang'),
VALUES (1002, 'Beben', 'Serang'),
VALUES (1003, 'Chintia', 'Cilegon'),
VALUES (1004, 'Dadang', 'Tangerang'),
VALUES (1005, 'Edi', null),
VALUES (1006, 'Feby', 'Pandeglang'),
VALUES (1007, 'Gempita', null),
VALUES (1008, 'Helga', 'Cilegon');
"
print(tbl_mhs_nw)
## [1] "\nINSERT INTO Mahasiswa (id, nama, asal)\nVALUES (1001, 'Asep','Serang'),\nVALUES (1002, 'Beben', 'Serang'),\nVALUES (1003, 'Chintia', 'Cilegon'),\nVALUES (1004, 'Dadang', 'Tangerang'),\nVALUES (1005, 'Edi', null),\nVALUES (1006, 'Feby', 'Pandeglang'),\nVALUES (1007, 'Gempita', null),\nVALUES (1008, 'Helga', 'Cilegon');\n"
#MEMASUKAN DATA KE DALAM TABEL
tbl_jrs_nw <- "
INSERT INTO jurusan (id, nama_jurusan)
VALUES (1001, 'Teknik Mesin'),
VALUES (1002, 'Administrasi Publik'),
VALUES (1003, 'Statistika'),
VALUES (1004, 'Statistika'),
VALUES (1005, null),
VALUES (1006, 'Peternakan'),
VALUES (1007, null),
VALUES (1008, 'Informatika');
"
print(tbl_jrs_nw)
## [1] "\nINSERT INTO jurusan (id, nama_jurusan)\nVALUES (1001, 'Teknik Mesin'),\nVALUES (1002, 'Administrasi Publik'),\nVALUES (1003, 'Statistika'),\nVALUES (1004, 'Statistika'),\nVALUES (1005, null),\nVALUES (1006, 'Peternakan'),\nVALUES (1007, null),\nVALUES (1008, 'Informatika');\n"
library(DBI)
library(RMySQL)
#MELIHAT TABEL DALAM DATABASE
tabel<- dbListTables(basis)
print(tabel)
## [1] "jurusan" "mahasiswa"
#MELIHAT TABEL
df_mhs <- dbGetQuery(basis, "SELECT * FROM Mahasiswa")
print(df_mhs)
## [1] id nama asal
## <0 rows> (or 0-length row.names)
df_jrs <- dbGetQuery(basis, "SELECT * FROM jurusan")
print(df_jrs)
## [1] id nama_jurusan
## <0 rows> (or 0-length row.names)
#MENGUPDATE DATA PADA TABEL
query1 <- "
UPDATE Mahasiswa
SET asal = 'Lebak'
WHERE id IN (1005, 1007);
"
print(query1)
## [1] "\nUPDATE Mahasiswa\nSET asal = 'Lebak'\nWHERE id IN (1005, 1007);\n"
query2 <- "
UPDATE jurusan
SET nama_jurusan = 'Psikolog'
WHERE id IN (1005, 1007);
"
print(query2)
## [1] "\nUPDATE jurusan\nSET nama_jurusan = 'Psikolog'\nWHERE id IN (1005, 1007);\n"
#MENGUPDATE DATA PADA TABEL
query3 <- "
UPDATE Mahasiswa
SET asal = 'Lebak'
WHERE id IN (1005, 1007);
"
print(query3)
## [1] "\nUPDATE Mahasiswa\nSET asal = 'Lebak'\nWHERE id IN (1005, 1007);\n"
query4 <- "
UPDATE jurusan
SET nama_jurusan = 'Psikolog'
WHERE id IN (1005, 1007);
"
print(query4)
## [1] "\nUPDATE jurusan\nSET nama_jurusan = 'Psikolog'\nWHERE id IN (1005, 1007);\n"
ORDER BY: Menentukan kolom yang menjadi dasar pengurutan.
ASC: Untuk pengurutan menaik (ascending). Ini adalah pengurutan default, dapat diabaikan jika ingin menaik.
DESC: Untuk pengurutan menurun (descending)
#MENGURUTKAN DATA
#ASC
nama_asc<- "SELECT * FROM Mahasiswa ORDER BY nama ASC"
print(nama_asc)
## [1] "SELECT * FROM Mahasiswa ORDER BY nama ASC"
jurusan_asc<- "SELECT * FROM jurusan ORDER BY nama_jurusan ASC"
print(jurusan_asc)
## [1] "SELECT * FROM jurusan ORDER BY nama_jurusan ASC"
#DESC
nama_desc<- "SELECT * FROM Mahasiswa ORDER BY nama DESC"
print(nama_desc)
## [1] "SELECT * FROM Mahasiswa ORDER BY nama DESC"
jurusan_desc<- "SELECT * FROM jurusan ORDER BY nama DESC"
print(jurusan_desc)
## [1] "SELECT * FROM jurusan ORDER BY nama DESC"
query_inner <- "
SELECT Mahasiswa.id, Mahasiswa.nama, jurusan.nama_jurusan
FROM Mahasiswa
INNER JOIN jurusan
ON Mahasiswa.id_jurusan = jurusan.id;
"
mahasiswa_struct <- dbGetQuery(basis, "DESCRIBE Mahasiswa")
print(mahasiswa_struct)
## Field Type Null Key Default Extra
## 1 id int NO PRI <NA> auto_increment
## 2 nama varchar(100) YES <NA>
## 3 asal varchar(100) YES <NA>
query_left <- "
SELECT Mahasiswa.id, Mahasiswa.nama, jurusan.nama_jurusan
FROM Mahasiswa
LEFT JOIN jurusan
ON Mahasiswa.id = jurusan.id;
"
# Eksekusi query
result_left <- dbGetQuery(basis, "DESCRIBE Mahasiswa")
print(result_left)
## Field Type Null Key Default Extra
## 1 id int NO PRI <NA> auto_increment
## 2 nama varchar(100) YES <NA>
## 3 asal varchar(100) YES <NA>
query5 <- "
SELECT Mahasiswa.id, Mahasiswa.nama, jurusan.nama_jurusan
FROM Mahasiswa
RIGHT JOIN jurusan
ON Mahasiswa.id = jurusan.id;
"
# Eksekusi query
result_right <- dbGetQuery(basis, "DESCRIBE Mahasiswa")
print(result_right)
## Field Type Null Key Default Extra
## 1 id int NO PRI <NA> auto_increment
## 2 nama varchar(100) YES <NA>
## 3 asal varchar(100) YES <NA>
query_full_outer <- "
SELECT Mahasiswa.id, Mahasiswa.nama, jurusan.nama_jurusan
FROM Mahasiswa
LEFT JOIN jurusan
ON Mahasiswa.id = jurusan.id
UNION
SELECT Mahasiswa.id, Mahasiswa.nama, jurusan.nama_jurusan
FROM Mahasiswa
RIGHT JOIN jurusan
ON Mahasiswa.id = jurusan.id;
"
result_full_outer <- dbGetQuery(basis, "DESCRIBE Mahasiswa")
print(result_full_outer)
## Field Type Null Key Default Extra
## 1 id int NO PRI <NA> auto_increment
## 2 nama varchar(100) YES <NA>
## 3 asal varchar(100) YES <NA>
**UNION** menggabungkan hasil dari LEFT JOIN dan RIGHT JOIN untuk
menghasilkan efek seperti FULL OUTER JOIN. Union Digunakan untuk
menggabungkan hasil dari 2 atau lebih perintah Select.
Tipe data adalah suatu bentuk pemodelan data yang dideklarasikan pada saat melakukan pembuatan tabel. Tipe data akan mempengaruhi setiap data yang akan dimasukkan ke dalam tabel, data yang dimasukkan harus sesuai dengan tipe data yang dideklarasikan. di MySQL ada beberapa tipe data, yaitu:
Type Data | Keterangan |
---|---|
TINYINT | Ukuran 1 byte. Bilangan bulat terkecil, dengan jangkauan untuk bilangan bertanda: -128 s/d 127 dan untuk yang tidak bertanda : 0 s/d 255. Bilangan tak bertandai dengan ka |
SMALLINT | Ukuran 2 Byte. Bilangan bulat dengan jangkauan untuk bilangan bertanda : -32768 s/d 32767 dan untuk yang tidak bertanda : 0 s/d 65535 |
MEDIUMINT | Ukuran 3 byte. Bilangan bulat dengan jangkauan untuk bilangan bertanda : -8388608 s/d 8388607 dan untuk yang tidak bertanda : 0 s/d 16777215 |
INT | Ukuran 4 byte. Bilangan bulat dengan jangkauan untuk bilangan bertanda : -2147483648 s/d 2147483647 dan untuk yang tidak bertanda : 0 s/d 4294967295 |
INTEGER | Ukuran 4 byte. Sinonim dari int |
BIGINT | Ukuran 8 byte. Bilangan bulat terbesar dengan jangkauan untuk bilangan bertanda : -9223372036854775808 s/d 9223372036854775807 dan untuk yang tidak bertanda : 0 s/d 1844674473709551615 |
Type Data | Keterangan |
---|---|
FLOAT | Ukuran 4 byte. Bilangan pecahan |
DOUBLE | Ukuran 8 byte. Bilangan pecahan |
DOUBLEPRECISION | Ukuran 8 byte. Bilangan pecahan |
REAL | Ukuran 8 byte. Sinonim dari DOUBLE |
DECIMAL (M,D) | Ukuran M byte. Bilangan pecahan, misalnya DECIMAL(5,2 dapat digunakan untuk menyimpan bilangan -99,99 s/d 99,99 |
NUMERIC (M,D) | Ukuran M byte. Sinonim dari DECIMAL, misalnya NUMERIC(5,2) dapat digunakan untuk menyimpan bilangan -99,99 s/d 99,99 |
Type Data | Keterangan |
---|---|
DATETIME | Ukuran 8 byte. Kombinasi tanggal dan jam, dengan jangkauan dari ‘1000-01-01 00:00:00’ s/d ‘9999-12-31 23:59:59’ |
DATE | Ukuran 3 Byte. Tanggal dengan jangkauan dari ‘1000-01-01’ s/d ‘9999-12-31’ |
TIMESTAMP | Ukuran 4 byte. Kombinasi tanggal dan jam, dengan jangkauan dari ‘1970-01-01 00:00:00’ s/d ‘2037’ |
TIME | Ukuran 3 byte. Waktu dengan jangkauan dari ‘839:59:59’ s/d ‘838:59:59’ |
YEAR | Ukuran 1 byte. Data tahun antara 1901 s/d 2155 |
Type Data | Keterangan |
---|---|
CHAR | Mampu menangani data hingga 255 karakter. Tipe data CHAR mengharuskan untuk memasukkan data yang telah ditentukan oleh kita. |
VARCHAR | Mampu menangani data hingga 255 karakter. Tipe data VARCHAR tidak mengharuskan untuk memasukkan data yang telah ditentukan oleh kita. |
TINYBLOB, TINYTEXT | Ukuran 255 byte. Mampu menangani data sampai 2^8-1 data. |
BLOB, TEXT | Ukuran 65535 byte. Type string yang mampu menangani data hingga 2^16-1 (16M-1) data. |
MEDIUMBLOB, MEDIUMTEXT | Ukuran 16777215 byte. Mampu menyimpan data hingga 2^24-1 (16M-1)data. |
LONGBLOB, LONGTEXT | Ukuran 4294967295 byte. Mampu menyimpan data hingga berukuran GIGA BYTE. Tipe data ini memiliki batas penyimpanan hingga 2^32-1 (4G-1) data. |
ENUM(‘nilai1’,‘nilai2’,…,‘nilaiN’) | Ukuran 1 atau 2 byte. Tergantung jumlah nilai enumerasinya (maksimum 65535 nilai) |
SET(‘nilai1’,‘nilai2’,…,‘nilaiN’) | 1,2,3,4 atau 8 byte, tergantung jumlah anggota himpunan (maksimum 64 anggota) |
Database Management System (DBMS) adalah perangkat lunak yang memungkinkan pemakai untuk mendefinisikan, mengelola, dan mengontrol akses ke basis data. DBMS yang mengelola basis data relational disebut dengan Relational DBMS (RDBMS).Contoh perangkat lunak yang termasuk DBMS: dBase, FoxBase, Rbase, Microsoft-Access, Borland Paradox / Borland Interbase, MS-SQL Server, Oracle, Informix, Sybase, MySQL, dll.
Structure Query Language (SQL) adalah bahasa standar basis data yang digunakan aplikasi atau pemakai untuk berinteraksi dengan basis data melalui DBMS.
SQL dibagi menjadi dua, yaitu:
Data Definision Language (DDL)
DDL adalah sebuah metode Query SQL yang berguna untuk mendefinisikan data pada sebuah Database, Query yang dimiliki DDL adalah :
Create : Digunakan untuk membuat Database dan Tabel
Drop : Digunakan untuk menghapus Tabel dan Database
Alter : Digunakan untuk melakukan perubahan struktur tabel yang telah dibuat, baik menambah field, mengganti nama field, ataupun menamakannya kembali dan menghapus field
#CREATE
tbl_mhs <- "
CREATE TABLE mahasiswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100),
asal VARCHAR(100)
);
"
print(tbl_mhs)
## [1] "\nCREATE TABLE mahasiswa (\n id INT AUTO_INCREMENT PRIMARY KEY,\n nama VARCHAR(100),\n asal VARCHAR(100)\n);\n"
#DROP
dbExecute(basis, "DROP TABLE jurusan")
## [1] 0
#ALTER
# Menambahkan kolom alamat ke tabel mahasiswa
dbExecute(basis, "ALTER TABLE mahasiswa ADD COLUMN alamat VARCHAR(100)")
## [1] 0
# Mengubah nama kolom alamat menjadi alamat_rumah
dbExecute(basis, "ALTER TABLE mahasiswa CHANGE COLUMN alamat alamat_rumah VARCHAR(100)")
## [1] 0
Data Manipulation Language (DML)
DML adalah sebuah metode Query yang dapat digunakan apabila DDL telah terjadi, sehingga fungsi dari Query DML ini untuk melakukan pemanipulasian database yang telah dibuat. Query yang dimiliki DML adalah :
Insert : Digunakan untuk memasukkan data pada Tabel Database
Update : Digunakan untuk pengubahan terhadap data yang ada pada Tabel Database
Delete : Digunakan untuk penghapusan data pada Tabel Database
#INSERT
#MEMASUKAN DATA KE DALAM TABEL
tbl_mhs_nw <- "
INSERT INTO mahasiswa (id, nama, asal)
VALUES (1001, 'Asep','Serang'),
VALUES (1002, 'Beben', 'Serang'),
VALUES (1003, 'Chintia', 'Cilegon'),
VALUES (1004, 'Dadang', 'Tangerang'),
VALUES (1005, 'Edi', null),
VALUES (1006, 'Feby', 'Pandeglang'),
VALUES (1007, 'Gempita', null),
VALUES (1008, 'Helga', 'Cilegon');
"
print(tbl_mhs_nw)
## [1] "\nINSERT INTO mahasiswa (id, nama, asal)\nVALUES (1001, 'Asep','Serang'),\nVALUES (1002, 'Beben', 'Serang'),\nVALUES (1003, 'Chintia', 'Cilegon'),\nVALUES (1004, 'Dadang', 'Tangerang'),\nVALUES (1005, 'Edi', null),\nVALUES (1006, 'Feby', 'Pandeglang'),\nVALUES (1007, 'Gempita', null),\nVALUES (1008, 'Helga', 'Cilegon');\n"
#UPDATE
#MENGUPDATE DATA PADA TABEL
query <- "
UPDATE mahasiswa
SET asal = 'Lebak'
WHERE id IN (1005, 1007);
"
print(query)
## [1] "\nUPDATE mahasiswa\nSET asal = 'Lebak'\nWHERE id IN (1005, 1007);\n"
#DELETE
#Menghapus data mahasiswa dengan nim 1001
dbExecute(basis, "DELETE FROM mahasiswa WHERE id = 1001")
## [1] 0
Data Control Languange (DCL)
DCL adalah sebuah metode Query SQL yang digunakan untuk memberikan hak otorisasi mengakses Database, mengalokasikan space, pendefinisian space, dan pengauditan penggunaan database. Query yang dimiliki DCL adalah :
Grant : Untuk mengijinkan user mengakses Tabel dalam Database
Revoke : Untuk membatalkan izin hak user, yang ditetapkan oleh perintah Grant
Commit : Mentapkan penyimpanan Database
Rollback : Membatalkan penyimpanan Database
#GRANT
# Memberikan hak SELECT kepada user1 untuk tabel mahasiswa
dbExecute(basis, "GRANT SELECT ON ba20.Mahasiswa TO 'root'@'localhost'")
## [1] 0
#REVOKE
# Mencabut hak SELECT dari user1 pada tabel mahasiswa
dbExecute(basis, "REVOKE SELECT ON ba20.Mahasiswa FROM 'root'@'localhost'")
## [1] 0
#COMMIT
# Mulai transaksi
dbBegin(basis)
## [1] TRUE
# Operasi pertama: menambah data
dbExecute(basis, "INSERT INTO Mahasiswa (nama, asal) VALUES ('Fabian', 'Yogyakarta')")
## [1] 1
# Operasi kedua: update data
dbExecute(basis, "UPDATE Mahasiswa SET asal = 'Bali' WHERE nama = 'Dewa'")
## [1] 0
# Jika operasi berhasil, lakukan COMMIT
dbCommit(basis)
## [1] TRUE
#ROLLBACK
dbExecute(basis, "ROLLBACK")
## [1] 0
Menurut Connolly dan Begg (2010:68-71), ada 5 komponen utama dari lingkungan DBMS: Hardware, Software, Data, Prosedur, dan People.
Hardware
DBMS dan aplikasinya memerlukan perangkat keras untuk dapat dijalankan.Perangkatkeras dapat terdiri dari single personal computer, single mainframe, atau sebuah jaringan computer.
Software
Komponen perangkat lunak terdiri dari perangkat lunak DBMS dan program aplikasidengan sistem operasi, didalamnya terdapat perangkat lunak jaringan apabila DBMSmembutuhkan sebuah jaringan untuk digunakan. Pada umumnya program aplikasi ditulisdalam bahasa pemrograman generasi ketiga (3GL) seperti ‘C’, C++, Java, Visual Basic,COBOL, Fortran, Pascal, atau bahasa pemrograman generasi keempat (4GL), sepertiSQL, yang juga terdapat pada bahasa pemrograman generasi ketiga.
Data
Data merupakan komponen penting dalam sebuah DBMS, terutama dari sudutpandang pengguna akhir. Data menghubungkan komponen mesin (Hardware) dengan manusia
Prosedur
Prosedur mengarah pada instruksi dan peraturan yang mengatur rancangan danpenggunaan dari basis data. Ini seperti mencakup instruksi-instruksi, yaitu:
Log on ke DBMS.
Menggunakan fasilitas DBMS program aplikasi tertentu.
Memulai dan mengakhiri DBMS.
Membuat duplikat back-up basis data.
Menangani kerusakan perangkat keras atau perangkat lunak.
Mengubah struktur table, mengatur ulang data antara banyak disk, meningkatkan kinerja atau penyimpanan arsip pada secondary storage
People
People merupakan komponen terakhir yang terlibat dengan sistem.Berikut terdapat beberapa tiperole atau peran yang terlibat dalam sebuah DBMS, yaitu :
Data Administrator (DA) bertanggung jawab dalam mengatur sumber data, meliputiperencanaan basis data, standar pengaturan dan pengembangan, kebijakan danprosedur maupun rancangan konseptual dan logika basis data.
Database Administrator (DBA) bertanggung jawab dalam realisasi fisik basis datameliputi rancangan physicalbasis data dan implementasi, keamanan, dan pengaturanintegritas, menjaga sistem operasional dan memastikan kinerja aplikasi untukkepuasan pengguna.
Mengurangi pengulangan data
Mencapai independensi data
Mengintegrasikan data beberapa file
Mengambil data dan informasi dengan cepat
Meningkatkan keamanan
Menurut Conolly dan begg (2010:80-81), Database Management System (DBMS) memiliki kekurangan, berikut ini merupakan kekurangan DBMS antara lain:
a. Kompleks
DBMS merupakan bagian dari perangkat lunak yang sangat kompleks.Kesalahan terhadap pengertian sistemakan megakibatkan rancangan keputusan yang buruk padasuatu organisasi sehingga perancang basis data dan pengembang basis data, databaseadministrator (DBA) serta end-userperlu mengerti tentang keuntungan fungsional DBMS terlebih dahulu.
b. Ukuran
Kompleksitas dan banyaknya kegunaan dari DBMS menjadikannya sebagaiperangkat lunak yang sangat besar, sehingga memerlukan tempat penyimpanan datayang besar dan juga membutuhkan memori yang cukup agar bisa berjalan secaraefisien.
c. Biaya
Biaya yang dikeluarkan untuk DBMS sangat bervariasi, tergantung dari lingkungandan kegunaan yang disediakan oleh DBMS tersebut.
d. Biaya tambahan untuk perangkat keras
Kebutuhan tempat penyimpanan data untuk DBMS dan basis data mungkinmengharuskan pembelian tempat khusus penyimpanan data tambahan.
e. Biaya Konversi
Dalam situasi tertentu, biaya untk DBMS dan perangkat keras tambahan dapatmenjadi penting dibanng dengan biaya konversi dari aplikasi yang sudah ada agar dapatberjalan di DBMS dan perangkat keras baru.
f. Performa
g. Kemungkinan gagal yang tinggi
Pemusatan dari sumber daya meningkatkan kerentanan sistemyang disebabkan olehsemua pemakai dan aplikasi bergantung pada ketersediaan dari DBMS, kegagalan darisalah satu komponen dapat membuat operasi terhent
Entity Relationship Diagram (ERD) adalah salah satu alat penting dalam pengembangan sistem infromasi, khususnya dalma perancangan basis data. ERD membantu mengilustrasikan hubungan antara entitas-entitas dalam sebuah sistem, memfasilitasi pemahaman yang lebih baik tentang struktur data dan interaksi antar komponen. ERD adalah representasi visual dari struktur basis dayang yang menggambarkan entitas, atribut dan hubungan antar entitas tersebut. entitas dapat diartikan sebagai objek atau konsep yang dapat dibedakan dan memiliki data yang disimpan dalam basis data.
Sebelum mmebuat perancangan sistem yang tepat, harus terlebih dahulu mengetahui jenis model data yang digunakan. Karena model data tersebut dapat berpengaruh dalma pengembangan sistem.
Model Data Konseptual Adalah model data paling tinggi karena di dalamnya berisi data-data yang detail. Data konseptual ini dapat digunakan sebagai dasar untuk membuat satu atau lebih model data logis. Tujuan dari pengembangan model data konseptual adalah untuk memberikan gambaran yang jelas mengenaik struktur database yang terdiri dari entitas dan relasi antar setiap entitas.
Model Data Logis Adalah pengembangan dari model data konseptual, itu sebabnya dalam proses pembuatannya model data ini dibuat lebih rinci dari model data konseptual dan dibuat setelah model data konseptual selesai dibuat. Model ini digunakan untuk menambah infromasi secara eksplisit kedalam unsur-unsur model konseptual.
Model Data Fisik Adalah pengembangan dari masing-masing model data logis. Model data ini biasanya digunakan untuk merancang sebuah database.
Kardinalitas atau derajat relasi adalah jumlah maksimum entitas yang dapat berelasi pada entitas lainnya. Jika diberikan dua himpunan entitas (yaitu A dan B), maka kardinalitas relasinya dibedakan menjadi 4 jenis, yaitu:
Satu ke Satu (One to One), yang berarti satu entitas A berhubungan paling banyak satu dengan entitas B. Begitupun sebaliknya, satu entitas pada himpunan B berhubungan paling banyak satu dengan entitas A.
Satu ke Banyak (One to Many), yang berarti satu entitas A dapat berhubungan lebih dari satu dengan entitas B. Namun tidak berlaku sebaliknya, dimana setiap entitas pada himpunan entitas B berhubungan dengan paling banyak dengan satu entitas pada himpunan entitas A.
Banyak ke Satu (Many to One), yang berarti satu entitas A berhubungan paling banyak dengan satu entitas B. Namun tidak berlaku sebaliknya, dimana setiap entitas pada himpunan entitas B dapat berhubungan lebih dari satu dengan entitas A. Kardinalitas relasi Satu ke Banyak dan Kardinalitas relasi Banyak ke Satu dapat dianggap sama, karena tinjauan kardinalitas relasi selalu dapat dilihat dari dua sisi. Artinya, posisi himpunan entitas A dan himpunan entitas B dapat saja ditukar.
Banyak ke Banyak (Many to Many), yang berarti satu entitas A dapat berhubungan lebih dari satu dengan entitas B dan sebaliknya.
Berikut adalah tahapan dalam perancangan ERD:
Buatlah sebuah database untuk sistem manajemen perpustakaan. Buat tabel bernama “buku” dengan id buku sebagai primary key.
- ID buku
- Judul buku
- Pengarang
- Tahun terbit
- Jumlah stok buku
Masukan data ke tabel dengan
id_buku | judul | pengarang | tahun_terbit | stok |
---|---|---|---|---|
1 | Pemrograman | Andidas | 2020 | 10 |
2 | Belajar SQL | Bram wijaya | 2021 | 5 |
3 | Data Analis | Saraswati | 2018 | 6 |
4 | RStudio | Beni | 2017 | 8 |
5 | Data Science | Macca | 2021 | 5 |
6 | Excel | Diandra | 2018 | 2 |
Ambil buku yang stoknya kurang dari 10,
Tunjukkan hasil dari tabel buku yang terbaru.
Mengurutkan data
Urutkan tabel buku berdasarkan tahun terbit pada urutan menurun. Tuliskan bagaimana perintah SQLnya dan tunjukkan hasil tabel yang sudah diurutkan.
Urutkan tabel buku berdasarkan stok dalam urutan menurun, lalu semester dalam urutan menaik. Tuliskan bagaimana perintah SQLnya dan tunjukkan hasil tabel yang sudah diurutkan :::
Menggabungkan Tabel
Terdapat tabel dengan data
id_peminjaman | id_buku | nama_anggota |
---|---|---|
1 | 1 | Dikhi |
2 | 2 | Kartika |
3 | 4 | Teguh |
4 | 3 | Iqbal |
5 | 2 | Setiawan |
Berdasarkan Tabel sebelumnya buatlah query SQL untuk menampilkan daftar judul buku beserta nama peminjamnya dari tabel buku dan peminjaman.
Buatlah tabel untuk menampilkan daftar semua buku dan nama peminjam, termasuk buku yang tidak dipinjam.
Tulislah query untuk menampilkan semua peminjaman beserta detail buku yang dipinjam, termasuk peminjaman yang tidak memiliki buku yang tercatat.
Buatkan untuk menampilkan semua peminjaman dan semua buku, meskipun ada peminjaman tanpa buku atau buku tanpa peminjaman.