Coloana virtuală

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În bazele de date , coloanele virtuale sunt câmpuri ale unui tabel a căror valoare este calculată pe baza valorii altor coloane sau a altor expresii deterministe. Acestea nu fac parte din standardele SQL și sunt implementate doar de unele DBMS , cum ar fi MariaDB , SQL Server și Oracle .

Coloanele virtuale nu sunt în mod evident compatibile cu normalizarea bazei de date, deoarece creează redundanță.

Implementare

Coloanele virtuale, în diferitele implementări, pot fi de două tipuri:

  • Virtual
  • Persistent

Valorile coloanei virtuale sunt calculate „din mers” atunci când este necesar, de exemplu atunci când trebuie returnate dintr-o interogare SELECT . În schimb, valorile din coloanele Persistente sunt calculate în momentul în care rândul este scris pe disc și scris împreună cu toate celelalte valori. În funcție de caz, puteți prefera un tip sau altul: Virtualele nu ocupă spațiu pe disc, ci necesită prelucrarea unei expresii pentru fiecare interogare care le implică; Persistenții, pe de altă parte, nu necesită nicio lucrare suplimentară din partea procesorului, dar ocupă spațiu pe disc. Cu toate acestea, nu este întotdeauna posibil să alegeți, deoarece unele SGBD acceptă doar un singur tip de coloană.

Coloane virtuale în MariaDB

MariaDB este un fork al MySQL ; în versiunea 5.2 Au fost adăugate coloane virtuale (printre alte caracteristici), îmbunătățite în [ o bucată lipsă ] . Prin urmare, în prezent nu sunt prezente în MySQL.

Expresiile utilizate pentru calcularea valorilor sunt supuse următoarelor limitări:

  • Ele trebuie să fie deterministe.
  • Nu trebuie să fie valori constante.
  • Nu se pot baza pe UDF-uri sau proceduri stocate (chiar dacă acestea sunt deterministe).
  • Nu pot fi bazate pe alte coloane virtuale.

Ele pot fi indexate și pot face parte din cheile străine , cu toate acestea există și câteva mici limitări ale acestui aspect.

Sintaxă

Pentru a crea o coloană virtuală, utilizați această sintaxă în cadrul unei comenzi CREATE TABLE sau ALTER TABLE:

 < tip > [ GENERAT ÎNTOTDEAUNA ] AS ( < expresie > ) [ VIRTUAL | PERSISTENT ] [ UNIC ] [ CHEIE UNIC ] [ COMENTAR < text > ]
  • tip este tipul de date al coloanei virtuale.
  • expresia este expresia SQL utilizată pentru calcularea valorilor.
  • textul este comentariul care trebuie asociat coloanei (opțional).

Coloane virtuale în Oracle

Coloanele virtuale au fost adăugate în Oracle începând cu versiunea 11g, versiunea 1.

Singurul tip de coloane virtuale acceptate de Oracle sunt virtuale, prin urmare nu există posibilitatea de a scrie aceste valori pe disc. Pentru a depăși acest lucru, puteți utiliza vizualizări materializate.

Sintaxă

Pentru a crea o coloană virtuală, următoarea sintaxă este utilizată în cadrul unei comenzi CREATE TABLE sau ALTER TABLE:

 nume_coloană [ tip ] [ GENERAT ÎNTOTDEAUNA ] AS ( expresie ) [ VIRTUAL ]

SQL Server

SQL Server acceptă coloane virtuale, dar le numește coloane computerizate.

Singurul tip acceptat în SQL Server este Persisted, care este efectiv echivalent cu Persistent.

Instrumente de business intelligence

În instrumentele de business intelligence precum Tableau, Microsoft Power BI sau modelul tabelar Microsoft Analysis Service, coloanele virtuale numite coloane calculate sunt esențiale pentru producerea de date și diagrame semnificative.

Alternative la coloanele virtuale

În SGBD care nu acceptă coloane virtuale, este posibil să se obțină funcționalități echivalente sau similare utilizând:

  • vizualizări, pentru a înlocui coloanele virtuale;
  • vizualizări materializate sau declanșatoare care umple un anumit tabel, pentru a înlocui coloanele Persistente.

Ambele soluții sunt mai complexe și mai puțin simple de întreținut, așa că tindem să preferăm coloanele virtuale dacă sunt acceptate.

Vizualizări

Vizualizările pot conține coloane citite direct din coloane într-un tabel și alte coloane calculate pe baza unei expresii SQL. Vizualizările pot înlocui apoi coloanele de tip Virtual. Unele SGBD acceptă vizualizări materializate, care pot înlocui coloanele Persistente, dar cu prețul duplicării tuturor datelor dintr-un tabel și, prin urmare, și a spațiului ocupat pe disc. De asemenea, nu există nicio soluție pentru a simula atât coloane persistente, cât și coloane virtuale într-o singură vizualizare.

Declanșator

Declanșatorii pot scrie date într-un tabel imediat după o declarație UPDATE sau INSERT; în acest fel, coloanele de tip Persistent pot fi emulate. Această soluție este, în general, mai lentă și necesită menținerea a două declanșatoare (indiferent de câte coloane doriți să completați).

Indici funcționali

Indicii funcționali sunt o caracteristică a PostgreSQL . Acestea sunt foarte asemănătoare coloanelor virtuale și adesea compensează lipsa lor. Acestea sunt indici care nu conțin valoarea unui tabel (cum ar fi indici normali), ci valoarea unei expresii SQL.

linkuri externe