Niektórzy konsultanci powiedzieli, że dobrą praktyką jest unikanie schematu dbo i zawsze tworzenie schematów zdefiniowanych przez użytkownika i przypisywanie obiektów do tych schematów.
Może to być dobra praktyka, ponieważ gdy inni użytkownicy korzystają z bazy danych, chcesz mieć możliwość ograniczenia ich dostępu za pomocą schematów. Na przykład w bazie danych masz następujące tabele.
Jako dyrektor HR jestem w stanie uzyskać dostęp do czegokolwiek w HRschemacie, jako ITdyrektor widzę nazwy użytkowników i poziomy dostępu pracowników. EngineeringDział można zobaczyć, jakie strony pracy są aktywne, itd. Jeśli dbo był zestaw schematu dla wszystkich tabel musiałbym trudniej segmentację moje dane i zapewniając role dostępu.
Wierzę, że w SQL Server ideą jest oferowanie produktu, do którego mogą uzyskać dostęp i które mogą uzyskiwać zapytania od różnych działów. W rzeczywistości tylko DBA / DBDevs naprawdę uzyskują dostęp do bazy danych i zwykle przechowują tylko dane aplikacji.
Pomaga również w czytelności i zarządzaniu. Na pierwszy rzut oka mogę łatwo zidentyfikować, która tabela zawiera jakie dane i jak dane są rozdzielane.
Osobiście wolę definiować schematy jako ogólną praktykę. Pamiętaj, że schemat jest grecki dla planu, mając uporządkowaną strukturę schematu pomaga zaplanować i zidentyfikować dane.
Myślę, że to naprawdę sprowadza się do preferencji użytkownika, ponieważ nie ma prawdziwego technologicznego powodu, aby to zrobić. W rzeczywistości, dla uproszczenia, mówię zawsze używaj dbo, chyba że twoje wymagania bezpieczeństwa stanowią inaczej. Oczywiście zawsze możesz to zrobić tylko w celach organizacyjnych.
100% za tym podejściem. Często zostawiam tabele „core” w schemacie dbo dla uproszczenia i zaczynam dodawać w razie potrzeby. Zwykle pierwszym oddzielnym schematem, który dodaję, jest „etap” lub „etapowy”, aby osobno pogrupować tabele tymczasowe. Innym przykładem byłoby dodanie danych ze źródła zewnętrznego, powiedzmy Twitter. Zamiast prefiksu wszystkich tabel (tj. TwitterAccount, TwitterStatus itp.) Utworzę schemat „Twitter”.
W każdym razie należy unikać dbo, ponieważ jest to ustawienie domyślne dla programu SQL Server, ale w ogóle nie jest opisowe. Podobnie jak wszystkie inne domyślne nazwy, ponieważ jest znany, znacznie ułatwia życie hakera (chociaż jeśli są w punkcie, w którym próbują po prostu wymyślić nazwę schematu, prawdopodobnie już zostałeś oszukany).
Tam, gdzie pracuję, używamy schematów, aby podzielić bazę danych na logiczne sekcje i przypisać uprawnienia do schematów.
Na przykład możemy mieć system inwentaryzacji z bazą danych. Główne tabele mogą znajdować się w schemacie inv. Jeśli zaimportujemy coś do bazy danych, wówczas jako część procesu importowania zostanie użyty schemat pomostowy. Jeśli mamy jakieś systemowe procedury składowane, do których użytkownicy nie potrzebują dostępu, umieszczamy je w schemacie SP.
Nie była to wcześniej najlepsza praktyka, ponieważ schematy były ukryte przed SQL 2005, wszystko zostało umieszczone w schemacie dbo. Zespół SQL Server pokazuje to jako najlepszą praktykę i opublikował artykuł na ten temat:
SQL Server Best Practices - Implementation of Object Object Schemas
Jeśli chodzi o inne pytanie dotyczące tego, kto powinien być właścicielem: schemat dbo jest własnością konta użytkownika dbo.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.