パブリックシノニムは非常に特定の目的を果たします。適切な権限を持っていると仮定して、すべてのユーザーがオブジェクトを参照できるようにします。将来、特定のユーザーがオブジェクトを表示する方法を変更したい場合は、パブリックシノニムを使用することはできません。
また、データベース全体の特定のオブジェクト名を使い果たします。ただし、パブリックシノニムが存在するという事実は、同じ名前のオブジェクトを作成することを妨げるものではありません。これは信じられないほど混乱する可能性があります。
たとえば、プロシージャtest
とスキーマがあるとしますemp
。テーブルにすでにパブリックシノニムがあるため、実行しようemp.test
としても機能しません。emp
トム・カイトは、これについて多くの記事を書いたようです。
パフォーマンスの面では、プライベートシノニムよりもパブリックシノニムの方がパフォーマンスがわずかに低下することを示唆しているようです。ただし、同義語を使用しない代わりに同義語を使用すると、パフォーマンスがわずかに低下します。これは、最後のすべてのコンピュータが貴重である場合は、同義語をまったく使用しないことを示唆しています。
まとめると、これは、可能であれば公的な同義語を避けるべきであることを意味すると思います。必要な場合はもちろん使用しますが、結局のところ存在しますが、必要ない場合はどうすればよいのでしょうか。構成は明確であり、scott.emp
自分自身またはデータベースとコードを初めて使用する誰かによって誤解される可能性なしに、参照しているスキーマとオブジェクトを正確に示します。
クイックポイント。明示的には言いませんが、質問の文言は、すべてのユーザーのスキーマを作成していることを示唆しているようです。これは非常に混乱するようです...