PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgres:Banyak-ke-banyak vs. banyak kolom vs. kolom array

Hubungan banyak-ke-banyak adalah satu-satunya pilihan yang layak di sini. Ada alasan mengapa mereka menyebutnya database relasional.

Mengapa?

  • Bergabung sebenarnya tidak terlalu mahal.
  • Beberapa kolom - Jumlah kolom di tabel Anda akan menjadi ludicris dan itu akan menjadi neraka pengembang sejati. Karena setiap fitur menambahkan migrasi, jumlah churn di basis kode Anda akan menjadi konyol.
  • Kolom larik - Menggunakan kolom larik mungkin tampak seperti alternatif yang menarik sampai Anda menyadari bahwa ini sebenarnya hanya sedikit peningkatan dibandingkan memasukkan sesuatu ke dalam string yang dipisahkan koma. Anda tidak memiliki integritas referensial dan tidak ada organisasi kode yang diuntungkan karena memiliki model yang mewakili entitas dalam aplikasi Anda.
    Oh dan setiap kali fitur ditarik, Anda harus memperbarui setiap 500k+ pengguna tersebut. VS hanya menggunakan CASCADE.
class Feature
  has_many :user_features
  has_many :users, through: :user_features
end

class UserFeature
  belongs_to :user
  belongs_to :feature
end

class User
  has_many :user_features
  has_many :features, through: :user_features

  def has_feature?(name)
    features.exist?(name: name)
  end
end



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menanyakan nilai dengan wildcard di PostgreSQL hstore

  2. Rails - SQLite3::SQLException:dekat MENGGUNAKAN:kesalahan sintaks

  3. Mencampur gabungan eksplisit dan implisit gagal dengan Ada entri untuk tabel ... tetapi tidak dapat dirujuk dari bagian kueri ini

  4. fungsi month() dan fungsi year() di postgresql melalui jpa2

  5. Jatuhkan kolom tidak menghapus referensi kolom sepenuhnya - postgresql