Кратък отговор на заглавието :Не
Малко по-дълъг отговор :
Трябва да се научите да използвате масиви, когато е подходящо. Самите масиви не са лош дизайн, те са атомарни като поле с променливи знаци (масив от знаци, нали?) и съществуват, за да направят живота ни по-лесен и нашите бази данни по-бързи и по-леки. Има проблеми по отношение на преносимост (повечето системи за бази данни не поддържат масиви или го правят по различен начин от Postgres)
Пример:
Имате блог с публикации и тагове и всяка публикация може да има 0 или повече тагове. Първото нещо, което идва на ум е да направите различна таблица с две колони postid
и tagid
и задайте етикетите в тази таблица.
Ако трябва да търсим в публикации с tagid, тогава е необходима допълнителната таблица (разбира се с подходящи индекси).
Но ако искаме само информацията за етикета да се показва като допълнителна информация за публикацията, тогава можем лесно да добавим колона с целочислен масив в таблицата с публикации и да извлечем информацията от там. Това все още може да се направи с допълнителната таблица, но използването на масив намалява размера на базата данни (няма необходими допълнителни таблици или допълнителни редове) и опростява заявката, като ни позволява да изпълняваме нашите заявки за избор с присъединяване на една таблица по-малко и изглежда по-лесно за разбиране от човешкото око (последната част е в окото на гледащия, но мисля, че говоря от мнозинство тук). Ако нашите тагове са предварително заредени, тогава не е необходимо дори едно присъединяване.
Примерът може да е лош, но това е първото, което ми дойде на ум.
Заключение :
Масивите не са необходими. Те могат да бъдат вредни, ако ги използвате неправилно. Можете да живеете без тях и да имате страхотна, бърза и оптимизирана база данни. Когато обмисляте преносимост (например пренаписване на вашата система, за да работи с други бази данни), тогава не трябва да използвате масиви.
Ако сте сигурни, че ще се придържате към Postgres, тогава можете спокойно да използвате масиви, където сметнете за подходящо. Те съществуват с причина и не са нито лош дизайн, нито несъответстващи. Когато ги използвате на правилните места, те могат да помогнат малко с опростяването на структурите на базата данни и вашия код, както и за оптимизиране на пространството и скоростта. Това е всичко.