Verschil tussen synoniem en alias

Synoniem versus alias (in ORACLE-databases) | Private synoniemen en openbare synoniemen
 

In het Engels hebben synoniemen en aliassen bijna dezelfde betekenissen. Maar in databases zijn dat twee verschillende dingen. Vooral in ORACLE-databases is hun gebruik anders. Synoniemen worden gebruikt om objecten van een schema of database door te verwijzen vanuit een ander schema. Dus synoniem is een databaseobjecttype. Maar aliassen komen op een andere manier. Dat betekent; het zijn geen database-objecten. Aliassen worden gebruikt om tabellen, weergaven en kolommen binnen query's door te verwijzen.

Synoniemen

Dit zijn een soort database-objecten. Ze verwijzen naar andere objecten in de database. Het meest gebruikelijke gebruik van synoniemen is om een ​​object van een afzonderlijk schema te verwijzen door een andere naam te gebruiken. Maar synoniemen kunnen ook worden gemaakt om de objecten van een andere database door te verwijzen (in gedistribueerde databases, met behulp van databasekoppelingen). Tabellen, weergaven, functies, procedures, pakketten, sequenties, gematerialiseerde weergaven, java-klassenobjecten en triggers kunnen worden gebruikt als verwijzingen voor de synoniemen. Er zijn twee soorten synoniemen.

  1.  Privé-synoniemen (kan alleen worden gebruikt door de gebruiker die ze heeft gemaakt.)
  2.  Publieke synoniemen (kan worden gebruikt door alle gebruikers die over de juiste rechten beschikken)

Hier is een eenvoudige syntaxis om een ​​synoniem te maken in een afzonderlijke database,

maak synoniem myschema.mytable1 voor [e-mail beveiligd]_link1

Omdat we een synoniem hebben genoemd mytable1 in myschema voor [e-mail beveiligd]_link1 (gedistribueerde databasetabel), we kunnen eenvoudig de gedistribueerde databasetabel doorverwijzen mytable1. We hoeven de lange objectnaam niet overal met databaselink te gebruiken.

Alias

Dit zijn slechts een andere naam voor een weergave, een tabel of een kolom in een query. Het zijn geen database-objecten. Daarom zijn aliassen niet overal geldig in het schema / de database. Ze zijn alleen geldig binnen de query. Laten we dit voorbeeld bekijken,

                                    selecteer tab1.col1 als c1, tab2.col2 als c2

                                       van user1.tab1 tab1, user1.tab2 tab2

                                       waar tab1.col1 = tab2.col2

Hier zijn c1 en c2 kolomaliassen, die worden gebruikt voor tab1.col1 en tab2.col2, en tab1 en tab2 zijn tabelaliassen, die worden gebruikt voor user1.table1 en user2.table2. Al deze aliassen zijn alleen geldig binnen deze query. 

Wat is het verschil tussen Synoniem en Alias (in ORACLE-databases)?

  • Synoniemen zijn een databaseobjecttype. Maar aliassen zijn slechts een naam om een ​​tabel, weergave of kolom in een query door te verwijzen. Geen databaseobject.
  • Synoniemen kunnen worden gemaakt voor tabellen, weergaven, functies, procedures, pakketten, sequenties, gematerialiseerde weergaven, java class-objecttypen en triggers. Maar aliassen worden alleen gebruikt voor weergaven, tabellen en hun kolommen.
  • Aangezien synoniemen een databaseobject zijn, zijn ze geldig binnen het schema (privé-synoniem) of in de database (openbaar synoniem). Maar aliassen die geldig zijn in de query waar ze worden gebruikt.
  • Elk schema heeft nodig "Maak een synoniem" privilege om synoniemen te maken. Maar er is geen enkel voorrecht om aliassen te gebruiken.