Synonym vs Alias (i ORACLE-databaser) | Private synonymer og offentlige synonymer
På engelsk har synonymer og alias nesten samme betydning. Men i databaser er det to forskjellige ting. Spesielt i ORACLE-databaser er bruken av begge forskjellig. Synonymer brukes til å referere objekter til et skjema eller en database fra et annet skjema. Så synonym er en databaseobjekttype. Men aliaser kommer på en annen måte. Det betyr; de er ikke databaseobjekter. Aliaser brukes til å henvise til tabeller, visninger og kolonner i spørringer.
Synonymer
Dette er en type databaseobjekter. De refererer til andre objekter i databasen. Den vanligste bruken av synonym er å henvise til et objekt i et separat skjema ved å bruke et annet navn. Men synonymer kan også opprettes for å referere objektene til en annen database (i distribuerte databaser, ved å bruke databaselenker). Tabeller, visninger, funksjoner, prosedyrer, pakker, sekvenser, materialiserte visninger, java-klasseobjekter og triggere kan brukes som referanser for synonymene. Det finnes to typer synonymer.
- Private synonymer (kan bare brukes av brukeren som opprettet dem.)
- Offentlige synonymer (kan brukes av alle brukere som har de riktige rettighetene)
Her er en enkel syntaks for å lage et synonym i en egen database, opprett synonym myschema.mytable1 for [email protected]_link1
Siden vi har et synonym som heter mytable1 i myschema for [email protected]_link1 (distribuert databasetabell), kan vi enkelt henvise til den distribuerte databasetabellen ved å bruke mytable1. Vi trenger ikke bruke det lange objektnavnet med databasekobling over alt.
Alias
Dette er bare et annet navn for en visning, en tabell eller en kolonne inne i en spørring. De er ikke databaseobjekter. Derfor er aliaser ikke gyldige over alt i skjemaet/databasen. De er kun gyldige i søket. La oss se dette eksemplet, velg tab1.col1 som c1, tab2.col2 som c2
from user1.tab1 tab1, user1.tab2 tab2
where tab1.col1=tab2.col2
Her er c1 og c2 kolonnealiaser, som brukes for tab1.col1 og tab2.col2, og tab1 og tab2 er tabellaliaser, som brukes for bruker1.tabell1 og bruker2.tabell2. Alle disse aliasene er kun gyldige i dette søket.
Hva er forskjellen mellom Synonym og Alias (i ORACLE-databaser)?