sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres:Många-till-många vs. flera kolumner vs. array-kolumn

Många-till-många-relationer är det enda genomförbara alternativet här. Det finns en anledning till att de kallar det en relationsdatabas.

Varför?

  • Anslutningar är faktiskt inte så dyra.
  • Flera kolumner - Antalet kolumner i dina tabeller kommer att vara ludicris och det kommer att vara ett riktigt utvecklarhelvete. Eftersom varje funktion lägger till en migrering blir mängden churn i din kodbas dum.
  • Array-kolumn - Att använda en array-kolumn kan verka som ett attraktivt alternativ tills du inser att det faktiskt bara är en marginell förbättring jämfört med att stoppa in saker i en kommaseparerad sträng. du har ingen referensintegritet och ingen av fördelarna med kodorganisationen som kommer från att ha modeller som representerar enheterna i din applikation.
    Åh, och varje gång en funktion rycks ut måste du uppdatera var och en av dessa över 500 000 användare. VS använder bara 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. Mysql:ändring i my.cnf träder inte i kraft

  2. psycopg2 cursor.execute() med SQL-frågeparametern orsakar syntaxfel

  3. Hur man anropar en procedur varje gång mysql-anslutning skapas på amazon RDS

  4. SQL-skärningsbilder och exempel