Şemaların aşırı kullanımı / doğru kullanımı?


9

Stackoverflow ile ilgili bu soruyu sorduktan sonra , yaptığım şeyin nerede doğru / en iyi uygulama olduğunu merak ettim.

Temel olarak, oluşturduğum her nesne şema adı bir kullanımı yansıtan bir şemaya gidiyor. Örneğin, şemalarım var Auditve Admin(diğerleri arasında).

Bu da hiçbir nesne bırakmaz dbo. Bu tamam mı? Yapmam gereken başka bir şey var mı?


Yanıtlar:


13

Şemalar sadece harika bir güvenlik aracı değildir (bunları kullanmak için yeterli nedendir), aynı zamanda mantıksal ayırma için de mükemmeldir. Ve pratik yaptığınız gibi görünüyor.

Mevcut gereksinim özel güvenliğe ihtiyaç duymasa bile, Denetim ile ilgili tüm veritabanı nesnelerinin bir veritabanı rolü için güvenli olması gerektiğini söyleyin. Bu nesneler dboşema boyunca dağılmışsa deny, tek tek nesnelerde açıkça izinler almanız gerekir . Ama Auditşema ile, bir single yaparsınız denyve hazırsınız.

Şahsen şemaların kullanımını uyguluyorum. Veritabanlarındaki her şey gibi, mutlu bir ortam var. Veri katmanının her ayrıntılı boyutu için bir şema oluşturmazdım. Çok fazla şema ve ayrılık var. Ama sanırım buna yakın bir yerde değilsin.


5

Tipik bir desen izinlerine dayanarak şemalar, bu nedenle olurdu WebGUI, Desktoptüm nesneler aynı permissons zorunda kodu için vb şemasından .

Net kullanıcı gruplarınız varsa, buna izin verebilirsiniz, ancak bir noktada çakışan ve dağınık izinlerle sonuçlanırsınız. Kullanıcı / grup kontrollerini izin nesneleri yerine bazı kodlara erteleme eğilimindeyim : Yönetici ve HR Excel kullanıcılarınız olduğunu varsayalım: bunların hepsi Desktopkod çalıştırıyor .

Veri genellikle paylaşılır, bu yüzden bir Dataşema, belki bir Historyveya Archiveşema olurdu .

Bazı kod genel (bir UDF veya dahili proc gibi) değil, bu yüzden Helperistemci kodu tarafından çalıştırılmaması gereken kod için bir şema kullanırdım .

Son olarak, şemalar gibi Stagingya Systemya Maintenancekullanışlı bazen.

dboŞemada kullanıcı nesnesi olmamasına rağmen , kullanıcı dbotüm şemaların sahibidir.


4

dboŞemadaki hiçbir nesne mükemmel değildir. Gördüğüm kadarıyla, şemaların aşırı kullanımı değil - ne kadar şema 'çok fazla' oldukça öznel bir soru olsa da ("OO tasarımımın kaç sınıfı olmalı?" İle karşılaştırılabilir).

Bahsettiğim diğer tek şey şemaya tek tek nesneler yerine izin vermek olacaktır (SO sorunuz izinler hakkında hiçbir şey belirtmez).


Zaman zaman "akışkan" spesifikasyonlara sahip olduğumuz için genellikle geliştirme sonunda izinleri sıralarım. Böyle mi yapıyorsun? Veya nesneleri vb.
Oluştururken

Nesne oluşturun, şemaya atayın, şemaya izinler atayın. Geliştirme için geniş açık erişime ihtiyacınız varsa, şemalarda tam izinler verin ve daha sonra daraltın.
Simon Righarts

1

Modülleri ve kullanım modellerine göre veritabanını ayırmak için şemalar kullanmak istiyorum. Ben veritabanı tabloları anlamak çok kolaylaştırır bu nedenle bakım kolaylaştırır buluyorum. Son sql server projemde aşağıdaki şema türleri vardı. LT - Arama Tabloları

COMMON
LT_COMMON
MODULENAME1
LT_MODULENAME1
..

Büyük bir modül için bunları daha fazla şemaya ayırdık. Örneğin kişisel modül 5'ten fazla modülden oluşur.

PERSONEL_COMMON
PERSONEL_FINANCE
PERSONEL_MODULE2
..
LT_PERSONEL_COMMON
LT_PERSONEL_FINANCE
LT_PERSONEL_MODULE2

TEMP, MAINTANENCE gibi diğer etkinlikler için de şemalar dahil ettik. Yönetim stüdyosunda şema adını kullanarak filtre uygulayabilirsiniz. MODÜL1'den sorumlu bir geliştirici, isme göre filtreleme ve sadece bu tablolarla neredeyse her zaman çalışır. Bu, geliştiriciler, dbas ve yeni gelenlerin veritabanı tablolarını anlamasını çok kolaylaştırır.


-1

En iyi uygulamalar sql sunucusu için oracle daha farklı olabilir, ancak benim deneyim daha az şemaları, daha iyi olmasıdır.
Özel ayrıcalıklara ve bakım yapmak için bazı kodlara sahip olan dba / programcı için bir şemaya sahip olmayı seviyorum. Tüm işletme verileri tek bir şemada olmalıdır, böylece nerede olduğunu bilirsiniz. Adlandırma kuralları, tablonun kullanımı veya saklanan kod arasında ayrım yapmak için yeterlidir.
Her birinin kendi şemasına sahip küçük çakışma ile farklı verilerden oluşan birden fazla iş biriminizin olduğu bir durum görebilirim. Aksi takdirde basit tutun.


2
Şemalar olan SQL Server farklı: Tam veritabanı şema kullanıcı ayrımı yoktur. Oracle şemalarının sınırlı olduğunu buldum
gbn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.