Bir önceki yazımda PostgreSQL’de schema kavramından ve obje hiyerarşi’sinden bahsetmiştim. Bu yazımızda schema kavramını detaylandıracağız. Önceki yazıdada bahsettiğim gibi PostgreSQL veritabanı cluster, bir veya daha fazla veritabanı içerebilir. Roller ve diğer birkaç nesne türü, tüm cluster genelinde paylaşılır yani global nesnelerdir. Sunucuya ise client bağlantısı, yalnızca bağlantı isteğinde, belirtilen tek bir veritabanındaki verilere erişebilir.

Veritabanı ise tabloları ve objeleri içeren bir veya daha fazla schema’ya sahip olabilir, yani her schema yalnızca bir veri tabanına ait olabilirken  bir veri tabanında birden çok schema yaratılabilir. Farklı isimdeki iki schema, aynı isimde objeler içerebilir. Aslında burada schema kavramı veritabanı objeleri için namespace anlamına gelmektedir. Veri tabanı objesine erişmek istendiği zaman schema_name.object_name isimlendirmesi kullanılır. Veritabanlarından farklı olarak, schemalar katı bir şekilde ayrılmaz: bir kullanıcı, yetkileri varsa, bağlı oldukları veritabanındaki schemaların herhangi birindeki objelere erişebilir.  Schemaları kullanmak istemenin birkaç nedeni vardır;

  • Birçok kullanıcının birbirine müdahale etmeden, veritabanını kullanmasına izin vermek için.
  • Veritabanı objelerini daha yönetilebilir hale getirmek için mantıksal gruplar halinde düzenlemek.
  • Üçüncü taraf uygulamalar, diğer objelerin adlarıyla çakışmaması için ayrı schemalara yerleştirilebilir.
  • Schemalar, işletim sistemi düzeyindeki dizinlere benzer, ancak schemalar iç içe olamaz.

(continue reading…)

Loading