Різниця між синонімом та псевдонімом

Синонім проти псевдоніму (у базах даних ORACLE) | Приватні синоніми та загальнодоступні синоніми
 

В англійській мові синонім та псевдонім мають майже однакове значення. Але в базах даних це дві різні речі. Особливо в базах даних ORACLE, обидва способи їх використання різні. Синоніми використовуються для позначення об'єктів схеми або бази даних з іншої схеми. Отже, синонім - це тип об’єкта бази даних. Але псевдоніми йдуть по-іншому. Це означає; вони не є об'єктами бази даних. Псевдоніми використовуються для позначення таблиць, подань та стовпців всередині запитів.

Синоніми

Це тип об'єктів бази даних. Вони посилаються на інші об'єкти в базі даних. Найбільш поширене використання синоніма - це посилання на об'єкт окремої схеми за допомогою іншого імені. Але синоніми можуть бути створені і для посилання на об’єкти іншої бази даних (також у розподілених базах даних, використовуючи посилання на бази даних). Таблиці, види, функції, процедури, пакети, послідовності, матеріалізовані подання, об’єкти класу java та тригери можуть використовуватися як посилання на синоніми. Існує два типи синонімів.

  1.  Приватні синоніми (може використовуватися лише користувачем, який їх створив.)
  2.  Загальнодоступні синоніми (можуть використовуватись усі користувачі, які мають відповідні привілеї)

Ось простий синтаксис для створення синоніму в окремій базі даних,

створити синонім myschema.mytable1 для [захищено електронною поштою] _link1

Оскільки у нас є синонім на ім'я mytable1 в мішема для [захищено електронною поштою] _link1 (таблиця розподіленої бази даних), ми можемо легко вказати таблицю розподіленої бази даних за допомогою mytable1. Нам не потрібно використовувати довге ім'я об'єкта зі посиланням на базу даних скрізь.

Псевдонім

Це лише інша назва для представлення даних, таблиці або стовпця всередині запиту. Вони не є об'єктами бази даних. Тому псевдоніми не діють скрізь у схемі / базі даних. Вони дійсні лише в запиті. Подивимося на цьому прикладі,

                                    виберіть tab1.col1 як c1, tab2.col2 як c2

                                       від user1.tab1 tab1, user1.tab2 tab2

                                       де tab1.col1 = tab2.col2

Тут c1 і c2 - псевдоніми стовпців, які використовуються для tab1.col1 і tab2.col2, а tab1 і tab2 - псевдоніми таблиць, які використовуються для user1.table1 та user2.table2. Усі ці псевдоніми дійсні лише в цьому запиті. 

Яка різниця між синонімом та псевдонімом (у базах даних ORACLE)?

  • Синоніми - це тип об’єкта бази даних. Але псевдоніми - це лише назва для позначення таблиці, подання чи стовпця всередині запиту. Не є об'єктом бази даних.
  • Синоніми можна створити для таблиць, представлень, функцій, процедур, пакетів, послідовностей, матеріалізованих поглядів, типів об’єктів і тригерів класу java. Але псевдоніми використовуються лише для представлення даних, таблиць та їх стовпців.
  • Оскільки синоніми є об’єктом бази даних, вони дійсні всередині схеми (приватний синонім) або всередині бази даних (загальнодоступний синонім). Але псевдоніми дійсні в запиті, де вони використовуються.
  • Кожна схема потребує "Створити синонім" привілей для створення синонімів. Але немає жодної привілеї використовувати псевдоніми.