Tugas 10 PPL - Desain Database

 Nama : I Gusti Ngurah Ervan Juli Ardana

NRP : 5025211205

Kelas : Perancangan Perangkat Lunak A

Tahun : 2024


Pada pertemuan kali ini pada kelas Perancangan Perangkat Lunak A, kami diperkenalkan dengan Desain Basis Data mulai dari perancangan databse hingga menentukan data apa yang harus disimpan dalam sebuah aplikasi . Pada pertemuan ini, saya akan membuat database untuk aplikasi instagram


Design Database



Desain basis data adalah proses merancang dan mengatur struktur data dalam sistem manajemen basis data (DBMS) untuk memastikan penyimpanan, pengambilan, dan manipulasi data yang efisien dan efektif. Desain ini sangat penting karena menentukan bagaimana data akan disimpan, diakses, dan dikelola, yang berdampak langsung pada kinerja dan skalabilitas aplikasi yang menggunakan basis data tersebut. Berbicara tentang aplikasi instagram, aplikasi ini memiliki banyak fitur sehingga harus memiliki database yang lumayan kompleks. Berikut merupakan skema database (CDM dan PDM yang saya buat mengguanakan vertabelo:


  • CDM

  • PDM 


Berdasarkan skema diatas saya dapat menentukan beberapa tabel penting yang akan saya gunakan untuk desain desain basis data aplikasi instagram. berikut merupakan beberapa tabel yang dibutuhkan dalam desain database aplikasi instagram : 

  1. User Table

Tabel ini menyimpan informasi tentang pengguna sistem jejaring sosial

  • UserID (Primary Key): Ini adalah pengenal unik untuk setiap pengguna.

  • Username: Nama tampilan pengguna.

  • Email: Alamat email pengguna untuk kontak dan login.

  • PasswordHash: Kata sandi yang di-hash dengan aman untuk otentikasi pengguna.

  • ProfilePicture: Ini adalah URL atau referensi ke foto profil pengguna.

  • Bio: Bio profil pengguna.

  • CreatedAt: Stempel waktu saat akun pengguna dibuat.


  1. Post Table

Tabel ini menyimpan semua postingan yang dibuat oleh pengguna

  • PostID (Primary Key): Ini adalah pengenal unik untuk setiap postingan.

  • UserID: Pengenal untuk pengguna yang membuat postingan.

  • ContentURL: Ini adalah URL atau referensi ke foto atau video.

  • Caption: Teks keterangan yang menyertai postingan.

  • CreatedAt: Ini adalah stempel waktu saat postingan dibuat.

  1. Comment Table

Tabel ini menyimpan semua komentar yang dibuat pengguna pada postingan.

  • CommentID (Primary Key): Ini adalah pengenal unik untuk setiap komentar.

  • PostID: Pengenal untuk postingan terkait.

  • UserID: Pengenal untuk pengguna yang membuat komentar.

  • Content: Konten teks dari komentar.

  • CreatedAt: Stempel waktu saat komentar dibuat.

  1. Like Table

Tabel ini mencatat semua "like" atau suka yang diberikan pengguna pada postingan.

  • LikeID (Primary Key): Ini adalah pengenal unik untuk setiap suka.

  • PostID: Pengenal untuk postingan yang disukai.

  • UserID: Pengenal untuk pengguna yang menyukai postingan.

  • CreatedAt: Stempel waktu saat suka dibuat.

  1. Follow Table

Tabel ini menjaga catatan pengguna yang mengikuti pengguna lain di platform.

  • FollowerID: Pengenal untuk pengguna yang mengikuti.

  • FolloweeID: Pengenal untuk pengguna yang diikuti.

  • CreatedAt: Stempel waktu saat hubungan mengikuti dibuat.


Setelah mengatahui jumlah tabel yang dibutuhkan, kita dapat mengimplementasikan pada mySQL sebagai berikut : 


-- Create User Table


CREATE TABLE Users (


   UserID SERIAL PRIMARY KEY,


   Username VARCHAR(255) NOT NULL,


   Email VARCHAR(255) NOT NULL,


   PasswordHash VARCHAR(255) NOT NULL,


   ProfilePicture VARCHAR(255),


   Bio TEXT,


   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP


);



-- Create Post Table


CREATE TABLE Posts (


   PostID SERIAL PRIMARY KEY,


   UserID INT NOT NULL,


   ContentURL VARCHAR(255),


   Caption TEXT,


   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


   FOREIGN KEY (UserID) REFERENCES Users(UserID)


);



-- Create Comment Table


CREATE TABLE Comments (


   CommentID SERIAL PRIMARY KEY,


   PostID INT NOT NULL,


   UserID INT NOT NULL,


   Content TEXT NOT NULL,


   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


   FOREIGN KEY (PostID) REFERENCES Posts(PostID),


   FOREIGN KEY (UserID) REFERENCES Users(UserID)


);



-- Create Like Table


CREATE TABLE Likes (


   LikeID SERIAL PRIMARY KEY,


   PostID INT NOT NULL,


   UserID INT NOT NULL,


   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


   FOREIGN KEY (PostID) REFERENCES Posts(PostID),


   FOREIGN KEY (UserID) REFERENCES Users(UserID)


);



-- Create Follow Table


CREATE TABLE Follows (


   FollowerID INT NOT NULL,


   FolloweeID INT NOT NULL,


   CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,


   PRIMARY KEY (FollowerID, FolloweeID),


   FOREIGN KEY (FollowerID) REFERENCES Users(UserID),


   FOREIGN KEY (FolloweeID) REFERENCES Users(UserID)


);


Komentar

Postingan populer dari blog ini

Blog Ervan

Tugas 2 PBKK - Webcam Application

Tugas 1 PPB - Redesign Mobile Application