Tugas Pertemuan 14 PPL - Desain Database

Nama Akmal Sulthon Fathulloh
NRP 5025211047
Kelas PPL - A

Desain Basis Data adalah kumpulan proses yang memfasilitasi perancangan, pengembangan, implementasi, dan pemeliharaan sistem manajemen data perusahaan. Basis data yang dirancang dengan benar mudah dipelihara, meningkatkan konsistensi data, dan hemat biaya dalam hal ruang penyimpanan disk. Desainer database memutuskan bagaimana elemen data berkorelasi dan data apa yang harus disimpan. Pada pertemuan ke-14 ini, kita diminta untuk membuat database untuk aplikasi social media foto sharing - Instagram

Desain Basis Data

Basis data Instagram harus dirancang untuk menyimpan data pengguna, konten, interaksi pengguna, dan informasi lainnya. Berikut adalah beberapa tabel yang mungkin diperlukan dalam desain basis data Instagram:

Tabel users

Tabel users berisi informasi pengguna seperti nama pengguna, email, kata sandi, nama lengkap, biografi, dan gambar profil. Tabel ini juga mencatat waktu pembuatan akun dan pembaruan terakhir.

Kolom Tipe Data Deskripsi
user_id INT Primary key, auto-increment
username VARCHAR Nama pengguna, unik
email VARCHAR Email pengguna, unik
password VARCHAR Kata sandi pengguna, terenkripsi
full_name VARCHAR Nama lengkap pengguna
bio VARCHAR Biografi pengguna
profile_image VARCHAR URL gambar profil
created_at TIMESTAMP Waktu pembuatan akun
updated_at TIMESTAMP Waktu pembaruan terakhir

Tabel posts

Tabel posts berisi informasi postingan pengguna seperti gambar, deskripsi, lokasi, dan waktu unggah. Tabel ini juga mencatat waktu pembaruan terakhir.

Kolom Tipe Data Deskripsi
post_id INT Primary key, auto-increment
user_id INT Foreign key ke tabel users
image_url VARCHAR URL gambar postingan
caption TEXT Deskripsi postingan
location VARCHAR Lokasi postingan
created_at TIMESTAMP Waktu unggah postingan
updated_at TIMESTAMP Waktu pembaruan terakhir

Tabel comments

Tabel comments berisi komentar pengguna pada postingan, termasuk ID postingan, ID pengguna, isi komentar, dan waktu pembuatan komentar. Tabel ini juga mencatat waktu pembaruan terakhir.

Kolom Tipe Data Deskripsi
comment_id INT Primary key, auto-increment
post_id INT Foreign key ke tabel posts
user_id INT Foreign key ke tabel users
comment TEXT Isi komentar
created_at TIMESTAMP Waktu pembuatan komentar
updated_at TIMESTAMP Waktu pembaruan terakhir

Tabel likes

Tabel likes berisi informasi like yang diberikan oleh pengguna pada postingan. Tabel ini mencatat ID postingan, ID pengguna, dan waktu like diberikan.

Kolom Tipe Data Deskripsi
like_id INT Primary key, auto-increment
post_id INT Foreign key ke tabel posts
user_id INT Foreign key ke tabel users
created_at TIMESTAMP Waktu like diberikan

Tabel follows

Tabel follows berisi informasi pengguna yang diikuti oleh pengguna lain. Tabel ini mencatat ID pengikut, ID yang diikuti, dan waktu mulai mengikuti.

Kolom Tipe Data Deskripsi
follow_id INT Primary key, auto-increment
follower_id INT Foreign key ke tabel users (pengikut)
following_id INT Foreign key ke tabel users (yang diikuti)
created_at TIMESTAMP Waktu pengguna mulai mengikuti pengguna lain

Tabel messages

Tabel messages berisi pesan yang dikirim oleh pengguna melalui fitur Direct Messaging. Tabel ini mencatat ID pesan, ID pengirim, ID penerima, isi pesan, dan waktu pengiriman pesan.

Kolom Tipe Data Deskripsi
message_id INT Primary key, auto-increment
sender_id INT Foreign key ke tabel users (pengirim)
receiver_id INT Foreign key ke tabel users (penerima)
content TEXT Isi pesan
created_at TIMESTAMP Waktu pengiriman pesan

Tabel notifications

Tabel notifications berisi notifikasi yang diterima oleh pengguna, seperti like, komentar, atau follow. Tabel ini mencatat ID notifikasi, ID pengguna, tipe notifikasi, ID terkait, waktu notifikasi dibuat, dan waktu notifikasi dibaca.

Kolom Tipe Data Deskripsi
notification_id INT Primary key, auto-increment
user_id INT Foreign key ke tabel users
type VARCHAR Tipe notifikasi (like, komentar, follow, dll.)
related_id INT ID sumber notifikasi (post_id, user_id, dll.)
created_at TIMESTAMP Waktu notifikasi dibuat
read_at TIMESTAMP Waktu notifikasi dibaca

Desain basis data di atas adalah kerangka utama basis data dari Instagram yang bisa dikembangkan lebih lanjut sesuai kebutuhan aplikasi. Misalnya, kita bisa menambahkan tabel untuk fitur tambahan seperti cerita (stories), tagar (hashtags), atau penyimpanan media tambahan (video, IGTV).

Berikut adalah implementasi basis data Instagram menggunakan MySQL:

-- Create the users table
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
full_name VARCHAR(100),
bio TEXT,
profile_image VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Create the posts table
CREATE TABLE posts (
post_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
image_url VARCHAR(255) NOT NULL,
caption TEXT,
location VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
-- Create the comments table
CREATE TABLE comments (
comment_id INT AUTO_INCREMENT PRIMARY KEY,
post_id INT NOT NULL,
user_id INT NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (post_id) REFERENCES posts(post_id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
-- Create the likes table
CREATE TABLE likes (
like_id INT AUTO_INCREMENT PRIMARY KEY,
post_id INT NOT NULL,
user_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (post_id) REFERENCES posts(post_id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
-- Create the follows table
CREATE TABLE follows (
follow_id INT AUTO_INCREMENT PRIMARY KEY,
follower_id INT NOT NULL,
following_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (follower_id) REFERENCES users(user_id),
FOREIGN KEY (following_id) REFERENCES users(user_id)
);
-- Create the messages table
CREATE TABLE messages (
message_id INT AUTO_INCREMENT PRIMARY KEY,
sender_id INT NOT NULL,
receiver_id INT NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (sender_id) REFERENCES users(user_id),
FOREIGN KEY (receiver_id) REFERENCES users(user_id)
);
-- Create the notifications table
CREATE TABLE notifications (
notification_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
type VARCHAR(50) NOT NULL,
related_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
read_at TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
view raw instagram.sql hosted with ❤ by GitHub

Referensi

https://kuliahppl.blogspot.com/2024/06/desain-database.html

Komentar

Postingan populer dari blog ini

Tugas Pertemuan 2 PPB - Membuat aplikasi sederhana dengan Jetpack Compose

Tugas Pertemuan 4 PPB - Membuat aplikasi Dice Roller interaktif

Evaluasi Tengah Semester Perancangan Perangkat Lunak