MongoDB - การสร้างแบบจำลองข้อมูล
ข้อมูลใน MongoDB มี schema.documents ที่ยืดหยุ่นในคอลเล็กชันเดียวกัน พวกเขาไม่จำเป็นต้องมีชุดของเขตข้อมูลหรือโครงสร้างเดียวกันฟิลด์ทั่วไปในเอกสารของคอลเลกชันอาจมีข้อมูลประเภทต่างๆ
การออกแบบโมเดลข้อมูล
MongoDB มีโมเดลข้อมูลสองประเภท: - โมเดลข้อมูลแบบฝังและแบบจำลองข้อมูลปกติ ตามข้อกำหนดคุณสามารถใช้แบบจำลองใดก็ได้ในขณะเตรียมเอกสารของคุณ
แบบจำลองข้อมูลที่ฝังตัว
ในโมเดลนี้คุณสามารถมี (ฝัง) ข้อมูลที่เกี่ยวข้องทั้งหมดในเอกสารเดียวซึ่งเรียกอีกอย่างว่าโมเดลข้อมูลที่ไม่ได้ทำให้เป็นมาตรฐาน
ตัวอย่างเช่นสมมติว่าเราได้รับรายละเอียดของพนักงานในเอกสารสามฉบับ ได้แก่ Personal_details ผู้ติดต่อและที่อยู่คุณสามารถฝังเอกสารทั้งสามไว้ในเอกสารเดียวดังที่แสดงด้านล่าง -
{
	_id: ,
	Emp_ID: "10025AE336"
	Personal_details:{
		First_Name: "Radhika",
		Last_Name: "Sharma",
		Date_Of_Birth: "1995-09-26"
	},
	Contact: {
		e-mail: "[email protected]",
		phone: "9848022338"
	},
	Address: {
		city: "Hyderabad",
		Area: "Madapur",
		State: "Telangana"
	}
}
 
แบบจำลองข้อมูลมาตรฐาน
ในรุ่นนี้คุณสามารถอ้างอิงเอกสารย่อยในเอกสารต้นฉบับโดยใช้การอ้างอิง ตัวอย่างเช่นคุณสามารถเขียนเอกสารด้านบนอีกครั้งในรูปแบบมาตรฐานเป็น:
Employee:
{
	_id: <ObjectId101>,
	Emp_ID: "10025AE336"
}
Personal_details:
{
	_id: <ObjectId102>,
	empDocID: " ObjectId101",
	First_Name: "Radhika",
	Last_Name: "Sharma",
	Date_Of_Birth: "1995-09-26"
}
Contact:
{
	_id: <ObjectId103>,
	empDocID: " ObjectId101",
	e-mail: "[email protected]",
	phone: "9848022338"
}
Address:
{
	_id: <ObjectId104>,
	empDocID: " ObjectId101",
	city: "Hyderabad",
	Area: "Madapur",
	State: "Telangana"
}
ข้อควรพิจารณาขณะออกแบบ Schema ใน MongoDB
ออกแบบสคีมาของคุณตามความต้องการของผู้ใช้
รวมวัตถุไว้ในเอกสารเดียวหากคุณจะใช้ร่วมกัน มิฉะนั้นให้แยกออก (แต่ตรวจสอบให้แน่ใจว่าไม่จำเป็นต้องมีการรวม)
ทำซ้ำข้อมูล (แต่มี จำกัด ) เนื่องจากพื้นที่ดิสก์มีราคาถูกเมื่อเทียบกับเวลาในการคำนวณ
เข้าร่วมขณะเขียนไม่ใช่อ่าน
เพิ่มประสิทธิภาพสคีมาของคุณสำหรับกรณีการใช้งานที่พบบ่อยที่สุด
ทำการรวมที่ซับซ้อนในสคีมา
ตัวอย่าง
สมมติว่าลูกค้าต้องการการออกแบบฐานข้อมูลสำหรับบล็อก / เว็บไซต์และดูความแตกต่างระหว่างการออกแบบสคีมา RDBMS และ MongoDB เว็บไซต์มีข้อกำหนดดังต่อไปนี้
ทุกโพสต์มีชื่อเรื่องคำอธิบายและ URL ที่ไม่ซ้ำกัน
ทุกโพสต์สามารถมีแท็กได้ตั้งแต่หนึ่งแท็ก
ทุกโพสต์มีชื่อผู้เผยแพร่และจำนวนการกดไลค์ทั้งหมด
ทุกโพสต์มีความคิดเห็นจากผู้ใช้พร้อมทั้งชื่อข้อความเวลาข้อมูลและไลค์
ในแต่ละโพสต์อาจมีความคิดเห็นเป็นศูนย์หรือมากกว่านั้นก็ได้
ใน RDBMS schema การออกแบบสำหรับข้อกำหนดข้างต้นจะมีตารางขั้นต่ำสามตาราง
                ในขณะที่อยู่ใน MongoDB schema การออกแบบจะมีโพสต์คอลเลกชันหนึ่งรายการและโครงสร้างต่อไปนี้ -
{
   _id: POST_ID
   title: TITLE_OF_POST, 
   description: POST_DESCRIPTION,
   by: POST_BY,
   url: URL_OF_POST,
   tags: [TAG1, TAG2, TAG3],
   likes: TOTAL_LIKES, 
   comments: [	
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES 
      },
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES
      }
   ]
}
ดังนั้นในขณะที่แสดงข้อมูลใน RDBMS คุณต้องเข้าร่วมสามตารางและใน MongoDB ข้อมูลจะแสดงจากคอลเล็กชันเดียวเท่านั้น