Bu yazımda, SQL Server'da oldukça sık kullanılan ve günlük veri işlemlerinde hayat kurtaran iki komutu inceleyeceğiz: SELECT INTO ve INSERT INTO SELECT. Bu ...
SQL Server Schema Kullanımı
Bu yazımda SQL Server'da oldukça faydalı olan schema yapısını inceleyeceğiz. SQL Server’da şema yapısı özellikle orta ve büyük ölçekli projelerde veritabanı nesnelerini düzenli, güvenli ve yönetilebilir hale getirir. Hem mantıksal bir gruplanma sağlar hem de yetkilendirme konusunda önemli avantajlar sunar.
Schema Nedir?
Schema, veritabanı içindeki nesnelerin (tablolar, view’lar, prosedürle, sequence vb.) mantıksal olarak gruplanmasını sağlayan yapılardır.
Basitçe anlatmak gerekirse:
-
dbo SQL Server’ın varsayılan şemasıdır.
-
Yeni bir şema oluşturduğunuzda tablolarınız
pro.ProductOrdergibi iki parçalı isim alır. -
Proje, modül, güvenlik veya departman bazlı ayrımlar için idealdir.
Schema Kullanmanın Faydaları
Daha düzenli bir veritabanı
Tabloları modüllere ayırırsın:
-
sales.Order -
inventory.Product -
log.AuditTrail
Güvenlik kolaylığı
Schema bazında yetki verebilir veya kısıtlayabilirsin:
-
Bir kullanıcı sadece
salesşemasını görebilir. -
logşemasına DELETE engellenebilir.
İsim çakışmalarını engeller
Aynı tablo adı farklı şemalarda olabilir:
-
hr.Employee -
finance.Employee
Modüler yapı sağlar
Büyük ERP, Mikroservis, DDD projelerinde kullanmak şarttır.
Schema Oluşturma
CREATE SCHEMA pro;
Şema İçine Tablo Oluşturma
CREATE TABLE pro.ProductOrder (
ID INT PRIMARY KEY,
ProductName NVARCHAR(100),
Quantity INT
);
Bir Tabloyu Başka Bir Şemaya Taşımak
ALTER SCHEMA pro TRANSFER OBJECT::dbo.Persons;
Bu işlemden sonra tablo pro.Persons olarak kullanılmaya devam eder. Bu işlem sırasında tabloya erişim kesilmez, fakat şemanın değişmesi bazı permission (izin) ilişkilerini etkileyebilir. Yetki yapınızı kontrol etmeyi unutmayın.
Schema Silme
Bir schema sadece boşsa silinebilir.
Schema kontrolü yap:
SELECT * FROM sys.objects WHERE schema_id = SCHEMA_ID('pro');
Schema sil:
DROP SCHEMA pro;
Schema Owner Değiştirme
ALTER AUTHORIZATION ON SCHEMA::pro TO yasinsunmaz;
Schema Bazında Yetki Verme
Örnek SQL kullanıcımız: yasinsunmaz
Tüm tablolara SELECT izni:
GRANT SELECT ON SCHEMA::sales TO yasinsunmaz;
INSERT/UPDATE/DELETE izni:
GRANT INSERT, UPDATE, DELETE ON SCHEMA::sales TO yasinsunmaz;
Tüm yetkiler:
GRANT CONTROL ON SCHEMA::sales TO yasinsunmaz;
Yetki kaldırma:
REVOKE SELECT ON SCHEMA::sales FROM yasinsunmaz;DENY UPDATE ON SCHEMA::sales TO yasinsunmaz;
Kullanıcıya Varsayılan Schema Atama
ALTER USER yasinsunmaz WITH DEFAULT_SCHEMA = sales;
Bu işlem sonrası SQL artık şöyle çalışır:
SELECT * FROM sales.Customer;
Bir Schema'daki Tüm Nesneleri Listeleme
SELECT
s.name AS SchemaName,
o.name AS ObjectName,
o.type_desc
FROM sys.objects o
JOIN sys.schemas s ON o.schema_id = s.schema_id
ORDER BY s.name, o.type_desc;
Kısaca schema yapısı veritabanı organizasyonunun vazgeçilmez parçalarından biridir.
Umarım faydalı olmuştur. İyi çalışmalar!

Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.