Tugas 10 - Perancangan Perangkat Lunak (A)

Nama      : Yusna Millaturrosyidah

NRP        : 5025211254

Kelas      : Perancangan Perangkat Lunak (A)

Desain Database

Deskripsi 

Basis data Instagram dirancang untuk mendukung berbagai fitur utama yang menjadikan aplikasi ini sebagai platform berbagi foto dan video yang populer. Basis data ini dirancang untuk menangani volume besar pengguna, interaksi sosial yang kompleks, serta penyimpanan dan pengambilan konten media secara efisien. Fitur-fitur yang didukung meliputi pembuatan akun pengguna, pengunggahan foto dan video, interaksi sosial seperti like dan komentar, serta kemampuan mengikuti pengguna lain dan melihat feed yang diperbarui secara real-time.

Design Database

Tabel

  1. User : Menyimpan informasi pengguna seperti ID, nama, email, dan timestamp untuk pembuatan dan pembaruan akun.

    Tabel User

    • id (Primary Key, HashKey): Identifikasi unik untuk setiap pengguna.
    • name: Nama pengguna.
    • email: Alamat email pengguna.
    • created_at: Waktu ketika akun pengguna dibuat.
    • updated_at: Waktu ketika akun pengguna terakhir diperbarui.

  2. User Feeds : Menyimpan entri feed untuk setiap pengguna, menghubungkan pengguna dengan kiriman yang muncul di feed mereka.

    Tabel User Feeds

    • id (Primary Key, HashKey): Identifikasi unik untuk setiap entri feed.
    • user_id: ID pengguna untuk siapa feed dihasilkan.
    • post_id: ID dari kiriman yang muncul di feed pengguna.
    • created_at: Waktu ketika entri feed dibuat.

  3. Post Comments : Menyimpan komentar yang dibuat oleh pengguna pada kiriman, mencakup ID komentar, ID kiriman, ID pengguna, konten komentar, dan timestamp.

    Tabel Post Comments

    • id (Primary Key): Identifikasi unik untuk setiap komentar.
    • post_id: ID dari kiriman yang dikomentari.
    • user_id: ID pengguna yang membuat komentar.
    • comment: Konten teks dari komentar.
    • created_at: Waktu ketika komentar dibuat.
    • updated_at: Waktu ketika komentar terakhir diperbarui.

  4. Posts : Menyimpan informasi tentang kiriman seperti ID unggahan, ID pengguna, tipe kiriman (foto/video), jumlah like dan komentar, serta timestamp untuk pembuatan dan pembaruan kiriman.

    Tabel Posts

    • upload_id (Primary Key, HashKey): Identifikasi unik untuk setiap unggahan.
    • user_id: ID pengguna yang membuat kiriman.
    • type: Tipe kiriman (misalnya, foto, video).
    • total_likes: Jumlah total like pada kiriman.
    • total_comments: Jumlah total komentar pada kiriman.
    • post_id: ID dari kiriman.
    • created_at: Waktu ketika kiriman dibuat.
    • updated_at: Waktu ketika kiriman terakhir diperbarui.

  5. Post Likes : Menyimpan informasi tentang like yang diberikan pengguna pada kiriman, mencakup ID like, ID kiriman, ID pengguna, dan timestamp.

    Tabel Post Likes

    • id (Primary Key): Identifikasi unik untuk setiap like.
    • post_id: ID dari kiriman yang disukai.
    • user_id: ID pengguna yang menyukai kiriman.
    • created_at: Waktu ketika like dibuat.
    • updated_at: Waktu ketika like terakhir diperbarui.

  6. User Followers : Menyimpan hubungan antar pengguna yang mengikuti satu sama lain, mencakup ID hubungan, ID pengguna yang diikuti, ID pengguna yang mengikuti, dan timestamp.

    Tabel User Followers

    • id (Primary Key, HashKey): Identifikasi unik untuk setiap hubungan follow.
    • user_id: ID pengguna yang diikuti.
    • follower_id: ID pengguna yang mengikuti.
    • created_at: Waktu ketika hubungan follow dibuat.
  7. Photo : Menyimpan informasi tentang foto yang diunggah, termasuk ID foto, ID kiriman, ID pengguna, jalur file foto, koordinat geografis (lintang dan bujur) tempat foto diambil, dan timestamp.

    Tabel Photo

    • photo_id (Primary Key): Identifikasi unik untuk setiap foto.
    • post_id: ID dari kiriman yang mengandung foto.
    • user_id: ID pengguna yang mengunggah foto.
    • photo_path: Jalur file ke foto.
    • photo_latitude: Lintang di mana foto diambil.
    • photo_longitude: Bujur di mana foto diambil.
    • user_latitude: Lintang pengguna pada saat unggah.
    • user_longitude: Bujur pengguna pada saat unggah.
    • created_at: Waktu ketika foto diunggah.
    • updated_at: Waktu ketika metadata foto terakhir diperbarui.

  8. User Uploads : Menyimpan informasi tentang unggahan pengguna, menghubungkan pengguna dengan foto yang diunggah serta timestamp untuk pembuatan dan pembaruan unggahan.

    Tabel User Uploads

    • id (Primary Key, HashKey): Identifikasi unik untuk setiap unggahan.
    • user_id: ID pengguna yang mengunggah konten.
    • photo_id: ID dari foto yang diunggah.
    • created_at: Waktu ketika konten diunggah.
    • updated_at: Waktu ketika unggahan terakhir diperbarui.

Database Relationships

  1. User - Posts (One-to-Many Relationship)

    • Deskripsi: Setiap pengguna dapat membuat banyak kiriman di platform.
    • Implementasi: Tabel Posts memiliki kolom user_id yang merujuk ke id di tabel User. Ini memungkinkan setiap kiriman diidentifikasi dengan pembuatnya.
  2. User - Comments (One-to-Many Relationship)

    • Deskripsi: Setiap pengguna dapat memberikan banyak komentar pada berbagai kiriman.
    • Implementasi: Tabel Post Comments memiliki kolom user_id yang merujuk ke id di tabel User. Ini mengaitkan setiap komentar dengan pengguna yang membuatnya.
  3. User - Likes (One-to-Many Relationship)

    • Deskripsi: Setiap pengguna dapat menyukai banyak kiriman di platform.
    • Implementasi: Tabel Post Likes memiliki kolom user_id yang merujuk ke id di tabel User. Ini menghubungkan setiap like dengan pengguna yang memberikan like.
  4. Post - Comments (One-to-Many Relationship)

    • Deskripsi: Setiap kiriman dapat menerima banyak komentar dari berbagai pengguna.
    • Implementasi: Tabel Post Comments memiliki kolom post_id yang merujuk ke post_id di tabel Posts. Ini mengaitkan setiap komentar dengan kiriman yang dikomentari.
  5. Post - Likes (One-to-Many Relationship)

    • Deskripsi: Setiap kiriman dapat menerima banyak like dari berbagai pengguna.
    • Implementasi: Tabel Post Likes memiliki kolom post_id yang merujuk ke post_id di tabel Posts. Ini menghubungkan setiap like dengan kiriman yang disukai.
  6. User - Followers (Many-to-Many Relationship)

    • Deskripsi: Pengguna dapat mengikuti banyak pengguna lain dan diikuti oleh banyak pengguna.
    • Implementasi: Tabel User Followers memiliki kolom user_id dan follower_id, yang keduanya merujuk ke id di tabel User. Ini memungkinkan setiap pengguna mengikuti dan diikuti oleh banyak pengguna.
  7. Post - Photos (One-to-Many Relationship)

    • Deskripsi: Setiap kiriman dapat mengandung banyak foto.
    • Implementasi: Tabel Photo memiliki kolom post_id yang merujuk ke post_id di tabel Posts. Ini mengaitkan setiap foto dengan kiriman yang mengandungnya.
  8. User - User Uploads (One-to-Many Relationship)

    • Deskripsi: Setiap pengguna dapat mengunggah banyak foto atau video.
    • Implementasi: Tabel User Uploads memiliki kolom user_id yang merujuk ke id di tabel User. Ini menghubungkan setiap unggahan dengan pengguna yang mengunggahnya.
  9. Photo - User Uploads (One-to-One Relationship)

    • Deskripsi: Setiap foto atau video hanya dapat ada di satu unggahan.
    • Implementasi: Tabel User Uploads memiliki kolom photo_id yang merujuk ke photo_id di tabel Photo. Ini memastikan setiap foto hanya ada di satu unggahan.
Dengan desain ini, basis data Instagram dapat menangani berbagai aspek interaksi sosial dan manajemen konten secara efisien, mendukung skala besar pengguna dan aktivitas yang beragam di platform. Desain ini memungkinkan pengguna untuk membuat akun, mengunggah dan berbagi foto serta video, memberikan komentar, menyukai kiriman, dan mengikuti pengguna lain. Setiap tindakan dan interaksi pengguna dicatat secara efisien dalam basis data, memastikan bahwa informasi dapat diakses dan dikelola dengan cepat, bahkan ketika jumlah pengguna dan volume data sangat besar. Hubungan yang dirancang antara tabel-tabel dalam basis data memungkinkan pengambilan data yang kompleks dan cepat, seperti menampilkan feed yang dipersonalisasi, menghitung jumlah like dan komentar pada setiap kiriman, serta mengelola hubungan pengikut dan yang diikuti. Dengan demikian, basis data ini mendukung kinerja aplikasi yang cepat dan responsif, yang sangat penting untuk pengalaman pengguna yang lancar dan memuaskan.

Referensi : 

Komentar

Postingan Populer