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 key id 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
Dengan mempertimbangkan persyaratan fungsional, yang memprioritaskan kueri relasional antara foto, pengguna, dan pengikut, kita dapat menyimpan data dengan mempertahankan tabel terpisah untuk setiap jenis data dengan referensi kunci asing di antara mereka.

Layanan backend akan melakukan operasi JOIN pada tabel pengikut dan foto untuk menghasilkan umpan untuk setiap permintaan pengguna unik.

Comments

Popular posts from this blog

PPL : Pertemuan 2

PPL : Pertemuan 7

Final Project : Pemrograman Berbasis Kerangka Kerja A