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

Лош дизайн ли е да се използват масиви в база данни?

Кратък отговор на заглавието :Не

Малко по-дълъг отговор :

Трябва да се научите да използвате масиви, когато е подходящо. Самите масиви не са лош дизайн, те са атомарни като поле с променливи знаци (масив от знаци, нали?) и съществуват, за да направят живота ни по-лесен и нашите бази данни по-бързи и по-леки. Има проблеми по отношение на преносимост (повечето системи за бази данни не поддържат масиви или го правят по различен начин от Postgres)

Пример:

Имате блог с публикации и тагове и всяка публикация може да има 0 или повече тагове. Първото нещо, което идва на ум е да направите различна таблица с две колони postid и tagid и задайте етикетите в тази таблица.

Ако трябва да търсим в публикации с tagid, тогава е необходима допълнителната таблица (разбира се с подходящи индекси).

Но ако искаме само информацията за етикета да се показва като допълнителна информация за публикацията, тогава можем лесно да добавим колона с целочислен масив в таблицата с публикации и да извлечем информацията от там. Това все още може да се направи с допълнителната таблица, но използването на масив намалява размера на базата данни (няма необходими допълнителни таблици или допълнителни редове) и опростява заявката, като ни позволява да изпълняваме нашите заявки за избор с присъединяване на една таблица по-малко и изглежда по-лесно за разбиране от човешкото око (последната част е в окото на гледащия, но мисля, че говоря от мнозинство тук). Ако нашите тагове са предварително заредени, тогава не е необходимо дори едно присъединяване.

Примерът може да е лош, но това е първото, което ми дойде на ум.

Заключение :

Масивите не са необходими. Те могат да бъдат вредни, ако ги използвате неправилно. Можете да живеете без тях и да имате страхотна, бърза и оптимизирана база данни. Когато обмисляте преносимост (например пренаписване на вашата система, за да работи с други бази данни), тогава не трябва да използвате масиви.

Ако сте сигурни, че ще се придържате към Postgres, тогава можете спокойно да използвате масиви, където сметнете за подходящо. Те съществуват с причина и не са нито лош дизайн, нито несъответстващи. Когато ги използвате на правилните места, те могат да помогнат малко с опростяването на структурите на базата данни и вашия код, както и за оптимизиране на пространството и скоростта. Това е всичко.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да направите заявка без значение за главни букви в Postgresql?

  2. Рекурсивна CTE конкатенация на полета с родители от произволна точка

  3. Postgres - СЪЗДАВАНЕ НА ТАБЛИЦА ОТ SELECT

  4. PostgreSQL 12:Внедряване на K-Nearest Neighbor Space Partitioned Generalized Search Tree Indexs

  5. Преобразувайте набор от резултати от SQL масив в масив от низове