Dbo şemadan kaçınılmalı mıdır?


29

Dbo şemaya gelince:

  • Veritabanı nesneleri oluştururken dbo şemasını kullanmaktan kaçınmak en iyi yöntem midir?
  • Dbo şemasından neden kaçınılmalı ya da bırakılmalıdır?
  • Dbo şemasına hangi veritabanı kullanıcısı sahip olmalı?

Bazı danışmanlar dbo şemalarından kaçınmanın ve daima kullanıcı tanımlı şemalar yaratmanın ve bu şemalara objeler atamanın iyi bir uygulama olduğunu söyledi.
jrara

Ben bu blog yorumlarında Alexander Kuznetsov gelen bu açıklama da bulundu mesaja :
jrara

Yanıtlar:


21

Veritabanını kullanan başka kullanıcılarınız olduğunda, şemalara erişimlerini sınırlayabilmek istediğiniz için bu iyi bir uygulama olabilir. Örneğin bir veritabanında aşağıdaki tablolara sahipsiniz.

HR.Payhist
HR.Payscale
HR.Jobdesc
IT.username
IT.useraccesslevel
ENG.jobsite
ENG.trainings

İK yöneticisi HRolarak şemadaki herhangi bir şeye erişebiliyorum , ITyönetici olarak çalışanların kullanıcı adlarını ve erişim seviyelerini görebiliyorum. EngineeringDepartman Dbo ben zor günler benim veriyi segmentlere ve erişim rolleri sağlayan olurdu bütün tablolar için kümesi şeması ise iş yerleri vs. aktif görebilirsiniz.

Fikir, SQL Server'da farklı bölümler tarafından erişilebilen ve sorgulanabilen bir ürün sunmak olduğuna inanıyorum. Gerçekte sadece DBA'lar / DBDev'ler veritabanına gerçekten erişir ve genellikle yalnızca uygulama verilerini depolar.

Aynı zamanda okunabilirlik ve yönetilebilirlik ile yardımcı olur. İlk bakışta, hangi tablonun hangi verileri tuttuğunu ve verilerin nasıl ayrıldığını kolayca belirleyebilirim.

Şahsen ben şemaları genel bir uygulama olarak tanımlamayı tercih ederim. Şema plan için yunan olduğunu unutmayın, düzenli bir şema yapısına sahip olmanız verileri planlamanıza ve tanımlamanıza yardımcı olur.


6

Bunun gerçekten teknolojik bir nedeni olmadığı için kullanıcının tercihine bağlı olduğunu düşünüyorum. Aslında, basitlik uğruna, güvenlik gereksinimleriniz başka türlü öngörülmedikçe her zaman dbo kullanın derim. Tabii ki, sadece örgütsel amaçlar için de her zaman yapabilirsiniz.


1
Bu yaklaşımın% 100'ü geride kaldı. Basitlik için dbo şemasında "çekirdek" tabloları sık sık bırakıyorum ve gerektiğinde eklemeye başlıyorum. Genelde eklediğim ilk ayrı şema, aşama tablolarımı ayrı ayrı gruplamak için "Aşama" veya "Aşama" dır. Başka bir örnek, Twitter'dan harici bir kaynaktan veri eklemek olabilir. Tüm tabloları (örneğin TwitterAccount, TwitterStatus vb.) Öneklemek yerine "Twitter" şeması oluşturacağım.
robopim 14

5

Bir şey varsa, SQL Server için varsayılan olduğu için dbo'dan kaçınılmalıdır, aynı zamanda hiç açıklayıcı değildir. Diğer tüm varsayılan isimler gibi, önceden bilindiği için bir bilgisayar korsanının hayatını çok daha kolay hale getirir (şema adınızı anlamaya çalıştığınız noktada olsalar bile, muhtemelen zaten bıkmışsınızdır).

Çalıştığım yerde, veritabanını mantıksal bölümlere ayırmak ve şemalara izinler vermek için şemalar kullanıyoruz.

Örneğin, veritabanını içeren bir envanter sistemimiz olabilir. Ana tablolar inv şemasında olabilir. Veritabanına bir şey alırsak, alma sürecinin bir parçası olarak aşamalı bir şema kullanılır. Kullanıcıların erişmesi gerekmeyen herhangi bir sistem saklı yordamımız varsa, bunları bir sp şemasına koyarız.


1
"Varsayılan olduğundan, bundan kaçının" için +1. Kullanıcıları bir nesne oluştururken en azından biraz düşünmeye zorlar.
BradC

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.