นี่อาจเป็นคำถาม n00blike (หรือแย่กว่านั้น) แต่ฉันดู schema เป็นคำจำกัดความของตารางในฐานข้อมูลเสมอ สิ่งนี้ผิดหรือไม่ถูกต้องทั้งหมด ฉันจำไม่ได้มากจากหลักสูตรฐานข้อมูลของฉัน
นี่อาจเป็นคำถาม n00blike (หรือแย่กว่านั้น) แต่ฉันดู schema เป็นคำจำกัดความของตารางในฐานข้อมูลเสมอ สิ่งนี้ผิดหรือไม่ถูกต้องทั้งหมด ฉันจำไม่ได้มากจากหลักสูตรฐานข้อมูลของฉัน
คำตอบ:
schema :ฐานข้อมูล:ตาราง::แผนผังชั้น:บ้าน:ห้อง
สคีความสัมพันธ์เป็นคำนิยามตรรกะของตาราง - มันกำหนดสิ่งที่ชื่อของตารางเป็นและสิ่งที่เป็นชื่อและประเภทของแต่ละคอลัมน์เป็น มันเหมือนแผนหรือพิมพ์เขียว คีมาฐานข้อมูลคือชุดของ schemas ความสัมพันธ์สำหรับฐานข้อมูลทั้งหมด
ตารางเป็นโครงสร้างที่มีพวงของแถว (aka "tuples") แต่ละแห่งที่มีแอตทริบิวต์ที่กำหนดโดยสคีมา ตารางอาจมีดัชนีอยู่ด้วยเพื่อช่วยในการค้นหาค่าในคอลัมน์บางคอลัมน์
ฐานข้อมูลเป็นอย่างเป็นทางการ, คอลเลกชันของข้อมูลใด ๆ ในบริบทนี้ฐานข้อมูลจะเป็นชุดของตาราง DBMS (ระบบการจัดการฐานข้อมูล) เป็นซอฟแวร์ (เช่น MySQL, SQL Server, Oracle, ฯลฯ ) ที่จัดการและทำงานฐานข้อมูล
โดยสรุป schema คือคำจำกัดความของฐานข้อมูลทั้งหมดดังนั้นจึงรวมถึงตารางมุมมองกระบวนงานที่เก็บไว้ดัชนีคีย์หลักและกุญแจต่างประเทศเป็นต้น
การโพสต์เฉพาะนี้แสดงให้เห็นว่าเกี่ยวข้องกับ Oracle เท่านั้นและคำจำกัดความของ Schema เปลี่ยนแปลงเมื่ออยู่ในบริบทของฐานข้อมูลอื่น
อาจเป็นสิ่งที่ค่อนข้างจะแค่ google ขึ้น แต่คำ FYI ดูเหมือนจะแตกต่างกันไปในคำจำกัดความของพวกเขาซึ่งเป็นสิ่งที่น่ารำคาญที่สุด :)
ใน Oracle ฐานข้อมูลเป็นฐานข้อมูล ในหัวของคุณคิดว่านี่เป็นไฟล์ข้อมูลและบันทึกการทำซ้ำและสถานะทางกายภาพที่แท้จริงบนดิสก์ของฐานข้อมูลเอง (เช่นไม่ใช่อินสแตนซ์)
สคีมาเป็นผู้ใช้ที่มีประสิทธิภาพ โดยเฉพาะอย่างยิ่งมันเป็นชุดของตาราง / procs / ดัชนี ฯลฯ เป็นเจ้าของโดยผู้ใช้ ผู้ใช้รายอื่นมีสคีมาที่แตกต่างกัน (ตารางที่เขา / เธอเป็นเจ้าของ) แต่ผู้ใช้ยังสามารถเห็นสกีมาใด ๆ ที่พวกเขาได้เลือกสิทธิ์ ดังนั้นฐานข้อมูลอาจประกอบด้วยสกีมาหลายร้อยรายการและแต่ละสคีมาหลายร้อยตาราง คุณสามารถมีตารางที่มีชื่อเดียวกันในสกีมาที่แตกต่างกันซึ่งอยู่ในฐานข้อมูลเดียวกัน
Table เป็นตารางชุดของแถวและคอลัมน์ที่มีข้อมูลและอยู่ใน schema
คำจำกัดความอาจแตกต่างกันใน SQL Server เป็นต้น ฉันไม่รู้เรื่องนี้
สคีมานั้นดูเหมือนว่าเป็นวัตถุแม่ตามที่เห็นใน OOP โลก ดังนั้นจึงไม่ใช่ฐานข้อมูล ลิงก์นี้อาจมีประโยชน์
แต่ใน MySQL ทั้งสองจะเท่ากัน DATABASE หรือ DATABASES คำหลักสามารถแทนที่ด้วย SCHEMA หรือ SCHEMAS ทุกที่ที่ปรากฏ ตัวอย่าง:
ข้อกำหนดของ SCHEMA & DATABASE นั้นขึ้นอยู่กับ DBMS
ตารางคือชุดขององค์ประกอบข้อมูล (ค่า) ที่จัดโดยใช้แบบจำลองของคอลัมน์แนวตั้ง (ซึ่งมีการระบุโดยชื่อของพวกเขา) และแถวแนวนอน ฐานข้อมูลมีมากกว่าหนึ่ง (ปกติ) ตาราง และคุณเก็บข้อมูลของคุณในตารางเหล่านี้ ตารางอาจเกี่ยวข้องกัน ( ดูที่นี่ )
เพิ่มเติมเกี่ยวกับ schemas:
ใน SQL 2005 schema เป็นวิธีการจัดกลุ่มวัตถุ มันเป็นภาชนะที่คุณใส่วัตถุเข้าไปได้ ผู้คนสามารถเป็นเจ้าของวัตถุนี้ได้ คุณสามารถให้สิทธิ์กับสคีมา
ในปี 2000 สคีมาเทียบเท่ากับผู้ใช้ ตอนนี้มันใช้งานไม่ได้และมีประโยชน์มาก คุณสามารถโยน procs ผู้ใช้ทั้งหมดของคุณในสคีมาที่แน่นอนและ procs ผู้ดูแลระบบของคุณในอีก มอบสิทธิในการดำเนินการให้กับผู้ใช้ / บทบาทที่เหมาะสมและคุณจะได้รับอนุญาตโดยดำเนินการตามขั้นตอนเฉพาะ ดี
เครื่องหมายจุดจะเป็นดังนี้:
Server.Database.Schema.Object
หรือ
myserver01.Adventureworks.Accounting.Beans
A Schema
คือชุดของวัตถุฐานข้อมูลซึ่งรวมถึงโครงสร้างตรรกะเช่นกัน มันมีชื่อของผู้ใช้ที่เป็นเจ้าของมัน A database
สามารถมี Schema จำนวนเท่าใดก็ได้ หนึ่งตารางจากฐานข้อมูลสามารถปรากฏในสกีมาที่ต่างกันสองชื่อที่มีชื่อเดียวกัน ผู้ใช้สามารถดูสคีมาใด ๆ ที่พวกเขาได้รับการกำหนดสิทธิ์การเลือก
ในฐานะที่เป็น MusiGenesis วางไว้อย่างดีในฐานข้อมูลส่วนใหญ่:
schema: ฐานข้อมูล: ตาราง :: แผนผังชั้น: บ้าน: ห้อง
แต่ใน Oracle อาจคิดง่ายกว่า:
schema: ฐานข้อมูล: ตาราง :: เจ้าของ: บ้าน: ห้อง
ตรงกันข้ามกับคำตอบบางข้อข้างต้นนี่คือความเข้าใจของฉันจากประสบการณ์ที่ได้รับกับแต่ละคน:
database/schema :: table
database :: (schema/namespace ::) table
database/schema/user :: (tablespace ::) table
โปรดแก้ไขให้ฉันด้วยว่า tablespace เป็นทางเลือกหรือไม่ใช้กับ Oracle เป็นเวลานานแล้วที่ฉันจำได้ว่าใช้มัน
ใน oracle Schema เป็นผู้ใช้หนึ่งรายภายใต้ฐานข้อมูลเดียวตัวอย่างเช่น scott คือหนึ่ง schema ในฐานข้อมูล orcl ในฐานข้อมูลเดียวเราอาจมี schema ที่คล้ายกันจำนวนมาก
ฐานข้อมูลมีสกีมาที่มีชื่อหนึ่งรายการขึ้นไปซึ่งในทางกลับกันจะมีตาราง Schemas ยังมีวัตถุที่มีชื่อชนิดอื่นรวมถึงชนิดข้อมูลฟังก์ชันและตัวดำเนินการ ชื่อวัตถุเดียวกันสามารถใช้ในสกีมาที่แตกต่างกันโดยไม่มีข้อขัดแย้ง ตัวอย่างเช่น schema1 และ myschema สามารถมีตารางชื่อ mytable ซึ่งแตกต่างจากฐานข้อมูล schema ที่ไม่ได้แยกออกจากกันอย่างเข้มงวด: ผู้ใช้สามารถเข้าถึงวัตถุใน schemas ใด ๆ ในฐานข้อมูลที่เขาเชื่อมต่อกับถ้าเขามีสิทธิ์ที่จะทำเช่นนั้น
มีสาเหตุหลายประการที่อาจต้องการใช้สคีมา:
เพื่อให้ผู้ใช้หลายคนใช้ฐานข้อมูลเดียวโดยไม่รบกวนซึ่งกันและกัน
เพื่อจัดระเบียบวัตถุฐานข้อมูลเป็นกลุ่มตรรกะเพื่อให้จัดการได้ง่ายขึ้น
แอปพลิเคชันของบุคคลที่สามสามารถใส่ลงในสคีมาแยกต่างหากเพื่อไม่ให้ชนกับชื่อของวัตถุอื่น
Schemas นั้นคล้ายคลึงกับไดเรกทอรีที่ระดับระบบปฏิบัติการยกเว้นว่า schemas นั้นไม่สามารถซ้อนกันได้
สามารถส่งเอกสารทางการได้ที่ https://www.postgresql.org/docs/9.1/ddl-schemas.html
Schemas มีฐานข้อมูล
ฐานข้อมูลเป็นส่วนหนึ่งของสคีมา
สกีมา> ฐานข้อมูล
Schemas มีมุมมอง, กระบวนงานที่เก็บไว้, ฐานข้อมูล, ทริกเกอร์ (s) เป็นต้น
สคีมาไม่ใช่แผนสำหรับฐานข้อมูลทั้งหมด มันเป็นแผน / ภาชนะสำหรับชุดย่อยของวัตถุ (ex.tables) ภายในฐานข้อมูล aa
นี่เป็นการบอกว่าคุณสามารถมีหลายวัตถุ (เช่นตาราง) ในฐานข้อมูลเดียวซึ่งไม่จำเป็นต้องตกอยู่ภายใต้หมวดหมู่การทำงานเดียวกัน ดังนั้นคุณสามารถจัดกลุ่มพวกเขาภายใต้สคีมาต่างๆและให้สิทธิ์การเข้าถึงแก่ผู้ใช้ที่แตกต่างกัน
ที่กล่าวว่าฉันไม่แน่ใจว่าคุณสามารถมีหนึ่งตารางภายใต้ schema หลาย ๆ Management Studio UI ให้ดรอปดาวน์เพื่อกำหนดสกีมาให้กับตารางและด้วยเหตุนี้จึงเป็นไปได้ที่จะเลือกสกีมาเดียวเท่านั้น ฉันเดาว่าถ้าคุณทำกับ TSQL มันอาจสร้างวัตถุที่แตกต่างกัน 2 (หรือหลายรายการ) ด้วยรหัสวัตถุที่แตกต่างกัน
สคีมาฐานข้อมูลเป็นวิธีการจัดกลุ่มวัตถุแบบลอจิคัลเช่นตารางมุมมองกระบวนงานที่เก็บไว้เป็นต้นคิดว่าสคีมาเป็นที่เก็บวัตถุ และตารางเป็นชุดของแถวและคอลัมน์ การรวมกันของตารางทั้งหมดทำให้ db