Advertisement

Penjelasan hasMany dan foreignKey dalam Sequelize


 

Berikut adalah penjelasan detail tentang kode Users.hasMany(Products); dan Products.belongsTo(Users, { foreignKey: 'userId' }); dalam Sequelize:

1. Relasi Antara Users dan Products

Dalam hal ini, kita memiliki dua entitas (model): Users dan Products. Kode ini mendefinisikan hubungan antara kedua model tersebut di mana satu User dapat memiliki banyak Product, dan setiap Product berhubungan dengan satu User.

2. Users.hasMany(Products);

Kode ini mendefinisikan relasi satu ke banyak (one-to-many) antara model Users dan model Products.

  • Users.hasMany(Products): Ini berarti bahwa User dapat memiliki banyak Product. Dalam konteks database, ini mengindikasikan bahwa ada relasi di mana satu entitas pengguna (User) dapat memiliki banyak produk (Products).
  • Relasi ini menyebabkan Sequelize untuk secara otomatis menambahkan kolom userId (sebagai foreign key) di model Products untuk menghubungkan produk dengan pengguna tertentu. Kolom ini akan menyimpan ID pengguna yang memiliki produk tersebut.

Contoh visual dari relasi ini:

  • User memiliki banyak Products.
  • Misalnya, User A memiliki produk Product 1, Product 2, dan Product 3.

3. Products.belongsTo(Users, { foreignKey: 'userId' });

Kode ini mendefinisikan relasi kebalikannya, yaitu Products "berhubungan dengan" atau "milik" User, dengan menambahkan foreign key di model Products.

  • Products.belongsTo(Users, { foreignKey: 'userId' }): Ini menunjukkan bahwa Product milik (belongs to) User. Dalam kata lain, setiap entitas Product berhubungan dengan tepat satu entitas User.
  • Argumen { foreignKey: 'userId' } menentukan bahwa kolom userId di model Products adalah foreign key yang menghubungkan produk dengan pengguna. Jadi, setiap produk akan memiliki kolom userId yang menyimpan ID pengguna yang memiliki produk tersebut.

Contoh visual relasi ini:

  • Product 1 milik User A, maka userId di Product 1 adalah ID milik User A.
  • Product 2 milik User B, maka userId di Product 2 adalah ID milik User B.

4. Ringkasan Relasi:

  • Users.hasMany(Products): Menyatakan bahwa satu User dapat memiliki banyak Product.
  • Products.belongsTo(Users, { foreignKey: 'userId' }): Menyatakan bahwa setiap Product berhubungan dengan satu User melalui kolom userId sebagai foreign key.

5. Struktur Database (Tabel):

  • Tabel Users akan memiliki kolom id sebagai primary key.
  • Tabel Products akan memiliki kolom id sebagai primary key dan userId sebagai foreign key yang mengarah ke id di tabel Users.

Contoh relasi antar tabel:

Users Table Products Table
id (PK) id (PK)
name name
email price
... ...

userId (FK -> Users.id)

6. Keuntungan Relasi Ini:

  • Konsistensi Data: Relasi ini memastikan bahwa setiap produk terhubung dengan pengguna yang valid, dan jika pengguna dihapus, produk yang terkait bisa dihapus secara otomatis (dengan opsi cascading).
  • Kemudahan Query: Dengan relasi ini, kita dapat dengan mudah mendapatkan semua produk yang dimiliki oleh pengguna tertentu, atau mengetahui pengguna siapa yang memiliki produk tertentu.

Misalnya, untuk mendapatkan semua produk milik seorang pengguna, kita dapat menggunakan query seperti ini:

User.findByPk(userId, {
    include: Product
}).then(user => {
    console.log(user.Products); // Menampilkan produk-produk milik user
});

Kesimpulan:

  • Users.hasMany(Products) mendefinisikan hubungan satu ke banyak antara Users dan Products, di mana satu pengguna bisa memiliki banyak produk.
  • Products.belongsTo(Users, { foreignKey: 'userId' }) mendefinisikan bahwa setiap produk hanya dimiliki oleh satu pengguna, dengan userId sebagai foreign key untuk menyimpan referensi ke pengguna tersebut.

 

Post a Comment

0 Comments