Tugas Pertemuan 14 - PPL

Nama : Yohanes Teguh Ukur Ginting
NRP : 5025211179
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.

KolomTipe DataDeskripsi
user_idINTPrimary key, auto-increment
usernameVARCHARNama pengguna, unik
emailVARCHAREmail pengguna, unik
passwordVARCHARKata sandi pengguna, terenkripsi
full_nameVARCHARNama lengkap pengguna
bioVARCHARBiografi pengguna
profile_imageVARCHARURL gambar profil
created_atTIMESTAMPWaktu pembuatan akun
updated_atTIMESTAMPWaktu pembaruan terakhir

Tabel posts

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

KolomTipe DataDeskripsi
post_idINTPrimary key, auto-increment
user_idINTForeign key ke tabel users
image_urlVARCHARURL gambar postingan
captionTEXTDeskripsi postingan
locationVARCHARLokasi postingan
created_atTIMESTAMPWaktu unggah postingan
updated_atTIMESTAMPWaktu 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.

KolomTipe DataDeskripsi
comment_idINTPrimary key, auto-increment
post_idINTForeign key ke tabel posts
user_idINTForeign key ke tabel users
commentTEXTIsi komentar
created_atTIMESTAMPWaktu pembuatan komentar
updated_atTIMESTAMPWaktu 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.

KolomTipe DataDeskripsi
like_idINTPrimary key, auto-increment
post_idINTForeign key ke tabel posts
user_idINTForeign key ke tabel users
created_atTIMESTAMPWaktu 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.

KolomTipe DataDeskripsi
follow_idINTPrimary key, auto-increment
follower_idINTForeign key ke tabel users (pengikut)
following_idINTForeign key ke tabel users (yang diikuti)
created_atTIMESTAMPWaktu 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.

KolomTipe DataDeskripsi
message_idINTPrimary key, auto-increment
sender_idINTForeign key ke tabel users (pengirim)
receiver_idINTForeign key ke tabel users (penerima)
contentTEXTIsi pesan
created_atTIMESTAMPWaktu 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.

KolomTipe DataDeskripsi
notification_idINTPrimary key, auto-increment
user_idINTForeign key ke tabel users
typeVARCHARTipe notifikasi (like, komentar, follow, dll.)
related_idINTID sumber notifikasi (post_id, user_id, dll.)
created_atTIMESTAMPWaktu notifikasi dibuat
read_atTIMESTAMPWaktu 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)
);

Comments

Popular posts from this blog

TUGAS PERTEMUAN 3 - PPB