Pengaplikasian SQL Database dalam Pengolahan Data Wrapped Spotify

Program

Import Library

Menginport library dibutuhkan paling awal agar dapat membaca package yang akan digunakan

library(RMySQL)
## Warning: package 'RMySQL' was built under R version 4.5.2
## Loading required package: DBI
## Warning: package 'DBI' was built under R version 4.5.2
library(DBI)
library(DT)
## Warning: package 'DT' was built under R version 4.5.2

Menghubungkan Server Database Ke RStudio

dbb <- dbConnect(
  RMySQL::MySQL(),
  host = "127.0.0.1",
  user = "root",
  password = "")

##Program ### Membuat dan Mengakses Database Baru Diperlukan suatu database untuk menyimpan suatu data tabel

dbExecute(dbb, "CREATE DATABASE IF NOT EXISTS SpotifyWrapped")
## [1] 1
dbExecute(dbb, "USE SpotifyWrapped")
## [1] 0

Membuat Tabel Data Baru Dalam Database yang Telah dibuat

Menggunakan database sebelumnnya, lalu buatkan sebuah tabel didalamnya

1. Tabel User

dbExecute(dbb, "
CREATE TABLE IF NOT EXISTS User (
id_user INT PRIMARY KEY,
nama VARCHAR(50)
);
")
## [1] 0

2. Tabel Artist

dbExecute(dbb, "
CREATE TABLE IF NOT EXISTS Artist (
id_artist INT PRIMARY KEY,
nama_artist VARCHAR(100)
);
")
## [1] 0

3. Tabel Genre

dbExecute(dbb, "
CREATE TABLE IF NOT EXISTS Genre (
id_genre INT PRIMARY KEY,
nama_genre VARCHAR(50)
);
")
## [1] 0

4. Tabel Song

dbExecute(dbb, "
CREATE TABLE IF NOT EXISTS Song (
id_song INT PRIMARY KEY,
judul VARCHAR(100),
id_artist INT,
id_genre INT,
FOREIGN KEY(id_artist) REFERENCES Artist(id_artist),
FOREIGN KEY(id_genre) REFERENCES Genre(id_genre)
);
")
## [1] 0

5. Tabel Streaming

dbExecute(dbb, "
CREATE TABLE IF NOT EXISTS streaming (
  id_stream INT PRIMARY KEY,
  id_user INT,
  id_song INT,
  durasi INT,
  INDEX (id_user),
  INDEX (id_song),
  FOREIGN KEY (id_user) REFERENCES user(id_user)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  FOREIGN KEY (id_song) REFERENCES song(id_song)
    ON DELETE CASCADE
    ON UPDATE CASCADE
) ENGINE=InnoDB;
")
## [1] 0

Memasukkan Data ke Dalam Tabel

Mengisi suatu data pada tabel-tabel yg telah dibuat #### 1. Memasukkan Data ke Dalam Tabel User

dbExecute(dbb, "
INSERT INTO User VALUES
(1,'Alwan'),
(2,'Alex'),
(3,'Sefka');
")
## [1] 3

2. Memasukkan Data ke Dalam Tabel Artist

dbExecute(dbb, "
INSERT INTO Artist VALUES
(10,'Rizky Febian'),
(11,'Westlife'),
(12,'Ardhito Pramono'),
(13,'Tenxi');
")
## [1] 4

3. Memasukkan Data ke Dalam Tabel Genre

dbExecute(dbb, "
INSERT INTO Genre VALUES
(20,'Pop'),
(21,'Jazz'),
(22,'R&B');
")
## [1] 3

4. Memasukkan Data ke Dalam Tabel Song

dbExecute(dbb, "
INSERT INTO Song VALUES
(100,'Alamak',10,20),
(101,'If I Let You Go',11,20),
(102,'Waking Up Together With You',12,21),
(103,'Attached',13,22);
")
## [1] 4

5. Memasukkan Data ke Dalam Tabel Streaming

dbExecute(dbb, "
INSERT INTO Streaming VALUES
(201,1,100,180),
(202,1,103,200),
(203,2,102,150),
(204,3,101,210),
(205,3,100,180),
(206,3,102,200);
")
## [1] 6

Study Kasus

Berdasarkan database yang telah di buat dan tabel-tabel yang ada dalam database, pada kali ini saya akan menampilkan hasilnya
### Menampilkan Isi Tabel

1. Menampilkan Isi Tabel User

2. Menampilkan Isi Tabel Artist

3. Menampilkan Isi Tabel Genre

4. Menampilkan Isi Tabel Song

5. Menampilkan Isi Tabel Streming

Laporan Lagu Paling Sering Diputar Tahun Ini

Artist Favorit Tahun Ini

Genre Favorit Tahun Ini

Total Durasi Mendengarkan Tahun Ini

Spotify Wrapped Per User