Deskripsi Projek SQL + RShiny Sesi UTS

Projek yang akan dilakukan pada praktikum STA1562 Manajemen Data Statistika ini akan memanfaatkan Database MySQL dan aplikasi RShiny, terdapat beberapa hal yang perlu diperhatikan mahasiswa dalam projek ini antara lain sebagai berikut :

  1. Software dan Tools yang akan digunakan mahasiswa pada sesi projek praktikum antara lain dbngin, RShiny, dan Github
  2. Silahkan teman-teman untuk mempelajari cara meng-install software yang digunakan pada link berikut
    1. dbngin : https://ralphjsmit.com/set-up-dbngin-tableplus
    2. Github : https://resources.github.com/github-and-rstudio/
    3. RShiny : https://halimatusyak.medium.com/membuat-dashboard-dengan-r-shiny-3ab0c0d933fc
  3. Teman-teman akan dibagi menjadi beberapa kelompok dan tema E-Commerce, Lingkungan, Pendidikan, Hiburan dan Sosial Media, Kesehatan, dan Olahraga
  4. Projek ini akan dipresentasikan pada pertemuan ke-7, setiap kelompok akan dibagi menjadi beberapa role

Konfigurasi MySQL menggunakan R

Pertemuan ini kita akan mempelajari bagaimana cara kita membuat suatu koneksi database ke SQL dan membuat tabel untuk di migrasikan ke dalam database yang teman-teman sudah buat.

kondisi awal database baru yang telah dibuat
kondisi awal database baru yang telah dibuat
# Install package yang diperlukan
## install.packages(c("DBI", "RMySQL", "glue")) 
library(DBI)
## Warning: package 'DBI' was built under R version 4.3.3
library(RMySQL)
## Warning: package 'RMySQL' was built under R version 4.3.3
library(glue)
## Warning: package 'glue' was built under R version 4.3.3
# 1. Konfigurasi Database DBngin
#db_config <- list(
 # host = "127.0.0.1",
  # port = 3309,          # Port MySQL di DBngin
  # user = "root",
  # password = "",
  # dbname = "mds_db"    # Nama database yang akan dibuat
# )
# Abaikan tanda "#"
# 2. Membuat koneksi ke MySQL server (tanpa database spesifik)
#con <- dbConnect(
#  MySQL(),
#  host = db_config$host,
#  port = db_config$port,
#  user = db_config$user,
#  password = db_config$password
# )

# 3. Membuat database jika belum ada
# tryCatch({
#  dbExecute(con, glue("CREATE DATABASE IF NOT EXISTS {db_config$dbname}"))
#  message("Database ", db_config$dbname, " berhasil dibuat/ditemukan")
# }, error = function(e) {
#  message("Gagal membuat database: ", e$message)
# })
# 4. Membuat struktur tabel
# table_definitions <- list(
#  users = "
#    CREATE TABLE IF NOT EXISTS users (
#      user_id INT AUTO_INCREMENT PRIMARY KEY,
#      nama VARCHAR(100) NOT NULL,
#      tanggal_lahir DATE,
#      jenis_kelamin ENUM('L', 'P'),
#      email VARCHAR(100) UNIQUE,
#      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
#    )
#  ",
  
#  pekerjaan = "
#    CREATE TABLE IF NOT EXISTS pekerjaan (
#      pekerjaan_id INT AUTO_INCREMENT PRIMARY KEY,
#      user_id INT,
#      jabatan VARCHAR(100),
#      perusahaan VARCHAR(100),
#      tahun_mulai YEAR,
#      FOREIGN KEY (user_id) REFERENCES users(user_id)
#        ON DELETE CASCADE
#        ON UPDATE CASCADE
#    )
#  ",
  
#  alamat = "
#    CREATE TABLE IF NOT EXISTS alamat (
#      alamat_id INT AUTO_INCREMENT PRIMARY KEY,
#      user_id INT,
#      jalan VARCHAR(255),
#      kota VARCHAR(100),
#      provinsi VARCHAR(100),
#      kode_pos VARCHAR(10),
#      FOREIGN KEY (user_id) REFERENCES users(user_id)
#        ON DELETE CASCADE
#        ON UPDATE CASCADE
#    )
#  "
# )

Jika sudah mengeksekusi kode diatas maka tampilan database akan bertambah tablenya seperti gambar dibawah ini

kondisi setelah diisi table melalui migrasi r
kondisi setelah diisi table melalui migrasi r
# 5. Eksekusi pembuatan tabel
#tryCatch({
  # Buka koneksi ke database spesifik
#  con_db <- dbConnect(
#    MySQL(),
#    host = db_config$host,
#    port = db_config$port,
#    user = db_config$user,
#    password = db_config$password,
#    dbname = db_config$dbname
#  )
  
  # Mulai transaksi
#  dbBegin(con_db)
  
  # Buat semua tabel
#  for (table_name in names(table_definitions)) {
#    dbExecute(con_db, table_definitions[[table_name]])
#    message("Tabel ", table_name, " berhasil dibuat")
#  }
  
  # Commit transaksi
#  dbCommit(con_db)
  
  # Verifikasi tabel yang dibuat
#  existing_tables <- dbGetQuery(con_db, "SHOW TABLES")
#  message("\nTabel yang tersedia di database ", db_config$dbname, ":")
#  print(existing_tables)
  
# }, error = function(e) {
#  dbRollback(con_db)
#  message("Error membuat tabel: ", e$message)
# }, finally = {
#  dbDisconnect(con_db)
#  dbDisconnect(con)
#  message("\nKoneksi database ditutup")
# })
# con_db <- dbConnect(
#  MySQL(),
#  host = db_config$host,
#  port = db_config$port,
#  user = db_config$user,
#  password = db_config$password,
#  dbname = db_config$dbname
# )

# Lihat struktur tabel users
# dbGetQuery(con_db, "DESCRIBE users")
# dbDisconnect(con_db)