PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgres:Много към много срещу множество колони срещу колона с масив

Връзките много към много са единствената жизнеспособна опция тук. Има причина да я наричат ​​релационна база данни.

Защо?

  • Присъединяванията всъщност не са толкова скъпи.
  • Множество колони – Броят на колоните във вашите таблици ще бъде ludicris и ще бъде истински ад за разработчици. Тъй като всяка функция добавя миграция, количеството отлив във вашата кодова база ще бъде глупаво.
  • Колона с масив – Използването на колона с масив може да изглежда като привлекателна алтернатива, докато не разберете, че това всъщност е само незначително подобрение спрямо натъпкването на нещата в низ, разделен със запетая. нямате референтна цялост и нито едно от предимствата на организацията на кода, които идват от наличието на модели, които представляват обектите във вашето приложение.
    О, и всеки път, когато дадена функция бъде изтеглена, трябва да актуализирате всеки един от тези 500k+ потребители. СРЕЩУ само използването на 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. Конвертирайте django RawQuerySet в Queryset

  2. Не актуализирайте колоната, ако актуализираната стойност е нула

  3. PostgreSQL:Как да разбера липсващите числа в колона с помощта на generate_series()?

  4. Създаване на потребител на PostgreSQL и добавянето им към база данни

  5. pg_restore Алтернативи - PostgreSQL архивиране и автоматично възстановяване с ClusterControl