Synonyymi vs alias (ORACLE-tietokannassa) | Yksityiset synonyymit ja julkiset synonyymit
Englannissa synonyymeillä ja aliaksilla on lähes samat merkitykset. Mutta tietokannassa nämä ovat kaksi eri asiaa. Varsinkin ORACLE-tietokannassa niiden molempien käyttö on erilaista. Synonyymejä käytetään viittaamaan skeeman tai tietokannan objekteihin toisesta skeemasta. Synonyymi on siis tietokantaobjektityyppi. Mutta aliakset tulevat eri tavalla. Se tarkoittaa; ne eivät ole tietokantaobjekteja. Aliaksia käytetään viittaamaan taulukoihin, näkymiin ja sarakkeisiin kyselyjen sisällä.
Synonyymit
Nämä ovat eräänlaisia tietokantaobjekteja. Ne viittaavat muihin tietokannan objekteihin. Yleisin synonyymien käyttö on viitata erillisen skeeman objektiin toisella nimellä. Mutta synonyymejä voidaan luoda viittaamaan myös toisen tietokannan objekteihin (hajautettuihin tietokantoihin tietokantalinkkien avulla). Taulukoita, näkymiä, funktioita, proseduureja, paketteja, sarjoja, materialisoituja näkymiä, Java-luokan objekteja ja triggereitä voidaan käyttää synonyymien viitteinä. Synonyymejä on kahdenlaisia.
- Yksityiset synonyymit (vain ne luonut käyttäjä voi käyttää.)
- Julkiset synonyymit (voivat käyttää kaikki käyttäjät, joilla on asianmukaiset oikeudet)
Tässä on yksinkertainen syntaksi synonyymin luomiseksi erilliseen tietokantaan, luo synonyymi myschema.mytable1 kohteelle [email protected]_link1
Koska meillä on synonyymi mytable1 myschemassa [email protected]_link1 (jaettu tietokantataulukko), voimme helposti viitata hajautettuun tietokantataulukkoon käyttämällä mytable1:tä. Meidän ei tarvitse käyttää pitkää objektin nimeä tietokantalinkin kanssa kaikkialla.
Alias
Nämä ovat vain toinen nimi näkymälle, taulukolle tai sarakkeelle kyselyn sisällä. Ne eivät ole tietokantaobjekteja. Siksi aliakset eivät ole voimassa kaikkialla skeemassa/tietokannassa. Ne ovat voimassa vain kyselyn sisällä. Katsotaanpa tätä esimerkkiä, valitse tab1.col1 muodossa c1, tab2.col2 muodossa c2
from user1.tab1 tab1, user1.tab2 tab2
where tab1.col1=tab2.col2
Tässä c1 ja c2 ovat sarakealiaksia, joita käytetään kentille tab1.col1 ja tab2.col2, ja tab1 ja tab2 ovat taulukon aliaksia, joita käytetään kohteille user1.table1 ja user2.table2. Kaikki nämä aliakset ovat voimassa vain tämän kyselyn sisällä.
Mitä eroa on synonyymin ja aliaksen (ORACLE-tietokannassa) välillä?