ความแตกต่างระหว่างฐานข้อมูลกับผู้ใช้กับสคีมา


78

ฉันสับสนกับฐานข้อมูลข้อกำหนดผู้ใช้และสคีมา ใครสามารถอธิบายได้ว่าพวกเขาแตกต่างจากกันอย่างไร (ถ้าเป็น)

หากพวกเขาเหมือนกันแล้วความคล้ายคลึงกันระหว่างพวกเขาคืออะไร เราจะใช้มันอย่างไร และเราจะสร้างพวกเขาได้อย่างไร


หวังว่านี้จะให้ความคิดพื้นฐาน: answers.com/Q/Difference_between_user_and_schema_oracle
Sandun Madola

คำตอบ:


77

ใน Oracle ผู้ใช้และสกีมาเป็นสิ่งเดียวกัน คุณสามารถพิจารณาว่าผู้ใช้เป็นบัญชีที่คุณใช้เชื่อมต่อกับฐานข้อมูลและสคีมาเป็นชุดของวัตถุ (ตารางมุมมองและอื่น ๆ ) ที่เป็นของบัญชีนั้น

ดูโพสต์นี้บน Stack Overflow: ข้อแตกต่างระหว่าง User กับ Schema ใน Oracle? สำหรับรายละเอียดเพิ่มเติมและลิงก์เพิ่มเติม

คุณสร้างผู้ใช้ด้วยcreate userคำสั่ง นอกจากนี้ "สร้าง" สคีมา (ว่างในตอนแรก) - คุณไม่สามารถสร้างสคีมาได้ดังนั้นจะเชื่อมโยงกับผู้ใช้ เมื่อสร้างผู้ใช้แล้วผู้ดูแลระบบสามารถให้สิทธิพิเศษแก่ผู้ใช้ซึ่งจะทำให้ผู้ใช้สามารถสร้างตารางเรียกใช้selectคิวinsertรีและอื่น ๆ ได้

ฐานข้อมูลเป็นสิ่งที่มีผู้ใช้ทั้งหมดที่คุณสร้างขึ้นและข้อมูลของพวกเขา (และผู้ใช้ระบบตารางมุมมองและอื่น ๆ ที่กำหนดไว้ล่วงหน้าซึ่งทำให้การทำงานทั้งหมด) คุณควรดูเอกสารสถาปัตยกรรมฐานข้อมูล Oracleในแนวทางแนวคิด (อันที่จริงแล้วทั้งหน้านั้นมีค่าต่อการอ่าน - มีส่วนเกี่ยวกับผู้ใช้และสกีมาที่สูงกว่าในหน้านั้น) เพื่อรับรู้เบื้องต้นว่าฐานข้อมูลคืออะไรและอินสแตนซ์ฐานข้อมูลคือ - แนวคิดที่สำคัญสองประการ

คุณสามารถสร้างฐานข้อมูลด้วยcreate databaseคำชี้แจงเมื่อคุณติดตั้งสแต็กซอฟต์แวร์ Oracle แล้ว แต่การใช้dbca(ผู้ช่วยสร้างฐานข้อมูล) นั้นง่ายต่อการเริ่มต้น


2

ตามวิธีการใช้คำศัพท์บางครั้ง a USERและ a SCHEMAค่อนข้างคล้ายกัน แต่ก็มีความแตกต่างที่สำคัญ USERสามารถเรียกได้ว่าSCHEMAหาก " USER" เจ้าของวัตถุใด ๆ มิฉะนั้นมันจะยังคงเป็น " USER" เมื่อUSERเป็นเจ้าของอย่างน้อยหนึ่งวัตถุแล้วโดยอาศัยอำนาจตามทุกคำจำกัดความข้างต้นที่ ... สามารถตอนนี้จะเรียกว่าUSERSCHEMA


ฉันคิดว่าสิ่งที่คุณกำลังชี้ให้เห็นคือคำว่า 'SCHEMA' มีหลายแง่มุม เป็นเนมสเปซสำหรับวัตถุฐานข้อมูลในมือเดียว นอกจากนี้ใน Oracle (และอื่น ๆ ?) แต่ไม่ใช่ PostgreSQL มันเป็นเนมสเปซออบเจกต์ฐานข้อมูลที่มีออบเจ็กต์ที่สร้างโดยผู้ใช้ที่แชร์ชื่อของสคีมาอย่างแม่นยำ จากมุมมองอื่นมันเป็นความสัมพันธ์และโครงสร้างของวัตถุในฐานข้อมูลมักจะมองข้ามทั้งความเป็นเจ้าของและเนมสเปซ
Andrew Wolfe

2

เพื่อเริ่มเข้าใจความแตกต่างฉันคิดว่าเราต้องเริ่มต้นพูดว่าระบบการตั้งชื่อนี้เป็นความผิดพลาดจาก Oracle

ฉันคิดว่าถ้าคุณมี ERP ชื่อ TRITON คุณต้องการให้ฐานข้อมูลของคุณชื่อ TRITON หรือถ้า บริษัท ของฉันชื่อ JENNY EXPORT ฉันอาจตัดสินใจว่าฐานข้อมูลของฉันจะเรียกว่า JENNYEXP หรืออะไรทำนองนั้นไม่จำเป็นสำหรับผู้ใช้ที่มีชื่อเดียวกัน .

ใน Oracle คุณต้องสร้างผู้ใช้ก่อนที่จะสร้างตารางและแปลกมากพอที่คอลเลกชันแท็บนี้เรียกว่า SCHEMA

จากนั้นคุณอาจสร้างผู้ใช้จริงและให้สิทธิ์ที่เหมาะสมในการทำงานกับฐานข้อมูลเช่น TRITON ตามตัวอย่างนี้อย่างไรก็ตามถ้าคุณเชื่อมต่อกับ SQL DEVELOPER คุณต้องตั้งชื่อการเชื่อมต่อ

ฉันรู้ว่าฉันรู้สึกหงุดหงิด แต่มันเหมาะสมกว่าสำหรับฉันในการตั้งชื่อแผนการประชุม MS SQL SERVER และฉันสามารถเพิ่มว่าฉันทำงานกับ Oracle ก่อนหน้า SQL Server


1

ฐานข้อมูล

ฐานข้อมูลคือชุดของข้อมูลที่จัดเก็บข้อมูลจริง มันเป็นองค์ประกอบหน่วยความจำกายภาพที่เชื่อมต่อกับคอมพิวเตอร์ที่ติดตั้งด้วยซอฟต์แวร์ DBMS เพื่อจัดการข้อมูลในหน่วยความจำนั้นคอมพิวเตอร์ที่ติดตั้งซอฟต์แวร์ dbms เรียกว่าเซิร์ฟเวอร์หรือเซิร์ฟเวอร์ฐานข้อมูลเซิร์ฟเวอร์ทั้งเซิร์ฟเวอร์ (คอมพิวเตอร์) และฐานข้อมูล (องค์ประกอบหน่วยความจำ) แตกต่างกัน เวลาส่วนใหญ่อ้างถึงเหมือนกันตามสถานการณ์

ผู้ใช้และ SCHEMA

คำทั้งผู้ใช้และสคีมานั้นใช้แทนกันได้นั่นคือสาเหตุที่คนส่วนใหญ่สับสนกับคำเหล่านี้

ผู้ใช้งาน

ผู้ใช้เป็นบัญชีเชื่อมต่อฐานข้อมูล (เซิร์ฟเวอร์) เราสามารถสร้างผู้ใช้โดยใช้ CREATE USER IDENTIFIED โดย

schema

จริงๆแล้วฐานข้อมูล Oracle มีโครงสร้างตรรกะและกายภาพในการประมวลผลข้อมูล โครงสร้างแบบแผนลอจิกยังเพื่อประมวลผลข้อมูลในฐานข้อมูล (ส่วนประกอบหน่วยความจำ) มันถูกสร้างขึ้นโดยอัตโนมัติโดย Oracle เมื่อผู้ใช้สร้าง มันมีวัตถุทั้งหมดที่สร้างขึ้นโดยผู้ใช้ที่เชื่อมโยงกับสคีมานั้นตัวอย่างเช่นถ้าฉันสร้างผู้ใช้ที่มีชื่อsanthoshออราเคิลจะสร้างสคีมาที่เรียกว่าsanthoshOracle จัดเก็บวัตถุทั้งหมดที่สร้างโดยผู้ใช้santhoshในsanthoshสคีมา

เราสามารถสร้างสคีมาโดยใช้CREATE SCHEMAคำสั่ง แต่ Oracle สร้างผู้ใช้สำหรับสคีมานั้นโดยอัตโนมัติ

เราสามารถวางสคีมาได้โดยใช้DROP SCHEMA <name> RESTRICTคำสั่ง แต่ไม่สามารถลบสคีมาที่มีวัตถุได้ดังนั้นหากต้องการวางสคีมามันจะต้องว่างเปล่า คำ จำกัด ที่นี่บังคับให้คุณระบุสคีมานั้นโดยไม่มีวัตถุ

หากเราพยายามที่จะวางผู้ใช้ที่มีวัตถุในสคีมาของเขาเราจะต้องระบุCASCADEคำเพราะ Oracle ไม่อนุญาตให้คุณลบผู้ใช้ที่มีวัตถุ

DROP USER <name> CASCADE

ดังนั้น Oracle จะลบวัตถุใน schema และจากนั้นผู้ใช้จะลดลงโดยอัตโนมัติวัตถุที่อ้างถึงวัตถุ schema เหล่านี้จาก schema อื่น ๆ เช่นมุมมองและคำพ้องความหมายส่วนตัวไปอยู่ในสถานะที่ไม่ถูกต้อง


-2

ฉันจะเพิ่มว่าคำสั่งข้างต้นนำไปใช้กับการใช้งานของ Oracle แต่ฐานข้อมูลอื่น ๆ รวมถึง SQL Server และ PostgreSQL ใช้ schema เป็นเพียง namespace เช่นวิธีการจัดกลุ่มวัตถุ ตัวอย่างเช่น Schema Staging สามารถจัดกลุ่มวัตถุทั้งหมดที่ใช้ในข้อมูลการจัดเตรียม Schema ทางบัญชีสามารถจัดกลุ่มวัตถุทั้งหมดที่เกี่ยวข้องกับการบัญชี


ไม่แน่ใจในสิ่งที่คุณอ้างถึงเมื่อคุณพูดว่า "statement ด้านบน" แต่ schema ใน SQL และ Oracle คือการจัดกลุ่มสิทธิ์ กล่าวอีกนัยหนึ่งมันไม่ใช่แค่วิธีจัดกลุ่มวัตถุเหมือนกัน แต่เป็นวิธีจัดกลุ่มวัตถุที่จะทำให้การจัดการสิทธิ์ง่ายขึ้นเนื่องจากคุณสามารถให้สิทธิ์กับสคีมาและหลีกเลี่ยงการให้สิทธิ์แต่ละออบเจ็กต์ภายในสคีมา
Thronk

-4

ผู้ใช้! = สคีมา, ผู้ใช้และสคีมาไม่เหมือนกัน แต่ใช้แทนกันได้


2
โปรดเพิ่มรายละเอียดเกี่ยวกับความแตกต่าง
Erik

-4

ฉันกำลังบอกคุณตามแนวคิดที่ไม่ได้ใช้ระบบการจัดการฐานข้อมูลทุกประเภทที่คุณใช้

แนวคิดฐานข้อมูลเป็นเพียงกองของข้อมูลส่วนใหญ่เกี่ยวข้องหรือไม่เกี่ยวข้องยกเลิกการจัดการข้อมูล

สคีมา: สคีมาหมายถึงการจัดโครงสร้างข้อมูลที่เกี่ยวข้อง / ไม่เกี่ยวข้องอย่างเป็นทางการเพื่อให้สามารถจัดการได้โดยระบบการจัดการบางระบบที่เข้าใจคำจำกัดความที่เป็นทางการของสคีมา สคีมานั้นเป็นแบบแผนในการให้ภาพรวม ตัวอย่างเช่นคุณมี XSD ซึ่งกำหนดสคีมาเพื่อสร้าง XML คุณมี RDBMS ซึ่งกำหนด schema ของตัวเองซึ่งเป็นไปตามกฎของ Coddซึ่งโดยทั่วไปจะกำหนดโครงร่างเพื่อสร้าง RDBMS

ตอนนี้ถ้าคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการอ้างอิงลิงค์นี้

ผู้ใช้ใช้ภาษาทางการที่ระบุโดยคีมาเพื่อเข้าถึงฐานข้อมูล

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