PPL: Pertemuan 14 Tugas 10
Desain Database
Nama: Hanafi Satriyo Utomo Setiawan
NRP : 5025211195
Basis data untuk platform media sosial menawarkan serangkaian fitur yang dirancang untuk mendukung manajemen pengguna, penyimpanan konten, interaksi pengguna, pembaruan waktu nyata, dan analitik. Desain database Instagram adalah arsitektur penyimpanan data yang mendukung berbagai fitur aplikasi Instagram seperti penyimpanan foto dan video, pengguna, hubungan sosial (follower/following), komentar, likes, dan lain-lain. Database ini harus sangat terukur, efisien, dan dapat diandalkan untuk menangani miliaran pengguna dan transaksi per detik.
Database Design
CREATE TABLE Pengguna (
id SERIAL PRIMARY KEY,
nama VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
lokasi VARCHAR(255)
);
CREATE TABLE Foto (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL REFERENCES Pengguna(id),
lokasi VARCHAR(255),
path VARCHAR(255) NOT NULL,
caption VARCHAR(255),
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES Pengguna(id)
);
CREATE TABLE Ikuti (
dari INT NOT NULL REFERENCES Pengguna(id),
ke INT NOT NULL REFERENCES Pengguna(id),
PRIMARY KEY (dari, ke)
);
Data pengguna - Metadata yang relevan dengan pengguna aplikasi
Foto - Data terkait dengan posting/foto yang diunggah pengguna
Pengikut pengguna - Menyimpan hubungan antara Pengguna ke Pengguna
Tabel Pengguna
- id: (primary key, int, serial) Ini adalah pengenal unik untuk setiap pengguna di platform.
- name: (string) Ini menyimpan nama pengguna.
- email: (string) Ini menyimpan alamat email pengguna.
- location: (string) Ini menyimpan lokasi pengguna (opsional).
Tabel Foto
- id: (primary key, int, serial) Ini adalah pengenal unik untuk setiap foto yang diunggah.
- user_id: (foreign key yang mereferensikan User.id) Ini menghubungkan foto ke pengguna yang mengunggahnya.
- location: (string) Ini menyimpan lokasi pengambilan foto (opsional).
- path: (string) Ini menyimpan jalur file atau URL untuk foto di server.
- caption: (string) Ini menyimpan caption atau deskripsi yang ditambahkan ke foto oleh pengguna.
Tabel Ikuti
- from: (primary key, int, serial) Ini adalah foreign key yang mereferensikan ID pengguna (pengikut).
- to: (foreign key yang mereferensikan User.id) Ini adalah foreign key yang mereferensikan ID pengguna yang diikuti.
Hubungan Antar Tabel
- Satu Pengguna ke Banyak Foto: Seorang pengguna dapat mengunggah banyak foto. Hubungan ini tercermin oleh foreign key
user_id
di tabel Foto yang mereferensikan primary keyid
di tabel Pengguna. - Banyak Pengguna ke Banyak Pengguna: Seorang pengguna dapat mengikuti banyak pengguna lain, dan seorang pengguna dapat diikuti oleh banyak pengguna lain. Hubungan many-to-many ini biasanya diimplementasikan menggunakan tabel terpisah seperti Tabel Ikuti di sini, di mana setiap record mewakili hubungan mengikuti antara dua pengguna.
Atribut spesifik dari data tersebut meliputi:
- Entri foto dapat ditelusuri ke pengguna tertentu
- Pengikut pengguna memiliki pemetaan 1:1
- Tabel foto hanya akan menyimpan metadata dan konten dapat direferensikan melalui jalur URL
Layanan backend akan melakukan operasi JOIN pada tabel pengikut dan foto untuk menghasilkan umpan untuk setiap permintaan pengguna unik.
Comments
Post a Comment