ความแตกต่างระหว่างสคีมาและตารางและฐานข้อมูลคืออะไร?


155

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


3
ใน oracle schema ถูกอ้างถึงกับผู้ใช้ นั่นคือเมื่อเราสร้างผู้ใช้สคีมาจะถูกสร้างขึ้นในขณะนี้เราสามารถเพิ่มตารางมุมมองดัชนีแพคเกจ ฯลฯ เป็น
Ali786

คำตอบ:


242

schema :ฐานข้อมูล:ตาราง::แผนผังชั้น:บ้าน:ห้อง


81
เป็นความลับเล็กน้อย แต่ไม่ผิด แต่คุณคิดว่า n00b ที่อ้างตัวเองจะเข้าใจหรือไม่?
Stein G. Strindhaug

6
การเปรียบเทียบที่ดี ฉันจะเปลี่ยน "แผนผังชั้น" เป็น "ภาพพิมพ์สีน้ำเงิน" เพราะสคีมามีมากกว่าเพียงตารางและภาพพิมพ์สีฟ้าประกอบด้วยสายไฟและความร้อนและระบบประปา
พอลทอมบลิน

4
"Schema" หมายถึง "แผน" จริงๆ ฉันเคยเห็นมันใช้อ้างถึงฐานข้อมูลทั้งหมดหรือเพียงแค่หนึ่งตารางหรือมุมมอง
MusiGenesis

@ พอล: จุดที่ดี ฉันเขียน "พิมพ์เขียว" แต่แรกเปลี่ยนเพราะมันไม่ได้หมายถึง "บ้าน" จริงๆ (อย่างน้อยก็ไม่ใช่สำหรับฉัน)
MusiGenesis

4
ใช่ฉันมักจะดูสคีมาเป็นผู้ใช้ใน Oracle ดังนั้นคำจำกัดความจึงแตกต่างจาก db เป็น db: D ช่างน่ารำคาญ
Robert

123

สคีความสัมพันธ์เป็นคำนิยามตรรกะของตาราง - มันกำหนดสิ่งที่ชื่อของตารางเป็นและสิ่งที่เป็นชื่อและประเภทของแต่ละคอลัมน์เป็น มันเหมือนแผนหรือพิมพ์เขียว คีมาฐานข้อมูลคือชุดของ schemas ความสัมพันธ์สำหรับฐานข้อมูลทั้งหมด

ตารางเป็นโครงสร้างที่มีพวงของแถว (aka "tuples") แต่ละแห่งที่มีแอตทริบิวต์ที่กำหนดโดยสคีมา ตารางอาจมีดัชนีอยู่ด้วยเพื่อช่วยในการค้นหาค่าในคอลัมน์บางคอลัมน์

ฐานข้อมูลเป็นอย่างเป็นทางการ, คอลเลกชันของข้อมูลใด ๆ ในบริบทนี้ฐานข้อมูลจะเป็นชุดของตาราง DBMS (ระบบการจัดการฐานข้อมูล) เป็นซอฟแวร์ (เช่น MySQL, SQL Server, Oracle, ฯลฯ ) ที่จัดการและทำงานฐานข้อมูล


1
สคีมาฐานข้อมูลยังมีดัชนีมุมมองและอื่น ๆ อีกด้วย
Paul Tomblin

1
แน่นอนว่ามันไม่ถูกต้อง ฐานข้อมูลไม่ใช่ชุดของตารางเช่นนี้ คุณสามารถมีฐานข้อมูลได้ 30 ฐานโดยไม่มีโต๊ะตัวอย่าง
Robert

@ Robert - จุดที่มีฐานข้อมูลโดยไม่มีตารางใด ๆ ในนั้นคืออะไร?
พอลทอมบลิน

16
แม้ว่าคุณจะไม่มีตารางใด ๆ ก็ตามนั่นก็คือชุดของตาราง - เป็นชุดของตารางที่ว่างเปล่า
Jon Skeet

1
@Ian: อย่าลืมว่าฐานข้อมูลจะมีข้อ จำกัด เช่นกัน - ข้อ จำกัด ในการอ้างอิง (คีย์หลัก, คีย์ต่างประเทศ), ข้อ จำกัด ที่เป็นเอกลักษณ์และตรวจสอบข้อ จำกัด มันอาจรวมถึงทริกเกอร์และขั้นตอน
Jonathan Leffler

16

โดยสรุป schema คือคำจำกัดความของฐานข้อมูลทั้งหมดดังนั้นจึงรวมถึงตารางมุมมองกระบวนงานที่เก็บไว้ดัชนีคีย์หลักและกุญแจต่างประเทศเป็นต้น


12

การโพสต์เฉพาะนี้แสดงให้เห็นว่าเกี่ยวข้องกับ Oracle เท่านั้นและคำจำกัดความของ Schema เปลี่ยนแปลงเมื่ออยู่ในบริบทของฐานข้อมูลอื่น

อาจเป็นสิ่งที่ค่อนข้างจะแค่ google ขึ้น แต่คำ FYI ดูเหมือนจะแตกต่างกันไปในคำจำกัดความของพวกเขาซึ่งเป็นสิ่งที่น่ารำคาญที่สุด :)

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

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

Table เป็นตารางชุดของแถวและคอลัมน์ที่มีข้อมูลและอยู่ใน schema

คำจำกัดความอาจแตกต่างกันใน SQL Server เป็นต้น ฉันไม่รู้เรื่องนี้


11

สคีมานั้นดูเหมือนว่าเป็นวัตถุแม่ตามที่เห็นใน OOP โลก ดังนั้นจึงไม่ใช่ฐานข้อมูล ลิงก์นี้อาจมีประโยชน์

แต่ใน MySQL ทั้งสองจะเท่ากัน DATABASE หรือ DATABASES คำหลักสามารถแทนที่ด้วย SCHEMA หรือ SCHEMAS ทุกที่ที่ปรากฏ ตัวอย่าง:

  • สร้างฐานข้อมูล <=> สร้าง SCHEMA
  • แสดงฐานข้อมูล <=> แผนที่แสดง

เอกสารของ MySQL

ข้อกำหนดของ SCHEMA & DATABASE นั้นขึ้นอยู่กับ DBMS

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


คำตอบที่มีค่า
sofs1

2

เพิ่มเติมเกี่ยวกับ schemas:

ใน SQL 2005 schema เป็นวิธีการจัดกลุ่มวัตถุ มันเป็นภาชนะที่คุณใส่วัตถุเข้าไปได้ ผู้คนสามารถเป็นเจ้าของวัตถุนี้ได้ คุณสามารถให้สิทธิ์กับสคีมา

ในปี 2000 สคีมาเทียบเท่ากับผู้ใช้ ตอนนี้มันใช้งานไม่ได้และมีประโยชน์มาก คุณสามารถโยน procs ผู้ใช้ทั้งหมดของคุณในสคีมาที่แน่นอนและ procs ผู้ดูแลระบบของคุณในอีก มอบสิทธิในการดำเนินการให้กับผู้ใช้ / บทบาทที่เหมาะสมและคุณจะได้รับอนุญาตโดยดำเนินการตามขั้นตอนเฉพาะ ดี

เครื่องหมายจุดจะเป็นดังนี้:

Server.Database.Schema.Object

หรือ

myserver01.Adventureworks.Accounting.Beans


2

A Schemaคือชุดของวัตถุฐานข้อมูลซึ่งรวมถึงโครงสร้างตรรกะเช่นกัน มันมีชื่อของผู้ใช้ที่เป็นเจ้าของมัน A databaseสามารถมี Schema จำนวนเท่าใดก็ได้ หนึ่งตารางจากฐานข้อมูลสามารถปรากฏในสกีมาที่ต่างกันสองชื่อที่มีชื่อเดียวกัน ผู้ใช้สามารถดูสคีมาใด ๆ ที่พวกเขาได้รับการกำหนดสิทธิ์การเลือก


2

ในฐานะที่เป็น MusiGenesis วางไว้อย่างดีในฐานข้อมูลส่วนใหญ่:

schema: ฐานข้อมูล: ตาราง :: แผนผังชั้น: บ้าน: ห้อง

แต่ใน Oracle อาจคิดง่ายกว่า:

schema: ฐานข้อมูล: ตาราง :: เจ้าของ: บ้าน: ห้อง


2

ตรงกันข้ามกับคำตอบบางข้อข้างต้นนี่คือความเข้าใจของฉันจากประสบการณ์ที่ได้รับกับแต่ละคน:

  • MySQL: database/schema :: table
  • เซิร์ฟเวอร์ SQL: database :: (schema/namespace ::) table
  • ออราเคิล: database/schema/user :: (tablespace ::) table

โปรดแก้ไขให้ฉันด้วยว่า tablespace เป็นทางเลือกหรือไม่ใช้กับ Oracle เป็นเวลานานแล้วที่ฉันจำได้ว่าใช้มัน


1

ใน oracle Schema เป็นผู้ใช้หนึ่งรายภายใต้ฐานข้อมูลเดียวตัวอย่างเช่น scott คือหนึ่ง schema ในฐานข้อมูล orcl ในฐานข้อมูลเดียวเราอาจมี schema ที่คล้ายกันจำนวนมาก


1

ฐานข้อมูลมีสกีมาที่มีชื่อหนึ่งรายการขึ้นไปซึ่งในทางกลับกันจะมีตาราง Schemas ยังมีวัตถุที่มีชื่อชนิดอื่นรวมถึงชนิดข้อมูลฟังก์ชันและตัวดำเนินการ ชื่อวัตถุเดียวกันสามารถใช้ในสกีมาที่แตกต่างกันโดยไม่มีข้อขัดแย้ง ตัวอย่างเช่น schema1 และ myschema สามารถมีตารางชื่อ mytable ซึ่งแตกต่างจากฐานข้อมูล schema ที่ไม่ได้แยกออกจากกันอย่างเข้มงวด: ผู้ใช้สามารถเข้าถึงวัตถุใน schemas ใด ๆ ในฐานข้อมูลที่เขาเชื่อมต่อกับถ้าเขามีสิทธิ์ที่จะทำเช่นนั้น

มีสาเหตุหลายประการที่อาจต้องการใช้สคีมา:

เพื่อให้ผู้ใช้หลายคนใช้ฐานข้อมูลเดียวโดยไม่รบกวนซึ่งกันและกัน

เพื่อจัดระเบียบวัตถุฐานข้อมูลเป็นกลุ่มตรรกะเพื่อให้จัดการได้ง่ายขึ้น

แอปพลิเคชันของบุคคลที่สามสามารถใส่ลงในสคีมาแยกต่างหากเพื่อไม่ให้ชนกับชื่อของวัตถุอื่น

Schemas นั้นคล้ายคลึงกับไดเรกทอรีที่ระดับระบบปฏิบัติการยกเว้นว่า schemas นั้นไม่สามารถซ้อนกันได้

สามารถส่งเอกสารทางการได้ที่ https://www.postgresql.org/docs/9.1/ddl-schemas.html


0

Schemas มีฐานข้อมูล

ฐานข้อมูลเป็นส่วนหนึ่งของสคีมา

สกีมา> ฐานข้อมูล

Schemas มีมุมมอง, กระบวนงานที่เก็บไว้, ฐานข้อมูล, ทริกเกอร์ (s) เป็นต้น


0

สคีมาไม่ใช่แผนสำหรับฐานข้อมูลทั้งหมด มันเป็นแผน / ภาชนะสำหรับชุดย่อยของวัตถุ (ex.tables) ภายในฐานข้อมูล aa

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

ที่กล่าวว่าฉันไม่แน่ใจว่าคุณสามารถมีหนึ่งตารางภายใต้ schema หลาย ๆ Management Studio UI ให้ดรอปดาวน์เพื่อกำหนดสกีมาให้กับตารางและด้วยเหตุนี้จึงเป็นไปได้ที่จะเลือกสกีมาเดียวเท่านั้น ฉันเดาว่าถ้าคุณทำกับ TSQL มันอาจสร้างวัตถุที่แตกต่างกัน 2 (หรือหลายรายการ) ด้วยรหัสวัตถุที่แตกต่างกัน


0

สคีมาฐานข้อมูลเป็นวิธีการจัดกลุ่มวัตถุแบบลอจิคัลเช่นตารางมุมมองกระบวนงานที่เก็บไว้เป็นต้นคิดว่าสคีมาเป็นที่เก็บวัตถุ และตารางเป็นชุดของแถวและคอลัมน์ การรวมกันของตารางทั้งหมดทำให้ db


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