同义词

发布时间 2023-07-14 16:10:57作者: BBBone

同义词是给表、视图、序列或其他对象一个代替名称的对象。与这些对象关联的任何对象(如触发器或索引)仍关联该对象,而无论使用哪个名称引用该对象。

同义词的主要特点有:

  1. 代替名称:同义词提供一个数据库对象的代替名称,不会变更该对象的属性。

  2. 方便引用:可以使用同义词简化对象的引用,特别是对象名较长或有问题时。

  3. 不用修改对象名:在表名已广泛应用的情况下,如果需要改名,使用同义词可以避免大规模修改。

  4. 重命名:可以创建一个同义词,然后删除原始对象名,实现对象的重命名。

  5. 本地化:可以创建与国际标准相对应的同义词,用于本地化应用程序。

  6. 与对象关联:与同义词关联的对象(如触发器)仍然与基础对象关联。

  7. 公共同义词:可以使用PUBLIC创建的同义词,它不属于任何模式。

同义词的创建和管理主要包括:

  1. 创建同义词:使用CREATE SYNONYM语句创建同义词,指定对象名称和同义词名。

  2. 修改同义词:使用CREATE OR REPLACE SYNONYM重新创建同义词,或ALTER SYNONYM语句更改同义词的可解析名称。

  3. 删除同义词:使用DROP SYNONYM语句删除同义词。

  4. 查询同义词:使用数据字典视图USER_SYNONYMS、DBA_SYNONYMS或ALL_SYNONYMS查询同义词信息。

  5. 授权:授予其他用户使用同义词的权限,否则其不能解析同义词。

  6. 处理同义词解析:确保用户在执行DDL时拥有解析同义词的权限,否则语句会失败。

例如:
CREATE PUBLIC SYNONYM locations FOR demo.places;
CREATE SYNONYM emp FOR hr.employees;
DROP SYNONYM emp;
GRANT SELECT ON emp TO john;
REVOKE SELECT ON john.emp FROM mary;
SELECT * FROM john.emp; -- mary执行会报错,因为没有权限解析emp

同义词使数据库对象的引用更加灵活方便,它并不会真正更改或重命名对象,只是提供一个代替名称。理解同义词这一概念,可以更高效地使用对象,简化应用程序开发。

要熟练使用同义词,需要理解:

  1. 同义词与基础对象的关系,它并不会更改对象的任何属性。

  2. 同义词可以public或隶属于某模式,以及其作用域的影响。

  3. 与同义词关联的触发器或索引将作用于基础对象。

  4. 同义词的使用需要对象权限,否则无法解析同义词。

  5. 同义词可以简化应用程序开发,实现半透明的数据库对象重命名。

同义词看似简单,但其背后的概念还是需要在实践中不断理解和运用。只有在实践中大量使用同义词,体会其工作机制和作用,积累丰富的经验,才能熟练运用同义词,并在系统开发中充分发挥其作用。同义词作为一个很实用的数据库对象,是数据库设计人员和开发人员必备的一个技能。