Desain Database

Pertemuan 14 - Desain Database

Nama: Rayhan Almer Kusumah

NRP: 5025211115

Kelas: Perancangan Perangkat Lunak (A)

Tahun: 2024

Desain Database

Deskripsi Aplikasi

Instagram adalah platform media sosial yang memungkinkan pengguna untuk berbagi foto dan video, serta berinteraksi dengan pengguna lainnya melalui fitur komentar, suka, dan pesan langsung. Aplikasi ini memiliki fokus kuat pada visual, dengan aliran berita yang didasarkan pada konten yang diunggah oleh pengguna yang diikuti.

Database Design

User

Table untuk menyimpan data user.

  • userId: string [HashKey]
  • name: string
  • emailId: string
  • creationDateInUtc: long
User Follows

Table untuk menyimpan data follower.

  • followingUserId_followerUserId: string [HashKey]
  • followingUserId: string [RangeKey]
  • followerUserId: string
  • creationDateInUtc: long
User Uploads

Table untuk menyimpan user upload.

  • uploadId: string [HashKey]
  • userId: string [RangeKey]
  • imageLocation: string
  • uploadDateInUtc: long
  • caption: string
User Feed

Table untuk menyimpan data feed user.

  • userId: string [HashKey]
  • uploadId: string
  • creationDateInUtc: long [RangeKey]

Database Mana yang Harus Kita Pilih untuk Penyimpanan Data? 

Penting untuk memilih jenis database yang tepat untuk sistem Instagram kita, tetapi mana yang tepat — SQL atau NoSQL? Data kita secara inheren bersifat relasional, dan kita membutuhkan urutan untuk data tersebut (posting harus muncul dalam urutan kronologis) dan tidak ada kehilangan data bahkan dalam kasus kegagalan (ketahanan data). Selain itu, dalam kasus kita, kita akan mendapatkan manfaat dari kueri relasional seperti mengambil pengikut atau gambar berdasarkan ID pengguna. Oleh karena itu, database berbasis SQL memenuhi persyaratan ini.

Penjelasan Hubungan

  1. Tabel Users:

    • Berisi informasi dasar pengguna.
  2. Tabel User_Follows:

    • Tabel ini menangani hubungan banyak-ke-banyak antara pengguna, di mana satu pengguna dapat mengikuti banyak pengguna lain dan satu pengguna dapat diikuti oleh banyak pengguna lain.
    • followingUserId dan followerUserId adalah foreign keys yang merujuk ke tabel Users.
  3. Tabel User_Uploads:

    • Tabel ini menyimpan informasi tentang unggahan yang dibuat oleh pengguna.
    • Setiap unggahan terkait dengan pengguna melalui userId, yang merupakan foreign key yang merujuk ke tabel Users.
    • Ini membentuk hubungan satu-ke-banyak: satu pengguna dapat memiliki banyak unggahan.
  4. Tabel User_Feed:

    • Tabel ini menyimpan data umpan untuk setiap pengguna.
    • Setiap entri umpan terhubung kembali ke pengguna (userId) dan unggahan (uploadId), membentuk hubungan antara pengguna dan umpan mereka.
    • userId adalah foreign key yang merujuk ke tabel Users, dan uploadId adalah foreign key yang merujuk ke tabel User_Uploads.
    • Primary key adalah gabungan dari userId dan creationDateInUtc untuk memastikan setiap entri umpan bagi pengguna unik dan diurutkan secara kronologis.

Desain database ini memastikan bahwa hubungan antar entitas di dalam sistem Instagram terjalin dengan baik dan integritas data terjaga.


Referensi: https://www.geeksforgeeks.org/design-instagram-a-system-design-interview-question/

Comments

Popular posts from this blog

ETS Perancangan Perangkat Lunak

Software Architecture

High Level Design