sql >> Databáze >  >> RDS >> PostgreSQL

Postgres:Many-to-many vs. více sloupců vs. sloupec pole

Vztahy mnoho k mnoha jsou zde jedinou schůdnou možností. Existuje důvod, proč tomu říkají relační databáze.

Proč?

  • Připojení ve skutečnosti není tak drahé.
  • Více sloupců – Počet sloupců ve vašich tabulkách bude absurdní a bude to skutečné vývojářské peklo. Vzhledem k tomu, že každá funkce přidává migraci, množství odchodů ve vaší kódové základně bude hloupé.
  • Sloupec pole – Použití sloupce pole se může zdát jako atraktivní alternativa, dokud si neuvědomíte, že jde ve skutečnosti jen o okrajové zlepšení oproti vkládání věcí do řetězce odděleného čárkou. nemáte žádnou referenční integritu a žádné výhody organizace kódu, které plynou z toho, že máte modely, které reprezentují entity ve vaší aplikaci.
    Ano a pokaždé, když dojde k vytržení funkce, musíte aktualizovat každého z těchto více než 500 000 uživatelů. VS jen pomocí 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. SQL Server VYBRAT DO @proměnná?

  2. MySQL Počet a součet na základě podmínky

  3. PHP/MySQL - Jak přidat více značek

  4. Spring JDBC BeanPropertyRowMapper ano ne ('Y','N') na booleovské vlastnosti fazole