sql >> Database teknologi >  >> RDS >> Oracle

Offentlige synonymer vs. skema.objektmønster

Offentlige synonymer tjener et meget specifikt formål; de gør det muligt at henvise til et objekt af alle bruger - forudsat at de har de relevante privilegier. Hvis du på noget tidspunkt i fremtiden ønsker at ændre, hvordan en bestemt bruger ser et objekt, er offentlige synonymer ikke vejen at gå.

De bruger også et bestemt objektnavn til hele databasen. Det faktum, at der findes et offentligt synonym, forhindrer dig dog ikke i at oprette et objekt med samme navn. Dette kan være utroligt forvirrende.

Antag for eksempel, at du har en procedure test og et skema emp . Forsøger at udføre emp.test vil ikke fungere, da du allerede har offentligt synonym empbordet .

Tom Kyte , synes at har skrevet en antal artikler om dette.

Med hensyn til ydeevneaspektet synes de at foreslå, at et offentligt synonym over et privat synonym vil resultere i en let fald i ydeevne . Brug af et synonym i stedet for intet synonym vil dog også resultere i et lille fald i ydeevnen. Dette tyder på, at hvis hver sidste computer er værdifuld, bør du slet ikke bruge synonymer.

Sammenlagt tror jeg, at det betyder, at du bør undgå offentlige synonymer, hvis det er muligt. Hvis du bruger man bruger så selvfølgelig en, de findes jo af en grund, men hvis man ikke gør, hvad er så meningen med at have en? scott.emp konstruktionen er klar, viser dig præcist hvilket skema og hvilket objekt du refererer til uden mulighed for fejlfortolkning, hverken af ​​dig selv eller en anden, der kommer ny til databasen og koden.

Hurtigt punkt. Du siger det ikke eksplicit, men ordlyden af ​​dit spørgsmål synes at antyde, at du opretter et skema for hver bruger. Det virker som om det ville være enormt forvirrende...




  1. Returner en liste over alle serverudløsere i SQL Server

  2. Datamodel for bryllupsorganisation

  3. PHP oprette tabel fejl 1064

  4. Gemmer store data.frame i PostgreSQL med R