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 :
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.
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.
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.
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.
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
Posting Komentar