Database System

Tugas 2 sistem Basis Data


Kontak : \(\downarrow\)
Email
Instagram https://www.instagram.com/dsciencelabs/
RPubs https://rpubs.com/dsciencelabs/

What is MariaDB

MariaDB adalah sistem manajemen basis data relasional sumber terbuka. Mariadb mirip dengan MySQL (sistem manajemen basis data) dan merupakan cabang dari MySQL. Seperti database relasional lainnya, MariaDB menyimpan data dalam tabel yang terdiri dari baris dan kolom. Pengguna dapat mendefinisikan, memanipulasi, mengontrol, dan membuat kueri data menggunakan Bahasa Kueri Terstruktur, yang lebih dikenal sebagai SQL .

Beberapa perusahaan yang menggunakan MariaDB termasuk RedHat , Ubuntu, Google, Wikipedia, Tumblr, Amazon Web Services, SUSE Linux, dan banyak lagi.

What is RMySQL

RMySQL adalah antarmuka basis data dan driver MySQL untuk R. Kita menggunakan MySQL sebagai database atau data untuk menghubungkan ke R. Disini, kita menggunakan bahasa R untuk menyiapkan dan menyambungkan ke tabel di MySQL. ntuk membuat koneksi MySQL di R, kita memerlukan parameter yaitu menggunakan driver RMySQL::MySQL().Pada koneksi R dengan MySQL dibutuhkan host (IP address), dbname (nama database), user (username untuk akses database), dan password (password untuk akses database).

What is RSQLite

RSQLite merupakan sebuah langkah yang dapat dilakukan dengan mudah untuk menggunakan database SQLite dari R dan menyediakan antarmuka yang kompatibel sesuai dengan DBI yang tidak memerlukan perangkat lunak eksternal. Untuk membuat koneksi SQLiArgumen berikutnya di SQLite adalah loaksi dan nama file database SQLite. te di R, kita memerlukan parameter yaitu menggunakan driver RSQLite::SQLite().

The Differences

  • MariaDB : MariaDB memiliki kumpulan koneksi yang lebih besar yang mendukung hingga 200.000+ koneksi. MariaDB hadir dengan fitur dan ekstensi baru termasuk pernyataan JSON, WITH dan KILL. Mariadb menggunakan bahasa C dan C++ dalam pengkodeannya. Mendukung format XML
  • MySQL : MySQL memiliki kumpulan koneksi yang lebih kecil.MySQL dikembangkan dalam bahasa C dan C++. MySQL membutuhkan server database untuk berfungsinya. Mendukung format XML
  • SQLite : SQLite secara eksplisit memungkinkan banyak koneksi. SQLite dikembangkan hanya dalam bahasa C. SQLite tidak memerlukan server untuk dijalankan. Tidak mendukung format XML.

Getting Started

Memuat semua paket menggunakan pacman.

pacman::p_load(DBI,       # memabntu menguhubungkan R ke DBMS
               odbc,      # menhubungkan ke database yang kompatibel dengan ODBC
               RMariaDB,  # antarmuka basis data dan driver 'MariaDB'
               RMySQL,    # antarmuka basis data dan driver 'RMySQL'
               RSQLite    # antarmuka basis data dan driver 'RSQLite'
          )

Connecting R to SQL

Terdapat banyak cara dalam mengubungkan database pada R. Ada 3 cara yang paling umum yaitu:

Create MariaDB

MariaDB <- dbConnect(MariaDB(),
                     user='root',
                     password='',
                     dbname='mysql',
                     host='localhost')
dbListTables(MariaDB)
dbExecute(MariaDB, "CREATE DATABASE new_MariaDB")

Create new_MariaDB

dbExecute(MariaDB, "DROP DATABASE new_MariaDB")

drop new_MariaDB

Create RMySQL

MySQL <- dbConnect(MySQL(),
                   user='root',
                   password='',
                   dbname='mysql',
                   host='localhost')
dbListTables(MySQL)
dbExecute(MySQL, "CREATE DATABASE new_MySQL")

Create new_MySQL

dbExecute(MySQL, "DROP DATABASE new_MySQL")

Drop new_MySQL

Create RSQLite

RSQLite <- dbConnect(RSQLite::SQLite(), "mydb3.sqlite")
dbListTables(RSQLite)                                          

Create mydb3.sqlite

Import Data

Datatabel diperlukan pengimportan kumpulan data sesuai dengan file yang tersedia jika belum terdaftar di database. Jika sudah terdaftar, tidak diperlukan tahapan pengimportan data lagi.

CSV Files

Customers <- read.csv("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/Customers.csv")
Categories <- read.csv("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/Categories.csv")
Employees <- read.csv("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/Employees.csv")
OrderDetail <- read.csv("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/OrderDetails.csv")
Orders <- read.csv("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/Orders.csv")
Products <- read.csv("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/Products.csv")
Shippers <- read.csv("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/Shippers.csv")
Suppliers <- read.csv("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/Suppliers.csv")

XLSX Files

library("readxl")

Customers <- read_excel("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/RawDatabase.xlsx", sheet=1)
Categories <- read_excel("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/RawDatabase.xlsx", sheet=2)
Employees <- read_excel("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/RawDatabase.xlsx", sheet=3)
OrderDetail <- read_excel("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/RawDatabase.xlsx", sheet=4)
Orders <- read_excel("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/RawDatabase.xlsx", sheet=5)
Products <- read_excel("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/RawDatabase.xlsx", sheet=6)
Shippers <- read_excel("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/RawDatabase.xlsx", sheet=7)
Suppliers <- read_excel("C:/Users/HP/OneDrive/Documents/kuliah/R/database system/tugas2/RawDatabase.xlsx", sheet=8)

Create RawDatabase in Excel

Write Dataframe to Database

Menggunakan dbWriteTable untuk menulis bingkai data R langsung ke tabel database. Nama kolom bingkai data digunakan sebagai bidang tabel databse. Dengan menggunakan RMariaDB, kita dapat menerapkan driver yang diinginkan.

new_con <- dbConnect(MariaDB(),
                     user='root',
                     password='',
                     dbname='new_mariadb',
                     host='localhost')

dbWriteTable(new_con, "Customers", Customers, append=T)
dbWriteTable(new_con, "Categories", Categories, append=T)
dbWriteTable(new_con, "Employees", Employees, append=T)
dbWriteTable(new_con, "Orders", Orders, append=T)
dbWriteTable(new_con, "OrderDetail", OrderDetail, append=T)
dbWriteTable(new_con, "Products", Products, append=T)
dbWriteTable(new_con, "Shippers", Shippers, append=T)
dbWriteTable(new_con, "Suppliers", Suppliers, append=T)

Dalam meyimpan data tabel, terdapat beberapa hal yang harus diperhatikan yaitu:
- Penyesuaian Struktur Data
- Perubahan Tipe Data (tanggal dan waktu)

Dalam mempertimbangkan data employees dan Orders, ditemukan tidak terdapat penulisan tanggal yang benar pada database. Untuk menangani masalah terbsebut, bisa digunakan cara sebagai berikut:

dbRemoveTable(new_con, "Orders")
Orders["OrderDate"] <- as.Date(Orders$OrderDate, format = "%Y-%m-%d")
dbWriteTable(new_con, "Orders", Orders, append=T)

Dataframe dalam new_mariadb

General Query

Select From

Digunakan untuk meyeleksi data dari database

library(DT)
df1 <- dbGetQuery(new_con, 'SELECT City, Address, Country FROM Customers')

Where

Digunakan dalam memfilter record, mengekstrak hanya record yang memenuhi kondisi tertentu.

df2 <- dbGetQuery(new_con, "SELECT *
                           FROM Customers
                           WHERE COuntry='GERMANY' ")
datatable(df2)

Insert Into

Digunakan jika ingin menambahkan nilai pada semua kolom tabel, tidak perlu menentukan nama kolom dalam query SQL, namun hanya memastikan nilai dalam urutan yang sama dengan kolom yang ada pada tabel.

dbExecute(new_con, "INSERT INTO Customers(CustomerName, ContactName, Address, City, PostalCOde, COuntry)
VALUES('Bakti', 'Siregar', 'Jl.Bahagia Selalu', 'Tanggerang', '081369', 'Indonesia')")

Delete From

Digunakan utnuk menghapus catatan yang ada pada tabel.

dbExecute(new_con, "DELETE FROM Customers
                   WHERE CustomerName = 'Bakti' ")

Update

Digunakan untuk mengubah catatan yang ada pada tabel

dbExecute(new_con, "UPDATE Customers
                   SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
                   WHERE CustomerID = 1")

Disconnest Database

Jika sudah selesai dalam proses Query dan tidak inginmenggunakannya lagi, dapat memutuskan koneksi dari database tersebut

dbDisconnect(new_con)