ทำไมชื่อตารางใน SQL Server เริ่มต้นด้วย“ dbo”


คำตอบ:


233

dbo เป็นสกีมาเริ่มต้นใน SQL Server คุณสามารถสร้างสกีมาของคุณเองเพื่อให้คุณจัดการเนมสเปซของวัตถุได้ดีขึ้น


22
ตามแนวทางปฏิบัติที่ดีที่สุดฉันเพิ่ม "dbo" เสมอ คำนำหน้าแม้ว่ามันไม่จำเป็น เวลาส่วนใหญ่ใน SQL เป็นสิ่งที่ดีอย่างชัดเจน
ล้อมรอบ

3
@ ล้อมรอบโดย FishFish: อาจไม่ใช่วิธีปฏิบัติที่ดีที่สุด แต่ฉันอาจผิดเพราะฉันไม่ใช่ผู้เชี่ยวชาญ SQL stackoverflow.com/a/769639/602245
Brett

13
บทความนี้จากคำตอบที่ต่างออกไปอ้างว่ามันเป็นแนวปฏิบัติที่ดีที่สุด: "รหัสจะไม่ต้องใช้ชื่อที่มีคุณสมบัติครบถ้วนแม้ว่าจะมีการเพิ่มประสิทธิภาพเล็กน้อยในการทำเช่นนั้นและถือว่าเป็นแนวปฏิบัติที่ดีที่สุด"
Carl G

7
นอกจากนี้คำตอบที่คุณเชื่อมโยงยังแนะนำรวมถึง "dbo ด้วย" เพื่อให้เครื่องมือเพิ่มประสิทธิภาพไม่ต้องค้นหาสคีมา
Carl G

7
dbo ไม่ใช่วิธีปฏิบัติที่ดี สร้างสคีมาของคุณเองและใช้มันเสมอ dbo มีเพียงกลวิธีการโอนย้ายเท่านั้นดังนั้น pre-SQL Server 2005 ยังคงทำงาน ใช่ใช้สคีมาเสมอ ไม่ไม่ใช่การย้ายข้อมูล (เช่น dbo)
David Betz

85

หากคุณกำลังใช้ Studio จัดการเซิร์ฟเวอร์ของ SQL คุณสามารถสร้างสคีมาของคุณเองได้โดยไปที่ฐานข้อมูล - ฐานข้อมูลของคุณ - ความปลอดภัย - Schemas

ในการสร้างโดยใช้สคริปต์นั้นง่ายเหมือน (ตัวอย่าง):

CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]

คุณสามารถใช้พวกมันเพื่อจัดกลุ่มตารางของคุณอย่างมีเหตุผลเช่นโดยสร้าง schema สำหรับข้อมูล "การเงิน" และอีกรายการหนึ่งสำหรับข้อมูล "ส่วนบุคคล" ตารางของคุณจะแสดงเป็น:

Financial.BankAccounts Financial.Transaction Personal.Address

แทนที่จะใช้สกีมาเริ่มต้นของ dbo


คุณรู้หรือไม่ว่าสิ่งนั้นเป็นสาเหตุของปัญหาเมื่อเราใช้ Entity framework?
batmaci

6
คุณสามารถใช้ schemas กับ Entity Framework - แม้จะมีรหัสก่อนหากคุณต้องการ:[Table("Customer", Schema = "MySchema")]
Fenton

'การอนุญาต [dbo]' ให้สิทธิ์เหมือนกับ dbo บนสคีมาหรือไม่หรือฉันยังต้องให้การอนุญาตแก่ผู้ใช้หรือไม่?
Mark Micallef

21

มันใหม่สำหรับ SQL 2005 และนำเสนอวิธีที่ง่ายกว่าในการจัดกลุ่มวัตถุโดยเฉพาะอย่างยิ่งเพื่อวัตถุประสงค์ในการรักษาความปลอดภัยวัตถุใน "กลุ่ม" นั้น

ลิงก์ต่อไปนี้มีคำอธิบายเชิงลึกเพิ่มเติมเกี่ยวกับสิ่งที่เป็นสาเหตุที่เราจะใช้มัน:

ทำความเข้าใจกับความแตกต่างระหว่างเจ้าของและแบบแผนใน SQL Server

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.