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

Недостатъци на таблица с твърде много колони

Тук трябва да имате предвид няколко неща:

  • Списъкът с атрибути променя ли се значително с времето
  • Списъкът с атрибути изисква ли персонализирани атрибути, дефинирани от потребителя
  • Има ли различни атрибути за различните училища (т.е. много атрибути се отнасят само за едно или няколко училища)?

Ако някое от тези е вярно, може да помислите за подход за съхранение на свойства като EAV, hstore, json полета, xml полета и др .

Ако не - ако имате доста статичен списък със свойства, където повечето от тях имат смисъл за повечето от редовете - тогава всъщност няма проблем да ги имате като 60 отделни колони. Ще бъде по-лесно да добавяте индекси за често търсени набори от атрибути, включително частични и съставни индекси и т.н., а търсенията - особено тези за много различни атрибути - ще бъдат много по-бързо.

Вижте също:Дизайн на база данни - трябва ли да използвам 30 колони или 1 колона с всички данни под формата на JSON/XML ?

Има и компромисна опция, достъпна за вас:основна таблица за най-важните подробности, които търсите често, плюс странични таблици за логическо групиране на атрибути. Кажете:

yearly_summary (
    yearly_summary_id serial primary key,
    school_id integer,
    total_students integer,
    ...
) 

плюс

yearly_student_stats(
    yearly_summary_id integer primary key references yearly_summary(yearly_summy_id) on delete cascade,
    ...
)

и т.н. integer primary key това също е foreign key означава, че имате наложена връзка 1:1 (по избор) към другата таблица. Този подход може да бъде полезен, ако имате няколко логически групи от атрибути, които можете да групирате в странични таблици.

Също така бих се изненадал, ако малко повече размисъл не разкрие неща, които правят има смисъл да се нормализира. Имате ли year7_blah , year8_blah , year9_blah и т.н. колони? Ако е така:Страхотен кандидат за нормализиране.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Правилен пълен текстов индекс Rails/PostgreSQL/pg_search

  2. Извличане на данни от PostgreSQL с помощта на Powershell

  3. Как да се свържа с моята база данни Heroku PostgreSQL от Java

  4. модел на приложение за викторина django за въпроси с множество избори

  5. PostgreSQL denescape JSON низ