it-swarm.asia

Haruskah skema dbo dihindari?

Ketika datang ke skema dbo:

  • Apakah ini praktik terbaik untuk menghindari menggunakan skema dbo saat membuat objek database?
  • Mengapa skema dbo harus dihindari atau seharusnya?
  • Pengguna basis data mana yang harus memiliki skema dbo?
30
jrara

Ini mungkin praktik yang baik karena ketika Anda memiliki pengguna lain yang menggunakan basis data, Anda ingin dapat membatasi akses mereka dengan skema. Misalnya dalam database Anda memiliki tabel berikut ini.

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

Sebagai direktur SDM saya dapat mengakses apa pun dalam skema HR, sebagai direktur IT saya dapat melihat nama pengguna dan level akses karyawan. Departemen Engineering dapat melihat situs pekerjaan apa yang aktif, dll. Jika dbo adalah skema yang ditetapkan untuk semua tabel, saya akan lebih sulit membagi data saya dan menyediakan peran akses.

Idenya, saya percaya, dalam SQL Server adalah untuk menawarkan produk yang dapat diakses dan ditanyai oleh berbagai departemen. Pada kenyataannya hanya DBAs/DBDevs yang benar-benar mengakses database dan biasanya hanya menyimpan data aplikasi.

Ini juga membantu dengan keterbacaan dan pengelolaan. Pada blush on pertama saya dapat dengan mudah mengidentifikasi tabel apa yang menyimpan data apa dan bagaimana data dipisahkan.

Secara pribadi saya lebih suka mendefinisikan skema sebagai praktik umum. Ingat skema adalah yunani untuk rencana, memiliki struktur skema yang ditata membantu Anda untuk merencanakan dan mengidentifikasi data.

22
Ryan

Saya pikir ini benar-benar turun ke preferensi pengguna karena tidak ada alasan teknologi nyata untuk melakukan ini. Bahkan, demi kesederhanaan, saya katakan selalu menggunakan dbo kecuali persyaratan keamanan Anda menetapkan sebaliknya. Tentu saja, Anda selalu dapat melakukannya hanya untuk tujuan organisasi juga.

Jika ada, dbo harus dihindari karena ini adalah standar untuk SQL Server, itu juga tidak deskriptif sama sekali. Seperti semua nama default lainnya, karena ini adalah preknown, itu membuat hidup seorang hacker jauh lebih mudah (meskipun jika mereka pada titik di mana mereka hanya mencoba mencari tahu nama skema Anda, Anda mungkin sudah borked).

Di tempat saya bekerja, kami menggunakan skema untuk membagi database menjadi bagian-bagian yang logis, dan memberikan izin kepada skema.

Misalnya, kami mungkin memiliki sistem inventaris dengan database. Tabel utama mungkin dalam skema inv. Jika kita mengimpor sesuatu ke dalam basis data maka skema pementasan akan digunakan sebagai bagian dari proses impor. Jika kami memiliki prosedur tersimpan sistem yang tidak perlu diakses oleh pengguna, kami menempatkannya dalam skema sp.

5
DForck42

Ini bukan praktik terbaik sebelumnya karena skema disembunyikan sebelum SQL 2005, semuanya dimasukkan ke dalam skema dbo. Tim SQL Server menunjukkannya sebagai praktik terbaik dan menerbitkan artikel tentangnya: Praktik Terbaik SQL Server - Implementasi Skema Objek Database

Sejauh pertanyaan Anda yang lain tentang siapa yang harus memilikinya: skema dbo dimiliki oleh akun pengguna dbo.

4
user507