sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres:Mange-til-mange vs. flere kolonner vs. matrixkolonne

Mange-til-mange-forhold er den eneste levedygtige mulighed her. Der er en grund til, at de kalder det en relationel database.

Hvorfor?

  • Joins er faktisk ikke så dyre.
  • Flere kolonner - Antallet af kolonner i dine tabeller vil være ludicris, og det vil være sandt udviklerhelvede. Da hver funktion tilføjer en migrering, vil mængden af ​​churn i din kodebase være fjollet.
  • Array-kolonne - Brug af en array-kolonne kan virke som et attraktivt alternativ, indtil du indser, at det faktisk kun er en marginal forbedring i forhold til at fylde ting i en kommasepareret streng. du har ingen referenceintegritet, og ingen af ​​fordelene ved kodeorganisationen, der kommer fra at have modeller, der repræsenterer entiteterne i din applikation.
    Åh, og hver gang en funktion rykkes, skal du opdatere hver eneste af disse 500.000+ brugere. VS kun ved at bruge 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. Træk sekunder fra en dato-tidsværdi i MariaDB

  2. få billeder fra mysql med php jquery ajax og vis dem på html-side inde i DIV'er

  3. Rangering af resultaterne i mysql (mysql-ækvivalenter for 'dense_rank()' eller 'row_number()'-funktioner i oracle)

  4. viser Oracle-tabellens kolonnenavne