Kesinlikle, Veritabanı ve Şema arasındaki fark MySql'de yoktur.
Ancak, SQL Server gibi diğer veritabanı motorlarında durum böyle değildir. SQL sunucusunda:,
Her tablo, veritabanı şeması adı verilen veritabanındaki nesnelerin bir grubuna aittir . Bir kapsayıcı veya ad alanıdır ( Microsoft SQL Server 2012'yi Sorgulamak )
Varsayılan olarak, SQL Server'daki tüm tablolar dbo adı verilen varsayılan bir şemaya aittir . Belirli bir şemaya tahsis edilmemiş bir tabloyu sorguladığınızda, aşağıdaki gibi bir şey yapabilirsiniz:
SELECT *
FROM your_table
bu şuna eşdeğerdir:
SELECT *
FROM dbo.your_table
Artık SQL sunucusu, size benzer bir amacı paylaşan tabloları gruplama imkanı veren farklı şemaların oluşturulmasına izin veriyor. Bu, veritabanını düzenlemeye yardımcı olur.
Örneğin, adlı bir şema oluşturabilir satış gibi tablolarla, faturalar , creditorders (ve satış ilgili diğer) ve adlı başka şema arama gibi tablolarla ülkeler , para birimleri , subscriptiontypes görünüm olarak kullanılan (ve diğer tablo up table).
Belirli bir etki alanına tahsis edilen tablolar, SQL Server Studio Manager'da, tablo adının başına eklenen şema adı ile görüntülenir (tam olarak varsayılan dbo şemasına ait tablolarla aynı ).
SQL Server'da özel şemalar bulunmaktadır. Aynı kitaptan alıntı yapmak için:
Birkaç yerleşik veritabanı şeması vardır ve bırakılamaz veya değiştirilemez:
1) dbo , varsayılan şema.
2) konuk , konuk bir kullanıcının kullanabileceği nesneleri içerir ("konuk kullanıcı", bazı varsayılan ve yüksek oranda kısıtlanmış izinlerle, SQL Server dilinde özel bir roldür). Nadiren kullanılmış.
3) Information Schema Views tarafından kullanılan INFORMATION_SCHEMA
4) sys , yalnızca SQL Server dahili kullanımı için ayrılmıştır
Şemalar sadece gruplama amaçlı değildir. MSDN'de açıklandığı gibi, her şema için farklı kullanıcılara farklı izinler vermek aslında mümkündür .
Bu şekilde, yukarıda bahsedilen şema araması , veri tabanındaki herhangi bir standart kullanıcı için kullanılabilir hale getirilebilir (örneğin SELECT, yalnızca izinler), tedarikçi bankaccountdetails adlı bir tablo , finansal adı verilen farklı bir şemada tahsis edilebilir ve yalnızca grup accounts(sadece bir örnek, fikri anladınız).
Son olarak ve aynı kitaptan tekrar alıntı yaparak:
Aynı Veritabanı Şeması ve Tablo Şeması değildir . İlki bir tablonun ad alanıdır, ikincisi ise tablo tanımını ifade eder