ทฤษฎีฐานข้อมูลเชิงสัมพันธ์ ทฤษฎีฐานข้อมูลเชิงสัมพันธ์: การทำให้เป็นมาตรฐาน ความสัมพันธ์ และการรวม กระทรวงศึกษาธิการและวิทยาศาสตร์แห่งสหพันธรัฐรัสเซีย
คำอธิบายประกอบ: การบรรยายครั้งนี้และครั้งต่อไปจะเน้นไปที่ทฤษฎีฐานข้อมูลเชิงสัมพันธ์ เนื่องจากแนวทางเชิงสัมพันธ์ทั้งหมดในการจัดระเบียบฐานข้อมูลเป็นเชิงปฏิบัติอย่างแท้จริง ทฤษฎีนี้จึงเป็นเชิงปฏิบัติเป็นหลัก ปัญหาหลักที่ทฤษฎีฐานข้อมูลเชิงสัมพันธ์มุ่งหวังที่จะแก้ไขคือ การค้นหาคุณสมบัติที่เป็นประโยชน์ของโครงร่างฐานข้อมูลบางอย่าง และพัฒนาวิธีสร้างโครงร่างดังกล่าว ปัญหานี้มักเรียกสั้น ๆ ว่าปัญหาการออกแบบฐานข้อมูลเชิงสัมพันธ์
การแนะนำ
แม้จะมีแนวทางการปฏิบัติ ทฤษฎีฐานข้อมูลเชิงสัมพันธ์เป็นสาขาวิทยาศาสตร์อิสระที่นักวิจัยชื่อดังหลายคนเคยทำงาน (และทำงานต่อไป) ซึ่งมีชื่อปรากฏในการบรรยายของเรา เราไม่ได้วางแผนที่จะอธิบายรายละเอียดผลลัพธ์หลักในสาขานี้ในหลักสูตรนี้ เป้าหมายของเราคือการให้เฉพาะคำจำกัดความและข้อความที่จำเป็นสำหรับความเข้าใจทั่วไปของกระบวนการ การออกแบบฐานข้อมูลเชิงสัมพันธ์ขึ้นอยู่กับการทำให้เป็นมาตรฐาน
เนื่องจากคุณสมบัติที่สำคัญที่สุดของฐานข้อมูลเชิงสัมพันธ์จากมุมมองเชิงปฏิบัตินั้นขึ้นอยู่กับแนวคิด การพึ่งพาการทำงานเราได้รวมการอภิปรายสั้น ๆ เกี่ยวกับประเด็นทางทฤษฎีที่เกี่ยวข้องไว้ในการบรรยายแยกต่างหาก ท่ามกลางคำถามเหล่านี้ การปิดตัว และ ครอบคลุมชุดการขึ้นต่อกันของฟังก์ชัน, สัจพจน์ของอาร์มสตรองและทฤษฎีบทของเฮลธ์เกี่ยวกับเงื่อนไขที่เพียงพอ การสลายความสัมพันธ์ที่ไม่สูญเสีย. แนวคิดและข้อความของการบรรยายนี้จำเป็นจริงๆ สำหรับการเรียนรู้เนื้อหาในการบรรยายที่ 7 แต่เรายังพยายามแสดงให้ผู้อ่านเห็นด้วยตัวอย่างง่ายๆ ว่าคืออะไร ทฤษฎีฐานข้อมูลเชิงสัมพันธ์ระดับความซับซ้อนและสัญชาตญาณของมันคืออะไร
โปรดทราบว่าเราไม่ได้แยกเนื้อหาทางทฤษฎีที่เกี่ยวข้องกัน การพึ่งพาหลายค่าและ การพึ่งพาการเชื่อมต่อ. สิ่งนี้เกิดขึ้นด้วยเหตุผลสองประการ ประการแรก การขึ้นต่อกันประเภทนี้พบได้น้อยในการสร้างแบบจำลอง สาขาวิชาการใช้ฐานข้อมูล ดังนั้นเราจึงถือว่าเพียงพอที่จะนำเสนอเฉพาะเนื้อหาทางทฤษฎีที่เกี่ยวข้องในการบรรยายครั้งที่ 8 เท่านั้น ประการที่สองแม้ว่าทฤษฎี การพึ่งพาหลายค่าและ การพึ่งพาการเชื่อมต่อที่จริงแล้วไม่ได้ซับซ้อนกว่าทฤษฎีมากนัก การพึ่งพาการทำงานคำจำกัดความและข้อความของหลักสูตรนี้ยุ่งยากเกินไปสำหรับหลักสูตรนี้
การพึ่งพาการทำงาน
ที่สำคัญที่สุดจากมุมมองเชิงปฏิบัติ ความสัมพันธ์ในรูปแบบปกติมีพื้นฐานอยู่บนพื้นฐาน ทฤษฎีฐานข้อมูลเชิงสัมพันธ์แนวคิด การพึ่งพาการทำงาน. สำหรับการนำเสนอเพิ่มเติม เราจำเป็นต้องมีคำจำกัดความและข้อความหลายประการ (เราจะอธิบายและแสดงตัวอย่างในขณะที่เราดำเนินการ)
คำจำกัดความทั่วไป
ให้มันได้รับ ตัวแปรความสัมพันธ์ r และ X และ Y เป็นชุดย่อยของส่วนหัว r (แอตทริบิวต์ "คอมโพสิต") โดยพลการ
ในความหมาย ตัวแปรความสัมพันธ์ร แอ็ตทริบิวต์ Y ขึ้นอยู่กับฟังก์ชันแอ็ตทริบิวต์ Xถ้าหากว่าแต่ละค่าของ X สอดคล้องกับค่า Y หนึ่งค่าเท่านั้น ในกรณีนี้มีการกล่าวด้วยว่าแอตทริบิวต์ X กำหนดตามหน้าที่คุณลักษณะ Y (X เป็นตัวกำหนด ( ปัจจัยกำหนด) สำหรับ Y และ Y ขึ้นอยู่กับ X) เราจะแสดงว่าสิ่งนี้เป็น r.X->r.Y
ตัวอย่างเช่น เราจะใช้ความสัมพันธ์ EMPLOYEE_PROJECTS (SLUN_NAME, SLU_NAME, SLU_ZARP, PRO_NOM, PROJECT_RUK)(รูปที่ 6.1) แน่นอนว่าถ้า SLU_NOM เป็น คีย์หลักของความสัมพันธ์พนักงาน ดังนั้นสำหรับความสัมพันธ์นี้ถือว่ายุติธรรม การพึ่งพาการทำงาน (FD) SLN_NAME->SERV_NAME
แท้จริงแล้วสำหรับเนื้อความของความสัมพันธ์นั้น พนักงาน_โครงการในรูปแบบดังแสดงในรูปที่. 6.1 FD ต่อไปนี้ (1) จะถูกดำเนินการด้วย:
ข้าว. 6.1.
SLUN_NOM->SLUN_NAME SLUN_NOM->SLUN_ZARP SLU_NOM->PRO_NOM SLUN_NOM->PROJECT_RUK (SLUN_NAME, SLU_NAME)->SLUN_ZARP (SLUN_NAME, SLUN_NAME)->PRO_NOM (SLUN_NOM, SLUN_NAME)->(SLUN_ZARP, PRO_NAME) … PRO_NOM ->PROJECT_RUK และ ฯลฯ
เนื่องจากชื่อของพนักงานทุกคนแตกต่างกัน FD ต่อไปนี้ (2) จึงได้รับการตอบสนองเช่นกัน:
SERV_NAME->SERV_NAME SERV_NAME->SLU_ZARP SER_NAME->PRO_NAME ฯลฯ
นอกจากนี้ สำหรับตัวอย่างในรูป 6.1 เป็นที่พอใจและ FD (3):
SLU_ZARP->PRO_NOM
อย่างไรก็ตาม โปรดทราบว่าธรรมชาติของกลุ่ม FD (1) แตกต่างจากธรรมชาติของกลุ่ม FD (2) และ (3) มีเหตุผลที่จะถือว่าหมายเลขประจำตัวพนักงานควรแตกต่างกันเสมอ และแต่ละโครงการมีผู้จัดการเพียงคนเดียว ดังนั้น FD ของกลุ่ม (1) จะต้องเป็นจริงสำหรับค่าที่ถูกต้องใดๆ ตัวแปรความสัมพันธ์ พนักงาน_โครงการและถือได้ว่าเป็น ค่าคงที่, หรือ ข้อจำกัดด้านความสมบูรณ์นี้ ตัวแปรความสัมพันธ์.
FD ของกลุ่ม (2) ตั้งอยู่บนสมมติฐานที่เป็นธรรมชาติน้อยกว่าที่ว่าพนักงานทุกคนมีชื่อที่แตกต่างกัน สิ่งนี้เป็นจริงสำหรับตัวอย่างในรูป 6.1 แต่เป็นไปได้ว่าเมื่อเวลาผ่านไป กลุ่ม FD (2) จะไม่พอใจกับค่าใดๆ ตัวแปรความสัมพันธ์ พนักงาน_โครงการ.
สุดท้ายนี้ FD ของกลุ่ม (3) ตั้งอยู่บนสมมติฐานที่ผิดธรรมชาติอย่างยิ่งว่าไม่มีพนักงานสองคนที่เกี่ยวข้องกับโครงการที่แตกต่างกันได้รับเงินเดือนเท่ากัน ขอย้ำอีกครั้งว่าสมมติฐานนี้เป็นจริงสำหรับตัวอย่างในรูปที่ 1 6.1 แต่เป็นไปได้มากว่านี่เป็นเรื่องบังเอิญ
ในอนาคตเราจะสนใจเฉพาะสิ่งเหล่านั้นเท่านั้น การพึ่งพาการทำงานซึ่งจะต้องเป็นไปตามค่าที่เป็นไปได้ทั้งหมด ตัวแปรความสัมพันธ์.
โปรดทราบว่าหากคุณลักษณะ A ของความสัมพันธ์ r เป็นคีย์ที่เป็นไปได้ ดังนั้นสำหรับคุณลักษณะ B ใดๆ ของความสัมพันธ์นี้ก็จะคงไว้เสมอ
การเขียนโปรแกรมในสภาพแวดล้อม DELPHI 6
ฐานข้อมูล สร้างรายงานโดยใช้ Word
ได้รับการอนุมัติจากสภาบรรณาธิการและสำนักพิมพ์
มหาวิทยาลัยเป็นห้องปฏิบัติการเชิงปฏิบัติการ
โวโรเนซ 2004
ยูดีซี 681.3
Vorobyov E.I., Korotkevich D.E.. การเขียนโปรแกรมในสภาพแวดล้อม Delphi 6: การประชุมเชิงปฏิบัติการในห้องปฏิบัติการ: ตอนที่ 2: ฐานข้อมูล สร้างรายงานโดยใช้ Word สตรีม โวโรเนจ: โวโรเนจ. สถานะ เทคโนโลยี ม., 2547. 107 น.
ส่วนที่สองของเวิร์กช็อปในห้องปฏิบัติการจะอภิปรายข้อมูลทางทฤษฎีและการปฏิบัติสำหรับการเขียนโปรแกรมในสภาพแวดล้อม Delphi 6 ในหัวข้อ: “การออกแบบฐานข้อมูล การสร้างรายงานใน Word และการใช้เธรดเมื่อสร้างแอปพลิเคชันที่มีประสิทธิภาพสูง”
สิ่งพิมพ์นี้เป็นไปตามข้อกำหนดของมาตรฐานการศึกษาของรัฐสำหรับการศึกษาวิชาชีพขั้นสูงในทิศทาง 230100 "สารสนเทศและวิทยาการคอมพิวเตอร์", พิเศษ 230104 "ระบบการออกแบบโดยใช้คอมพิวเตอร์ช่วย", ระเบียบวินัย "การเขียนโปรแกรมในภาษาระดับสูง"
โต๊ะ 3. อิลลินอยส์ 19. บรรณานุกรม : 7 ชื่อเรื่อง.
บรรณาธิการด้านวิทยาศาสตร์: ดร.เทค วิทยาศาสตร์ศ. เย้.. ลโววิช
ผู้ตรวจสอบ: ภาควิชาวิทยาการคอมพิวเตอร์, Voronezh Forestry Academy (หัวหน้าภาควิชา, วิทยาศาสตรดุษฎีบัณฑิต, ศาสตราจารย์ V.E. Mezhov);
ดร.เทค วิทยาศาสตร์ศ. โอ.ยู.มาคารอฟ
© Vorobyov E.I. , Korotkevich D.E. , 2004
© การออกแบบ รัฐโวโรเนซ
มหาวิทยาลัยเทคนิค พ.ศ. 2547
การแนะนำ
แนวคิดของฐานข้อมูล
ฐานข้อมูลถือเป็นข้อได้เปรียบหลักของ Delphi แม้แต่ภาษาเฉพาะสำหรับการทำงานกับฐานข้อมูล (เช่น MS Visual FoxPro) ก็ยังด้อยกว่าอย่างชัดเจนในแง่ของความเรียบง่ายและพลังในการเขียนโปรแกรมสำหรับแอปพลิเคชันประเภทนี้ เดลฟีซ่อนความซับซ้อนทั้งหมดและในขณะเดียวกันก็ให้พลังที่ยิ่งใหญ่ที่สุด ไม่เคยมีงานใดที่ไม่สามารถดำเนินการได้ใน Delphi ในช่วงเวลาอันสั้น และสิ่งสำคัญคือทั้งหมดนี้ถูกนำไปใช้อย่างสะดวกและเข้าใจง่าย ใน Delphi คุณสามารถสร้างแอปพลิเคชั่นง่ายๆ ได้ แม้จะมีฐานข้อมูลที่ซับซ้อน โดยไม่ต้องใช้โค้ดแม้แต่บรรทัดเดียว บทช่วยสอนนี้ครอบคลุมถึงงานในห้องปฏิบัติการสำหรับการเรียนรู้เทคนิคการทำงานกับฐานข้อมูลท้องถิ่น
ทฤษฎีฐานข้อมูลเชิงสัมพันธ์
เมื่อสิบปีที่แล้ว การเขียนโปรแกรมฐานข้อมูลเป็นงานที่ยากมาก ในปัจจุบันนี้เป็นเรื่องยากที่จะจินตนาการได้ เพราะต้องขอบคุณ Delphi ที่ทำให้กระบวนการเขียนโปรแกรมง่ายขึ้น และจำนวนฐานข้อมูลก็มีมากมายอยู่แล้ว
ฐานข้อมูลแบ่งออกเป็นท้องถิ่น (ติดตั้งบนคอมพิวเตอร์ไคลเอนต์ที่โปรแกรมทำงาน) และระยะไกล (ติดตั้งบนเซิร์ฟเวอร์คอมพิวเตอร์ระยะไกล) ฐานข้อมูลเซิร์ฟเวอร์ตั้งอยู่บนคอมพิวเตอร์ระยะไกลและทำงานภายใต้การควบคุมของซอฟต์แวร์เซิร์ฟเวอร์ ข้อได้เปรียบหลัก ได้แก่ ความสามารถในการทำงานกับฐานข้อมูลเดียวพร้อมกันโดยผู้ใช้หลายคน และในเวลาเดียวกันก็มีภาระบนเครือข่ายน้อยที่สุด นอกจากนี้ยังมีฐานข้อมูลเครือข่ายที่สร้างภาระบนเครือข่ายมากเกินไปและไม่สะดวกต่อการใช้งานสำหรับทั้งโปรแกรมเมอร์และผู้ใช้ปลายทาง เมื่อโปรแกรมเชื่อมต่อกับฐานข้อมูลเครือข่าย โปรแกรมจะดาวน์โหลดสำเนาที่เกือบสมบูรณ์จากเซิร์ฟเวอร์ หากคุณทำการเปลี่ยนแปลง สำเนาของคุณจะถูกดาวน์โหลดกลับโดยสมบูรณ์ สิ่งนี้ไม่สะดวกมากเนื่องจากจะสร้างโหลดจำนวนมากบนเครือข่ายเนื่องจากมีการถ่ายโอนข้อมูลมากเกินไป ในเทคโนโลยีไคลเอ็นต์-เซิร์ฟเวอร์ โปรแกรมไคลเอ็นต์จะส่งคำขอข้อความธรรมดาไปยังเซิร์ฟเวอร์เพื่อรับข้อมูลบางส่วน เซิร์ฟเวอร์ประมวลผลและส่งคืนเฉพาะส่วนข้อมูลที่ต้องการเท่านั้น เมื่อคุณต้องการเปลี่ยนแปลงข้อมูลบางอย่าง คำขอจะถูกส่งไปยังเซิร์ฟเวอร์อีกครั้งเพื่อเปลี่ยนแปลง และเซิร์ฟเวอร์จะเปลี่ยนข้อมูลในฐานข้อมูล ดังนั้น คำขอข้อความส่วนใหญ่เท่านั้นจึงจะถูกถ่ายโอนผ่านเครือข่าย ซึ่งโดยทั่วไปใช้พื้นที่น้อยกว่าหนึ่งกิโลไบต์ ข้อมูลทั้งหมดได้รับการประมวลผลโดยเซิร์ฟเวอร์ ซึ่งหมายความว่าเครื่องของลูกค้าจะถูกโหลดน้อยลงมากและไม่ต้องการทรัพยากรมากนัก เซิร์ฟเวอร์จะส่งเฉพาะข้อมูลที่จำเป็นที่สุดให้กับลูกค้าเท่านั้น ซึ่งหมายความว่าไม่มีการดาวน์โหลดสำเนาของฐานข้อมูลทั้งหมดโดยไม่จำเป็น ด้วยเหตุนี้ฐานข้อมูลเครือข่ายจึงล้าสมัยแล้วและไม่ได้ใช้งานจริง เกือบทั้งหมดถูกแทนที่ด้วยเทคโนโลยีไคลเอ็นต์เซิร์ฟเวอร์ แต่ฐานข้อมูลท้องถิ่นจะคงอยู่ตลอดไป รูปแบบของที่เก็บข้อมูลอาจเปลี่ยนแปลงหรืออาจมีการเพิ่มฟังก์ชันใหม่บางอย่าง แต่ฐานข้อมูลก็จะมีอยู่จริง เพื่อการพิจารณาต่อไป เราจำเป็นต้องกำหนดแนวคิดใหม่ - โต๊ะ. จนถึงขณะนี้ได้มีการหารือกันเฉพาะหลักการทั่วไปเท่านั้น ดังนั้นจึงมีการใช้แนวคิดทั่วไป ฐานข้อมูล. ตารางฐานข้อมูลเปรียบเสมือนอาร์เรย์สองมิติที่ข้อมูลถูกจัดเรียงเป็นคอลัมน์ (ตัวอย่างที่สำคัญของตารางคือ Excel) ฐานข้อมูลเป็นเพียงไฟล์ที่สามารถจัดเก็บได้ตั้งแต่หนึ่งถึงหลายตาราง ฐานข้อมูลท้องถิ่นส่วนใหญ่สามารถจัดเก็บได้เพียงตารางเดียวเท่านั้น (dBase, Paradox, XML) แต่มีตัวแทนของฐานข้อมูลท้องถิ่นซึ่งมีหลายตารางอยู่ในไฟล์เดียว (เช่น Access)
ฐานข้อมูลท้องถิ่น
ในบรรดาฐานข้อมูลท้องถิ่น ลองพิจารณาฐานข้อมูลเชิงสัมพันธ์เป็นฐานข้อมูลที่พบบ่อยที่สุด ฐานข้อมูลเชิงสัมพันธ์คืออะไร? นี่คือตารางที่คอลัมน์ต่างๆ เป็นชื่อของข้อมูลที่เก็บไว้ในนั้น และแต่ละแถวจะจัดเก็บข้อมูลนั้นเอง ตารางฐานข้อมูลจะคล้ายกับสเปรดชีต Excel (เพื่อให้แม่นยำยิ่งขึ้น Excel จะจัดเก็บข้อมูลในรูปแบบที่เป็นกรรมสิทธิ์ซึ่งสร้างจากเทคโนโลยีฐานข้อมูล) ตารางฐานข้อมูลท้องถิ่นสามารถจัดเก็บไว้ในฮาร์ดไดรฟ์ในเครื่องหรือจัดเก็บไว้ในไดรฟ์เครือข่ายบนเซิร์ฟเวอร์ไฟล์จากส่วนกลาง ไฟล์เหล่านี้สามารถคัดลอกได้โดยใช้เครื่องมือมาตรฐานเช่นเดียวกับไฟล์อื่นๆ เนื่องจากตารางฐานข้อมูลไม่ได้เชื่อมโยงกับตำแหน่งเฉพาะ สิ่งสำคัญคือโปรแกรมสามารถค้นหาตารางได้ แต่ละตารางจะต้องมีเขตข้อมูลที่ไม่ซ้ำกันซึ่งจะระบุแถวโดยไม่ซ้ำกัน ฟิลด์นี้เรียกว่าฟิลด์คีย์ ฟิลด์เหล่านี้มักใช้ในการเชื่อมโยงหลายตารางเข้าด้วยกัน แต่ถึงแม้ว่าตารางจะไม่เกี่ยวข้องกัน แต่ก็ยังจำเป็นต้องมีฟิลด์คีย์ ขอแนะนำให้ใช้ประเภทตัวเลขเป็นคีย์ และหากฐานข้อมูลอนุญาต จะดีกว่าหากเป็นประเภท "การเพิ่มอัตโนมัติ" (เพิ่ม/ลดจำนวนหรือตัวนับโดยอัตโนมัติ) ชื่อคอลัมน์ในตารางฐานข้อมูลจะต้องไม่ซ้ำกัน แต่ในกรณีนี้ไม่จำเป็นต้องเป็นตัวเลข พวกเขาสามารถเรียกสิ่งที่คุณต้องการได้ตราบใดที่มันมีเอกลักษณ์และเข้าใจได้ แต่ละคอลัมน์ (ช่องฐานข้อมูล) ต้องมีประเภทเฉพาะ จำนวนประเภทและความหลากหลายของมันขึ้นอยู่กับประเภทของฐานข้อมูล ตัวอย่างเช่น รูปแบบ dBASE (ไฟล์ที่มีนามสกุล DBF) รองรับเพียง 6 ประเภท และ Paradox รองรับได้ถึง 15 ประเภทแล้ว ฐานข้อมูลสามารถเก็บไว้ในไฟล์เดียว (Access ) หรือในหลาย ๆ (Paradox, dBase) แม่นยำยิ่งขึ้น ข้อมูลตารางจะถูกจัดเก็บไว้ในไฟล์เดียวเสมอ แต่ข้อมูลเพิ่มเติมสามารถอยู่ในไฟล์แยกกันได้ ข้อมูลเพิ่มเติมอาจรวมถึงดัชนี ข้อจำกัด หรือรายการค่าเริ่มต้นสำหรับฟิลด์เฉพาะ หากไฟล์อย่างน้อยหนึ่งไฟล์เสียหายหรือถูกลบ ข้อมูลอาจไม่สามารถแก้ไขได้
เกิดอะไรขึ้น ดัชนี? บ่อยครั้งที่ข้อมูลจากตารางมีการเปลี่ยนแปลงบางอย่าง ดังนั้นก่อนที่คุณจะแก้ไขแถวใดๆ คุณจะต้องค้นหาข้อมูลนั้นเสียก่อน แม้แต่ตารางคงที่ที่ใช้เป็นหนังสืออ้างอิงก็ยังต้องดำเนินการค้นหาก่อนที่จะแสดงข้อมูลที่ร้องขอ การค้นหาเป็นการดำเนินการที่ค่อนข้างใช้เวลานาน โดยเฉพาะอย่างยิ่งหากตารางมีแถวจำนวนมาก ดัชนีมีจุดมุ่งหมายเพื่อเร่งกระบวนการนี้ให้เร็วขึ้น และยังสามารถใช้เป็นจุดเริ่มต้นในการเรียงลำดับได้อีกด้วย ในขั้นตอนนี้ ก็เพียงพอแล้วที่จะรู้ว่าไม่สามารถสั่งซื้อฟิลด์ที่ไม่ได้จัดทำดัชนีได้
หากคุณต้องการโต๊ะที่จะเรียงลำดับตามสนาม " นามสกุล" จากนั้นฟิลด์นี้จะต้องได้รับการจัดทำดัชนีก่อน จากนั้นคุณเพียงแค่ต้องระบุว่าตอนนี้ตารางควรทำงานกับดัชนีดังกล่าวแล้วและมันจะถูกจัดเรียงโดยอัตโนมัติ
ในฐานข้อมูลที่ได้รับการออกแบบมาอย่างดี ความซ้ำซ้อนของข้อมูลจะถูกกำจัด และโอกาสในการจัดเก็บข้อมูลที่ไม่สอดคล้องกันจะลดลง ดังนั้น การสร้างฐานข้อมูลจึงมีเป้าหมายหลักสองประการ: เพื่อลดความซ้ำซ้อนของข้อมูลและเพิ่มความน่าเชื่อถือ
วงจรชีวิตของผลิตภัณฑ์ซอฟต์แวร์ใดๆ รวมถึงระบบการจัดการฐานข้อมูล ประกอบด้วย (ส่วนใหญ่) ของขั้นตอนของการออกแบบ การนำไปปฏิบัติ และการดำเนินงาน
โดยปกติแล้ว ปัจจัยที่สำคัญที่สุดในวงจรชีวิตของแอปพลิเคชันฐานข้อมูลคือขั้นตอนการออกแบบ ประสิทธิภาพของระบบและความสมบูรณ์ของข้อมูลและอายุการใช้งานของมัน ขึ้นอยู่กับความรอบคอบในการพิจารณาโครงสร้างของฐานข้อมูล และความชัดเจนของการเชื่อมต่อระหว่างองค์ประกอบต่างๆ ของระบบ
ข้อกำหนดฐานข้อมูล
ดังนั้นฐานข้อมูลที่ออกแบบมาอย่างดี:
1. ตอบสนองทุกความต้องการของผู้ใช้สำหรับเนื้อหาฐานข้อมูล ก่อนที่จะออกแบบฐานข้อมูล จำเป็นต้องดำเนินการวิจัยอย่างละเอียดเกี่ยวกับข้อกำหนดของผู้ใช้สำหรับการทำงานของฐานข้อมูล
2. รับประกันความสอดคล้องและความสมบูรณ์ของข้อมูล เมื่อออกแบบตาราง คุณต้องกำหนดคุณลักษณะและกฎบางอย่างที่จำกัดความเป็นไปได้ที่ผู้ใช้จะป้อนค่าที่ไม่ถูกต้อง ในการตรวจสอบข้อมูลก่อนที่จะเขียนลงในตารางโดยตรง ฐานข้อมูลจะต้องเรียกใช้กฎของโมเดลข้อมูล และด้วยเหตุนี้จึงทำให้มั่นใจได้ว่าข้อมูลจะคงความสมบูรณ์ไว้
3. มีการจัดโครงสร้างข้อมูลที่เป็นธรรมชาติและเข้าใจง่าย การสร้างฐานข้อมูลคุณภาพสูงทำให้คุณสามารถสืบค้นฐานข้อมูลที่ “โปร่งใส” และเข้าใจได้ง่ายขึ้น ดังนั้นโอกาสในการป้อนข้อมูลที่ไม่ถูกต้องจึงลดลงและปรับปรุงคุณภาพการบำรุงรักษาฐานข้อมูล
4. ตรงตามข้อกำหนดด้านประสิทธิภาพฐานข้อมูลของผู้ใช้ ด้วยข้อมูลปริมาณมาก ปัญหาการรักษาผลผลิต
เริ่มมีบทบาทสำคัญทันที "เน้น" ข้อบกพร่องทั้งหมดของขั้นตอนการออกแบบ
ประเด็นต่อไปนี้แสดงถึงขั้นตอนพื้นฐานของการออกแบบฐานข้อมูล:
1. กำหนดความต้องการข้อมูลของฐานข้อมูล
2. วิเคราะห์วัตถุในโลกแห่งความเป็นจริงที่จำเป็นต้องสร้างแบบจำลองในฐานข้อมูล จากวัตถุเหล่านี้ สร้างเอนทิตีและคุณลักษณะของเอนทิตีเหล่านี้ (ตัวอย่างเช่น สำหรับเอนทิตี "ส่วนหนึ่ง" คุณลักษณะสามารถเป็น "ชื่อ" "สี" "น้ำหนัก" ฯลฯ ) และสร้างรายการได้
3. จับคู่เอนทิตีและคุณลักษณะ - ตารางและคอลัมน์ (ฟิลด์) ในรูปแบบ DBMS ที่คุณเลือก (Paradox, dBase, FoxPro, Access, Clipper, InterBase, Sybase, Informix, Oracle ฯลฯ )
4. กำหนดคุณลักษณะที่ระบุแต่ละออบเจ็กต์โดยไม่ซ้ำกัน
5. พัฒนากฎที่จะสร้างและรักษาความสมบูรณ์ของข้อมูล
6. สร้างการเชื่อมต่อระหว่างวัตถุ (ตารางและคอลัมน์) ทำให้ตารางเป็นมาตรฐาน
7. วางแผนสำหรับประเด็นด้านความน่าเชื่อถือของข้อมูล และหากจำเป็น ให้รักษาความลับของข้อมูล
ข้อมูลที่เกี่ยวข้อง.
พีชคณิตเชิงสัมพันธ์มีพื้นฐานอยู่บนทฤษฎีเซตและเป็นพื้นฐานของตรรกะฐานข้อมูล
ตอนที่ฉันเพิ่งศึกษาโครงสร้างของฐานข้อมูลและ SQL การทำความคุ้นเคยกับพีชคณิตเชิงสัมพันธ์เบื้องต้นช่วยให้ความรู้เพิ่มเติมเข้ามาในหัวของฉันได้อย่างถูกต้องอย่างมาก และฉันจะพยายามทำให้บทความนี้มีผลคล้ายกัน
ดังนั้นหากคุณกำลังจะเริ่มต้นการศึกษาในด้านนี้หรือคุณเพียงแค่สนใจโปรดคลิกที่แมว
ฐานข้อมูลเชิงสัมพันธ์
ขั้นแรก ขอแนะนำแนวคิดของฐานข้อมูลเชิงสัมพันธ์ซึ่งเราจะดำเนินการทั้งหมด
ฐานข้อมูลเชิงสัมพันธ์คือชุดของความสัมพันธ์ที่ประกอบด้วยข้อมูลทั้งหมดที่ต้องเก็บไว้ในฐานข้อมูล ในคำจำกัดความนี้ เราสนใจคำว่าความสัมพันธ์ แต่ตอนนี้เราจะคงไว้โดยไม่มีคำจำกัดความที่เข้มงวด
ลองจินตนาการถึงตารางผลิตภัณฑ์กันดีกว่า
ตารางผลิตภัณฑ์
บัตรประจำตัวประชาชน | ชื่อ | บริษัท | ราคา |
123 | คุ้กกี้ | บจก. ด้านมืด | 190 |
156 | ชา | บจก. ด้านมืด | 60 |
235 | สัปปะรด | OJSC “ฟรุกตี้” | 100 |
623 | มะเขือเทศ | OOO "ผัก" | 130 |
ตารางประกอบด้วย 4 แถว โดย 1 แถวในตารางเป็นทูเพิลในทฤษฎีเชิงสัมพันธ์ ชุดของสิ่งอันดับอันดับเรียกว่าความสัมพันธ์
ก่อนที่จะกำหนดความสัมพันธ์ ขอแนะนำคำอื่น - โดเมน โดเมนที่เกี่ยวข้องกับตารางคือคอลัมน์
เพื่อความชัดเจน ตอนนี้เราขอแนะนำคำจำกัดความที่เข้มงวดของความสัมพันธ์
ให้ N กำหนดให้ D1,D2, … ได้รับ Dn (โดเมน) ความสัมพันธ์ R เหนือชุดเหล่านี้คือชุดของสิ่งอันดับ N ที่เรียงลำดับของแบบฟอร์ม
แต่ละองค์ประกอบของทูเปิลแสดงถึงค่าของหนึ่งในคุณลักษณะที่สอดคล้องกับโดเมนใดโดเมนหนึ่ง
กุญแจสำคัญในความสัมพันธ์
ในความสัมพันธ์ ข้อกำหนดก็คือว่าสิ่งอันดับทั้งหมดจะต้องแตกต่างกัน หากต้องการระบุทูเพิลโดยไม่ซ้ำกัน จะต้องมีคีย์หลัก คีย์หลักคือแอตทริบิวต์หรือชุดของจำนวนแอตทริบิวต์ขั้นต่ำที่ระบุ tuple เฉพาะเจาะจงโดยไม่ซ้ำกันและไม่มีแอตทริบิวต์เพิ่มเติมความหมายก็คือคุณลักษณะทั้งหมดในคีย์หลักจะต้องมีความจำเป็นและเพียงพอที่จะระบุทูเพิลโดยเฉพาะ และการละเว้นคุณลักษณะใดๆ ในคีย์จะทำให้ไม่เพียงพอสำหรับการระบุ
ตัวอย่างเช่น ในตารางดังกล่าว คีย์จะเป็นการรวมแอตทริบิวต์จากคอลัมน์แรกและคอลัมน์ที่สอง
ตารางไดรเวอร์
จะเห็นได้ว่าองค์กรสามารถมีไดรเวอร์ได้หลายตัว และเพื่อที่จะระบุไดรเวอร์ได้โดยไม่ซ้ำกัน จำเป็นต้องมีทั้งค่าจากคอลัมน์ "ชื่อองค์กร" และจากคอลัมน์ "ชื่อไดรเวอร์" คีย์ดังกล่าวเรียกว่าคีย์ผสม
ในฐานข้อมูลเชิงสัมพันธ์ ตารางจะเชื่อมต่อถึงกันและสัมพันธ์กันเป็นตารางหลักและตารางรอง การเชื่อมต่อระหว่างตารางหลักและตารางรองจะดำเนินการผ่านคีย์หลักของตารางหลักและคีย์ต่างประเทศของตารางรอง
คีย์ภายนอกคือแอตทริบิวต์หรือชุดของคุณลักษณะที่เป็นคีย์หลักในตารางหลัก
ทฤษฎีเตรียมการนี้จะเพียงพอที่จะทำความคุ้นเคยกับการดำเนินการพื้นฐานของพีชคณิตเชิงสัมพันธ์
การดำเนินการของพีชคณิตเชิงสัมพันธ์
การดำเนินการพื้นฐานแปดประการของพีชคณิตเชิงสัมพันธ์ถูกเสนอโดย E. Codd- สมาคม
- จุดตัด
- การลบ
- สินค้าคาร์ทีเซียน
- ตัวอย่าง
- การฉายภาพ
- สารประกอบ
- แผนก
เพื่อความเข้าใจ สิ่งสำคัญคือต้องจำไว้ว่าผลลัพธ์ของการดำเนินการพีชคณิตกับความสัมพันธ์นั้นเป็นอีกความสัมพันธ์หนึ่ง ซึ่งสามารถนำไปใช้ในการดำเนินการอื่นได้
มาสร้างตารางอื่นที่จะเป็นประโยชน์สำหรับเราในตัวอย่าง
ตารางผู้ขาย
บัตรประจำตัวประชาชน | ผู้ขาย |
123 | OOO “โผ” |
156 | OJSC "เวโดร" |
235 | CJSC “บาซ่าผัก” |
623 | JSC "บริษัท" |
ยอมรับว่าในตาราง ID นี้เป็นคีย์ต่างประเทศที่เชื่อมโยงกับคีย์หลักของตาราง PRODUCTS
ก่อนอื่น มาดูการดำเนินการที่ง่ายที่สุด - ชื่อของความสัมพันธ์ ผลลัพธ์จะเป็นความสัมพันธ์เดียวกัน นั่นคือ โดยการดำเนินการ PRODUCTS เราจะได้รับสำเนาของความสัมพันธ์ PRODUCTS
การฉายภาพ
การฉายภาพคือการดำเนินการที่คุณลักษณะจากความสัมพันธ์ถูกแยกจากโดเมนที่ระบุเท่านั้น กล่าวคือ เฉพาะคอลัมน์ที่จำเป็นเท่านั้นที่ถูกเลือกจากตาราง และหากได้รับสิ่งอันดับที่เหมือนกันหลายรายการ จะมีเพียงอินสแตนซ์เดียวของทูเพิลดังกล่าวที่ยังคงอยู่ในนั้น ความสัมพันธ์ที่เกิดขึ้นตัวอย่างเช่น เรามาฉายภาพบนตาราง PRODUCTS โดยเลือก ID และ PRICE จากตารางนั้น
ไวยากรณ์การดำเนินการ:
π (รหัส ราคา) สินค้า
ในเงื่อนไขตัวอย่าง เราสามารถใช้นิพจน์บูลีนใดก็ได้ เรามาเลือกอีกรายการหนึ่งซึ่งมีราคามากกว่า 90 และรหัสผลิตภัณฑ์น้อยกว่า 300:
σ(ราคา>90^รหัส<300) PRODUCTS
การคูณ
การคูณหรือผลคูณคาร์ทีเซียนเป็นการดำเนินการที่ทำกับความสัมพันธ์สองความสัมพันธ์ ซึ่งเป็นผลมาจากการที่เราได้รับความสัมพันธ์กับโดเมนทั้งหมดจากความสัมพันธ์เริ่มต้นทั้งสอง สิ่งอันดับในโดเมนเหล่านี้จะเป็นการรวมสิ่งอันดับที่เป็นไปได้ทั้งหมดจากความสัมพันธ์เริ่มต้น มันจะชัดเจนยิ่งขึ้นด้วยตัวอย่างเราได้รับผลิตภัณฑ์คาร์ทีเซียนของตารางผลิตภัณฑ์และผู้ขาย
ไวยากรณ์การดำเนินการ:
สินค้า × ผู้ขาย
คุณจะสังเกตเห็นว่าทั้งสองตารางนี้มีโดเมน ID เดียวกัน ในสถานการณ์นี้ โดเมนที่มีชื่อเดียวกันจะมีคำนำหน้าด้วยชื่อของความสัมพันธ์ที่สอดคล้องกัน ดังที่แสดงด้านล่าง
เพื่อความกระชับ อย่าคูณอัตราส่วนทั้งหมด แต่คูณตัวอย่างด้วยรหัสเงื่อนไข<235
(สิ่งอันดับเดียวกันจะถูกเน้นด้วยสี)
ผลิตภัณฑ์.ID | ชื่อ | บริษัท | ราคา | รหัสผู้ขาย | ผู้ขาย |
123 | คุ้กกี้ | บจก. ด้านมืด | 190 | 123 | OOO “โผ” |
156 | ชา | บจก. ด้านมืด | 60 | 156 | OJSC "เวโดร" |
123 | คุ้กกี้ | บจก. ด้านมืด | 190 | 156 | OJSC "เวโดร" |
156 | ชา | บจก. ด้านมืด | 60 | 123 | OOO “โผ” |
สำหรับตัวอย่างการใช้การดำเนินการนี้ ลองจินตนาการถึงความจำเป็นในการเลือกผู้ขายที่มีราคาน้อยกว่า 90 หากไม่มีผลิตภัณฑ์ จำเป็นต้องรับรหัสผลิตภัณฑ์จากตารางแรกก่อน จากนั้นจึงใช้รหัสเหล่านี้จากตารางที่สองเพื่อรับรหัสที่จำเป็น ชื่อผู้ขาย และการใช้ผลิตภัณฑ์ ข้อความค้นหาต่อไปนี้จะเป็น:
π (ผู้ขาย) σ (RODUCTS.ID=SELLERS.ID ^ ราคา<90) PRODUCTS × SELLERS
จากการดำเนินการนี้ เราได้รับความสัมพันธ์:
ผู้ขาย |
OJSC "เวโดร" |
การเชื่อมต่อและการเชื่อมต่อตามธรรมชาติ
การดำเนินการรวมเป็นสิ่งที่ตรงกันข้ามกับการดำเนินการฉายภาพและสร้างความสัมพันธ์ใหม่จากสองรายการที่มีอยู่ ได้รับความสัมพันธ์ใหม่โดยการต่อสิ่งอันดับของความสัมพันธ์ที่หนึ่งและที่สองเข้าด้วยกันในขณะที่ความสัมพันธ์ที่มีค่าของคุณลักษณะที่ระบุตรงกันนั้นอาจมีการต่อข้อมูลเข้าด้วยกัน โดยเฉพาะอย่างยิ่ง หากคุณเชื่อมต่อความสัมพันธ์ระหว่างผลิตภัณฑ์และผู้ขาย แอตทริบิวต์เหล่านี้จะเป็นแอตทริบิวต์ของโดเมน IDนอกจากนี้ เพื่อความชัดเจน คุณสามารถจินตนาการถึงการเชื่อมต่ออันเป็นผลมาจากการดำเนินการสองครั้ง ขั้นแรกให้นำผลคูณของตารางแหล่งที่มาจากนั้นเราจะทำการเลือกด้วยเงื่อนไขความเท่าเทียมกันของคุณลักษณะจากโดเมนเดียวกันจากความสัมพันธ์ผลลัพธ์ ในกรณีนี้ เงื่อนไขคือความเท่าเทียมกันของ PRODUCTS.ID และ SELLERS.ID
ลองเชื่อมโยงความสัมพันธ์ระหว่างผลิตภัณฑ์และผู้ขายและรับความสัมพันธ์
ผลิตภัณฑ์.ID | ชื่อ | บริษัท | ราคา | รหัสผู้ขาย | ผู้ขาย |
123 | คุ้กกี้ | บจก. ด้านมืด | 190 | 123 | OOO “โผ” |
156 | ชา | บจก. ด้านมืด | 60 | 156 | OJSC "เวโดร" |
235 | สัปปะรด | OJSC “ฟรุกตี้” | 100 | 235 | CJSC “บาซ่าผัก” |
623 | มะเขือเทศ | OOO "ผัก" | 130 | 623 | JSC "บริษัท" |
การรวมแบบธรรมชาติจะได้รับความสัมพันธ์ที่คล้ายกัน แต่ถ้าเรามีสคีมาที่กำหนดค่าอย่างถูกต้องในฐานข้อมูล (ในกรณีนี้ คีย์หลักของตาราง PRODUCTS ID จะเชื่อมโยงกับคีย์ภายนอกของตาราง SELLERS ID) ดังนั้นความสัมพันธ์ที่เป็นผลลัพธ์จะมี โดเมน ID เดียวเท่านั้น
ไวยากรณ์การดำเนินการ:
สินค้า ⋈ ผู้ขาย;
คุณได้รับความสัมพันธ์นี้:
ผลิตภัณฑ์.ID | ชื่อ | บริษัท | ราคา | ผู้ขาย |
123 | คุ้กกี้ | บจก. ด้านมืด | 190 | OOO “โผ” |
156 | ชา | บจก. ด้านมืด | 60 | OJSC "เวโดร" |
235 | สัปปะรด | OJSC “ฟรุกตี้” | 100 | CJSC “บาซ่าผัก” |
623 | มะเขือเทศ | OOO "ผัก" | 130 | JSC "บริษัท" |
สี่แยกและการลบ
ผลลัพธ์ของการดำเนินการตัดกันจะเป็นความสัมพันธ์ที่ประกอบด้วยสิ่งอันดับซึ่งรวมอยู่ในความสัมพันธ์ทั้งสองอย่างสมบูรณ์ผลลัพธ์ของการลบจะเป็นความสัมพันธ์ที่ประกอบด้วยสิ่งอันดับซึ่งเป็นสิ่งอันดับของความสัมพันธ์ที่หนึ่ง ไม่ใช่สิ่งอันดับของความสัมพันธ์ที่สอง
การดำเนินการเหล่านี้คล้ายคลึงกับการดำเนินการเดียวกันในชุด ดังนั้นฉันคิดว่าไม่จำเป็นต้องอธิบายรายละเอียดเหล่านี้
แหล่งข้อมูล
- พื้นฐานของการใช้และการออกแบบฐานข้อมูล - V. M. Ilyushechkin
- หลักสูตรการบรรยาย Introduction to Databases - Jennifer Widom, Stanford University
ฉันจะขอบคุณสำหรับความคิดเห็นที่มีเหตุผล
สั้น ๆ เกี่ยวกับสิ่งสำคัญ
การทำให้ฐานข้อมูลเป็นมาตรฐาน
แบบฟอร์มปกติครั้งแรก (1NF)
- ไม่มีกลุ่มข้อมูลที่ซ้ำกัน
- รับประกันความเป็นอะตอมมิกของข้อมูล (ข้อมูลทั้งหมดเป็นอิสระและเป็นอิสระ)
ที่ระดับบนสุด สามารถทำได้โดยการสร้างคีย์หลัก จากนั้นย้ายกลุ่มข้อมูลที่ซ้ำกันไปยังตารางใหม่ การสร้างคีย์หลักสำหรับตารางเหล่านี้ และอื่นๆ นอกจากนี้ คุณต้องแบ่งระเบียนทั้งหมดที่มีคอลัมน์ที่มีข้อมูลคอมโพสิตออกเป็นแถวแยกกันสำหรับข้อมูลแต่ละคอลัมน์
แบบฟอร์มปกติที่สอง (2NF)
- ตารางเป็นไปตามเงื่อนไขของ 1NF
- แต่ละคอลัมน์ขึ้นอยู่กับคีย์ทั้งหมด ไม่ใช่บางส่วน
แบบฟอร์มปกติที่สาม (3NF)
- ตารางเป็นไปตามเงื่อนไขของ 2NF
- ไม่มีคอลัมน์ใดขึ้นอยู่กับคอลัมน์ที่ไม่ได้เป็นส่วนหนึ่งของคีย์หลัก
- ไม่มีข้อมูลที่ได้รับ
รูปแบบปกติอื่น ๆ ที่ไม่มีคุณค่าในทางปฏิบัติมากนัก:
บอยซ์-ค็อดด์ ฟอร์มปกติ
ตัวเลือก 3NF ออกแบบมาเพื่อแก้ไขสถานการณ์ที่มีคีย์ตัวเลือกที่ทับซ้อนกันจำนวนมาก ในความเป็นจริง ไม่มีเหตุผลเชิงตรรกะภายนอกชุมชนวิชาการ
รูปแบบปกติที่สี่
ออกแบบมาเพื่อแก้ไขปัญหาการขึ้นต่อกันหลายค่า สถานการณ์ดังกล่าวเกิดขึ้นหากในตารางที่ลดลงเหลือ 3NF คอลัมน์หนึ่งของคีย์หลักแบบรวมจะขึ้นอยู่กับคอลัมน์คีย์หลักอีกคอลัมน์หนึ่ง
แบบฟอร์มปกติที่ห้า
ใช้เมื่อทำงานกับการสลายตัวของความสัมพันธ์ที่มีและไม่มีการสูญเสีย มันเกิดขึ้นในสถานการณ์ที่มีความเป็นไปได้ที่จะแบ่งความสัมพันธ์หนึ่งออกเป็นหลายความสัมพันธ์ที่แตกต่างกัน แต่หลังจากนั้นเราจะไม่สามารถกลับคืนสู่รูปแบบดั้งเดิมได้ในเชิงตรรกะอีกต่อไป
รูปแบบปกติที่หก (รูปแบบปกติของคีย์โดเมน)
ตรวจสอบให้แน่ใจว่าไม่มีการแก้ไขความผิดปกติในฐานข้อมูล ในสภาวะที่แท้จริงนั้นแทบจะเป็นไปไม่ได้เลย
ความสัมพันธ์.
ฉันเคยได้ยินจากผู้หญิงว่าผู้ชาย
พยายามออกจากห้องนั้นทันที
ได้ยินคำว่าความสัมพันธ์<...>กุญแจสู่ความสำเร็จ
ความสัมพันธ์คือการตระหนักรู้ของทุกคนเกี่ยวกับบทบาทของตน
ในการนี้ตลอดจนหลักเกณฑ์และข้อจำกัด
กำหนดโดยความสัมพันธ์นี้
(C) Robert Viera “การเขียนโปรแกรม SQL Server 2000 ระดับมืออาชีพ”
ประเภทของความสัมพันธ์
- แบบหนึ่งต่อหนึ่ง (เหมาะสมเมื่อต้องจัดเก็บข้อมูลที่ตรงกันในฐานข้อมูลที่แตกต่างกัน หรือเมื่อเกินขนาดข้อมูลแถวสูงสุด)
- เป็นศูนย์หรือหนึ่งต่อหนึ่ง
- หนึ่งต่อหลาย
- หนึ่งถึง -0, -หนึ่งหรือ -หลาย
- หลายต่อกลุ่ม (ตารางทางแยก)
สมาคม
เข้าร่วมภายใน
เข้าร่วมพิเศษ ผลลัพธ์การเลือกจะรวมเฉพาะบันทึกตารางที่ตรงกันในตารางที่จับคู่สำหรับเงื่อนไขที่กำหนด
ซ้าย|ขวา เข้าร่วม
รวมการเข้าร่วม ผลการคัดเลือกจะรวมถึงบันทึกจากตารางด้านซ้าย/ขวาของ เข้าร่วมตามลำดับ ในกรณีนี้ ข้อมูลจากบันทึก "จับคู่" ที่ขาดหายไปจะถูกกรอก โมฆะ.
จาก left_table LEFT เข้าร่วม right_table– บันทึกทั้งหมดจากตารางด้านซ้ายจะรวม left_table ไว้ด้วย
จาก left_table ขวา เข้าร่วม right_table– บันทึกทั้งหมดจากตารางด้านขวา right_table รวมอยู่ด้วย
เข้าร่วมเต็มรูปแบบ
รวมการเข้าร่วม ผลลัพธ์การเลือกไม่เพียงแต่รวมถึงบันทึกที่ตรงกันในอีกตารางหนึ่งเท่านั้น แต่ยังรวมถึงบันทึกจากทั้งสองตารางซึ่งไม่พบรายการที่ตรงกันในอีกตารางหนึ่งด้วย ในกรณีนี้ ข้อมูลจากบันทึก "จับคู่" ที่ขาดหายไปจะถูกเติมด้วย NULL
ข้ามเข้าร่วม
สหภาพข้าม (ผลคูณคาร์ทีเซียน) ทุกบันทึกจากตารางหนึ่งจะจับคู่กับทุกบันทึกจากตารางอื่น จำนวนบันทึกผลลัพธ์จะเท่ากับผลคูณของจำนวนบันทึกในทั้งสองตาราง
หลักการจัดหลายอย่าง เข้าร่วมของ
หากคุณต้องการรวมหลายตาราง คุณต้องจำหลักการสองประการ:
- สหภาพแรงงานทั้งหมดอยู่ทางซ้าย เข้าร่วมถือเป็นตารางเดียวที่จะรวมหรือแยกออกจากแบบสอบถาม
- สหภาพแรงงานทั้งหมดอยู่ทางด้านขวา เข้าร่วมยังถือเป็นตารางเดียวที่จะรวมหรือแยกออกจากแบบสอบถาม
ข้อพิสูจน์ของหลักการเหล่านี้คือคำแนะนำต่อไปนี้สำหรับการจัดตั้งสมาคมที่ซับซ้อน:
ป.ล. ทั้งหมดข้างต้นเป็น "สมมุติฐาน" ทั่วไปของทฤษฎีฐานข้อมูลเชิงสัมพันธ์ ซึ่งไม่ได้เชื่อมโยงกับคุณลักษณะของ DBMS บางตัว
โมเดลข้อมูลคือชุดของโครงสร้างข้อมูลและการดำเนินการสำหรับการประมวลผล เมื่อใช้โมเดลข้อมูล คุณสามารถแสดงโครงสร้างของออบเจ็กต์และความสัมพันธ์ที่สร้างขึ้นระหว่างวัตถุเหล่านั้นได้อย่างชัดเจน คำศัพท์เฉพาะของโมเดลข้อมูลมีลักษณะเฉพาะคือแนวคิดของ "องค์ประกอบข้อมูล" และ "กฎการเชื่อมโยง" องค์ประกอบข้อมูลจะอธิบายชุดข้อมูลใดๆ และกฎการเชื่อมโยงจะกำหนดอัลกอริทึมสำหรับการเชื่อมโยงองค์ประกอบข้อมูลเข้าด้วยกัน จนถึงปัจจุบัน มีการพัฒนาแบบจำลองข้อมูลที่แตกต่างกันมากมาย แต่ในทางปฏิบัติใช้แบบจำลองหลักสามแบบ มีโมเดลข้อมูลแบบลำดับชั้น เครือข่าย และเชิงสัมพันธ์ ดังนั้นพวกเขาจึงพูดคุยเกี่ยวกับ DBMS แบบลำดับชั้น เครือข่าย และเชิงสัมพันธ์
O แบบจำลองข้อมูลแบบลำดับชั้น ข้อมูลที่จัดระเบียบตามลำดับชั้นเป็นเรื่องปกติธรรมดาในชีวิตประจำวัน ตัวอย่างเช่น โครงสร้างของสถาบันอุดมศึกษาเป็นโครงสร้างแบบลำดับชั้นหลายระดับ ฐานข้อมูลแบบลำดับชั้น (ต้นไม้) ประกอบด้วยชุดองค์ประกอบที่ได้รับคำสั่ง ในแบบจำลองนี้ องค์ประกอบเริ่มต้นก่อให้เกิดองค์ประกอบอื่นๆ และองค์ประกอบเหล่านี้ก็ก่อให้เกิดองค์ประกอบเพิ่มเติมตามลำดับ องค์ประกอบลูกแต่ละองค์ประกอบมีองค์ประกอบหลักเพียงองค์ประกอบเดียวเท่านั้น
โครงสร้างองค์กร รายการวัสดุ สารบัญในหนังสือ แผนโครงการ และชุดข้อมูลอื่นๆ อีกมากมายสามารถนำเสนอในรูปแบบลำดับชั้นได้ ความสมบูรณ์ของการเชื่อมโยงระหว่างบรรพบุรุษและผู้สืบทอดจะถูกรักษาไว้โดยอัตโนมัติ กฎพื้นฐาน: เด็กไม่สามารถดำรงอยู่ได้หากไม่มีผู้ปกครอง
ข้อเสียเปรียบหลักของโมเดลนี้คือความจำเป็นในการใช้ลำดับชั้นซึ่งเป็นพื้นฐานของฐานข้อมูลในระหว่างการออกแบบ ความจำเป็นในการจัดโครงสร้างข้อมูลใหม่อย่างต่อเนื่อง (และบ่อยครั้งที่ความเป็นไปไม่ได้ของการจัดโครงสร้างใหม่นี้) นำไปสู่การสร้างแบบจำลองทั่วไปมากขึ้น - โมเดลเครือข่าย
O แบบจำลองข้อมูลเครือข่าย แนวทางเครือข่ายในการจัดระเบียบข้อมูลเป็นส่วนขยายของแนวทางแบบลำดับชั้น โมเดลนี้แตกต่างจากโมเดลแบบลำดับชั้นตรงที่แต่ละองค์ประกอบที่สร้างขึ้นสามารถมีองค์ประกอบการสร้างได้มากกว่าหนึ่งองค์ประกอบ ■
เนื่องจากฐานข้อมูลเครือข่ายสามารถแสดงความสัมพันธ์ทุกประเภทที่มีอยู่ในข้อมูลขององค์กรที่เกี่ยวข้องได้โดยตรง ข้อมูลนี้จึงสามารถสำรวจ สำรวจ และสอบถามได้หลายวิธี กล่าวคือ โมเดลเครือข่ายไม่ได้ถูกผูกไว้ด้วยลำดับชั้นเพียงลำดับเดียว อย่างไรก็ตาม เพื่อทำการร้องขอไปยังฐานข้อมูลเครือข่าย จำเป็นต้องเจาะลึกเข้าไปในโครงสร้าง (มีสคีมาของฐานข้อมูลนี้อยู่ในมือ) และพัฒนากลไกในการนำทางฐานข้อมูล ซึ่งเป็นข้อเสียเปรียบที่สำคัญของโมเดลฐานข้อมูลนี้ .
O แบบจำลองข้อมูลเชิงสัมพันธ์ แนวคิดพื้นฐานของแบบจำลองข้อมูลเชิงสัมพันธ์คือการแสดงชุดข้อมูลใดๆ ในรูปแบบตารางสองมิติ ในรูปแบบที่ง่ายที่สุด แบบจำลองเชิงสัมพันธ์จะอธิบายตารางสองมิติเดียว แต่บ่อยครั้งที่แบบจำลองจะอธิบายโครงสร้างและความสัมพันธ์ระหว่างตารางที่แตกต่างกันหลายตาราง
แบบจำลองข้อมูลเชิงสัมพันธ์
ดังนั้นวัตถุประสงค์ของระบบสารสนเทศคือการประมวลผล ข้อมูลเกี่ยวกับ วัตถุโลกแห่งความจริงโดยคำนึงถึง การเชื่อมต่อระหว่างวัตถุ ในทฤษฎีฐานข้อมูล ข้อมูลมักถูกเรียกว่า คุณสมบัติและวัตถุ - เอนทิตีวัตถุ คุณลักษณะ และการเชื่อมต่อเป็นแนวคิดพื้นฐานของ I.S.
วัตถุ(หรือสาระสำคัญ) คือสิ่งที่มีอยู่และ แยกแยะได้,นั่นคือวัตถุสามารถเรียกได้ว่าเป็น "บางสิ่ง" ซึ่งมีชื่อและวิธีการแยกแยะวัตถุที่คล้ายกันจากอีกวัตถุหนึ่ง ตัวอย่างเช่น ทุกโรงเรียนคือวัตถุ วัตถุยังเป็นบุคคล ชั้นเรียนที่โรงเรียน บริษัท โลหะผสม สารประกอบเคมี ฯลฯ วัตถุไม่เพียงแต่เป็นวัตถุทางวัตถุเท่านั้น แต่ยังรวมถึงแนวคิดเชิงนามธรรมที่สะท้อนโลกแห่งความเป็นจริงอีกด้วย ตัวอย่างเช่น งานกิจกรรม ภูมิภาค งานศิลปะ หนังสือ (ไม่ใช่สิ่งพิมพ์ แต่เป็นผลงาน) การแสดงละคร ภาพยนตร์ บรรทัดฐานทางกฎหมาย ทฤษฎีปรัชญา ฯลฯ
คุณลักษณะ(หรือ ที่ให้ไว้)- นี่คือตัวบ่งชี้ที่กำหนดลักษณะของวัตถุบางอย่าง และรับตัวเลข ข้อความ หรือค่าอื่น ๆ ที่แน่นอนสำหรับอินสแตนซ์เฉพาะของวัตถุ ระบบสารสนเทศทำงานร่วมกับชุดของวัตถุที่ออกแบบมาสัมพันธ์กับสาขาวิชาที่กำหนดโดยใช้ข้อมูลเฉพาะ ค่าแอตทริบิวต์(ข้อมูล) ของวัตถุบางอย่าง ตัวอย่างเช่น ลองเรียนชั้นเรียนในโรงเรียนเป็นชุดของวัตถุ จำนวนนักเรียนในชั้นเรียนคือข้อมูลที่ใช้กับค่าตัวเลข (ชั้นเรียนหนึ่งมี 28 คน และอีกชั้นเรียนมี 32 คน) ชื่อคลาสเป็นชื่อที่กำหนดซึ่งรับค่าข้อความ (อันหนึ่งมี 10A อีกอันมี 9B เป็นต้น)
การพัฒนาฐานข้อมูลเชิงสัมพันธ์เริ่มขึ้นในช่วงปลายทศวรรษที่ 60 เมื่อมีผลงานชิ้นแรกที่กล่าวถึง ความเป็นไปได้ในการใช้วิธีที่คุ้นเคยและเป็นธรรมชาติในการนำเสนอข้อมูล - ที่เรียกว่าแบบจำลองข้อมูลแบบตาราง - เมื่อออกแบบฐานข้อมูล
ผู้ก่อตั้งทฤษฎีฐานข้อมูลเชิงสัมพันธ์ถือเป็นพนักงานของ IBM คือ Dr. E. Codd ซึ่งตีพิมพ์บทความเมื่อวันที่ 6 มิถุนายน พ.ศ. 2513 แบบจำลองเชิงสัมพันธ์ของข้อมูลสำหรับธนาคารข้อมูลที่ใช้ร่วมกันขนาดใหญ่(แบบจำลองข้อมูลเชิงสัมพันธ์สำหรับธนาคารข้อมูลรวมขนาดใหญ่) บทความนี้เป็นบทความแรกที่ใช้คำว่า "แบบจำลองข้อมูลเชิงสัมพันธ์" ทฤษฎีฐานข้อมูลเชิงสัมพันธ์ซึ่งพัฒนาขึ้นในยุค 70 ในสหรัฐอเมริกาโดย Dr. E. Codd มีพื้นฐานทางคณิตศาสตร์ที่ทรงพลังซึ่งอธิบายกฎเกณฑ์สำหรับการจัดระเบียบข้อมูลอย่างมีประสิทธิภาพ กรอบทฤษฎีที่พัฒนาโดย E. Codd กลายเป็นพื้นฐานสำหรับการพัฒนาทฤษฎีการออกแบบฐานข้อมูล
E. Codd เป็นนักคณิตศาสตร์โดยการฝึกอบรม เสนอโดยใช้เครื่องมือของทฤษฎีเซต (ยูเนี่ยน อินเตอร์เซกชัน ผลต่าง ผลคูณคาร์ทีเซียน) สำหรับการประมวลผลข้อมูล เขาพิสูจน์ว่าชุดข้อมูลใด ๆ สามารถแสดงในรูปแบบของตารางสองมิติชนิดพิเศษซึ่งรู้จักกันในวิชาคณิตศาสตร์ว่า "ความสัมพันธ์"
เชิงสัมพันธ์ฐานข้อมูลถือเป็นฐานข้อมูลหนึ่งที่ข้อมูลทั้งหมดถูกนำเสนอต่อผู้ใช้ในรูปแบบของตารางสี่เหลี่ยมของค่าข้อมูล และการดำเนินการทั้งหมดในฐานข้อมูลจะลดลงเป็นการจัดการกับตาราง
ตารางประกอบด้วย คอลัมน์ (เขตข้อมูล)และ เส้น (บันทึก);มีชื่อที่ไม่ซ้ำใครภายในฐานข้อมูล โต๊ะสะท้อนให้เห็นถึง ประเภทวัตถุโลกแห่งความจริง (นิติบุคคล)และเธอแต่ละคน string เป็นวัตถุเฉพาะแต่ละคอลัมน์ของตารางคือชุดของค่าสำหรับคุณลักษณะเฉพาะของวัตถุ ค่าจะถูกเลือกจากชุดของค่าที่เป็นไปได้ทั้งหมดสำหรับแอตทริบิวต์ของวัตถุซึ่งเรียกว่า โดเมน.
ในรูปแบบทั่วไปส่วนใหญ่ โดเมนถูกกำหนดโดยการระบุประเภทข้อมูลพื้นฐานบางประเภทที่มีองค์ประกอบของโดเมนอยู่ และนิพจน์บูลีนที่กำหนดเองจะนำไปใช้กับองค์ประกอบข้อมูล หากคุณประเมินเงื่อนไขบูลีนในรายการข้อมูลและผลลัพธ์เป็นจริง รายการนั้นจะอยู่ในโดเมน ในกรณีที่ง่ายที่สุด โดเมนถูกกำหนดให้เป็นชุดค่าที่เป็นไปได้ประเภทเดียวกันที่ถูกต้อง ตัวอย่างเช่น การรวบรวมวันเกิดของพนักงานทุกคนจะถือเป็น "โดเมนวันเกิด" และชื่อของพนักงานทั้งหมดจะถือเป็น "โดเมนชื่อพนักงาน" โดเมนวันเกิดต้องมีประเภทข้อมูล ณ เวลาใดเวลาหนึ่ง และโดเมนชื่อพนักงานต้องมีประเภทข้อมูลอักขระ
หากค่าสองค่ามาจากโดเมนเดียวกัน ก็สามารถเปรียบเทียบระหว่างค่าทั้งสองได้ ตัวอย่างเช่น หากนำค่าสองค่ามาจากโดเมนของวันเกิด คุณสามารถเปรียบเทียบและพิจารณาว่าพนักงานคนใดที่มีอายุมากกว่า หากค่าถูกนำมาจากโดเมนที่แตกต่างกัน การเปรียบเทียบจะไม่ได้รับอนุญาตเนื่องจากอาจไม่สมเหตุสมผลในทุกโอกาส ตัวอย่างเช่น ไม่มีสิ่งใดที่แน่นอนในการเปรียบเทียบชื่อและวันเกิดของพนักงาน
แต่ละคอลัมน์ (ช่อง) มีชื่อ ซึ่งโดยปกติจะเขียนไว้ที่ด้านบนของตาราง เมื่อออกแบบตารางภายใน DBMS เฉพาะ คุณสามารถเลือกสำหรับแต่ละฟิลด์ได้ พิมพ์,นั่นคือเพื่อกำหนดชุดกฎสำหรับการแสดงผลตลอดจนกำหนดการดำเนินการที่สามารถทำได้กับข้อมูลที่จัดเก็บไว้ในฟิลด์นี้ ชุดประเภทอาจแตกต่างกันระหว่าง DBMS ที่แตกต่างกัน
ชื่อเขตข้อมูลในตารางต้องไม่ซ้ำกัน แต่ตารางที่ต่างกันสามารถมีเขตข้อมูลที่มีชื่อเดียวกันได้ ตารางใดๆ จะต้องมีอย่างน้อยหนึ่งฟิลด์ ฟิลด์ต่างๆ จะอยู่ในตารางตามลำดับที่ชื่อปรากฏเมื่อสร้างขึ้น ต่างจากฟิลด์ตรงที่สตริงไม่มีชื่อ ไม่ได้กำหนดลำดับในตาราง และจำนวนนั้นไม่จำกัดตามตรรกะ
เนื่องจากแถวในตารางไม่ได้รับการเรียงลำดับจึงไม่สามารถเลือกแถวตามตำแหน่งได้ - ไม่มี "แรก", "ที่สอง" หรือ "สุดท้าย" ตารางใด ๆ มีหนึ่งคอลัมน์ขึ้นไปซึ่งค่าที่ระบุแต่ละแถวไม่ซ้ำกัน คอลัมน์ดังกล่าว (หรือการรวมกันของคอลัมน์) เรียกว่า คีย์หลัก. สนามเทียมมักถูกนำมาใช้กับบันทึกตัวเลขในตาราง ตัวอย่างเช่น ฟิลด์ดังกล่าวอาจเป็นฟิลด์ลำดับซึ่งสามารถรับประกันความเป็นเอกลักษณ์ของแต่ละเรกคอร์ดในตารางได้ คีย์ต้องมีคุณสมบัติดังต่อไปนี้
เอกลักษณ์.ในเวลาใดก็ตาม ไม่มีสิ่งอันดับสองความสัมพันธ์ที่แตกต่างกันที่มีค่าเท่ากันสำหรับการรวมกันของคุณลักษณะที่รวมอยู่ในคีย์ นั่นคือไม่สามารถมีสองแถวในตารางที่มีหมายเลขประจำตัวหรือหมายเลขหนังสือเดินทางเดียวกัน
ความเรียบง่ายไม่มีแอตทริบิวต์ใดที่รวมอยู่ในคีย์ที่สามารถแยกออกจากคีย์ได้โดยไม่ละเมิดเอกลักษณ์ ซึ่งหมายความว่าคุณไม่ควรสร้างรหัสที่มีทั้งหมายเลขหนังสือเดินทางและหมายเลขประจำตัว การใช้คุณลักษณะเหล่านี้เพื่อระบุทูเพิลโดยไม่ซ้ำกันก็เพียงพอแล้ว นอกจากนี้ คุณไม่ควรใส่แอตทริบิวต์ที่ไม่ซ้ำกันในคีย์ กล่าวคือ ห้ามใช้หมายเลขประจำตัวและชื่อพนักงานผสมกันเป็นรหัส ด้วยการยกเว้นชื่อพนักงานออกจากคีย์ แต่ละแถวยังสามารถระบุได้ไม่ซ้ำกัน
ทุกความสัมพันธ์มีคีย์ที่เป็นไปได้อย่างน้อยหนึ่งคีย์ เนื่องจากผลรวมของคุณลักษณะทั้งหมดเป็นไปตามเงื่อนไขของเอกลักษณ์ - สิ่งนี้ตามมาจากคำจำกัดความของความสัมพันธ์
หนึ่งในคีย์ที่เป็นไปได้จะถูกสุ่มเลือก เป็นคีย์หลักคีย์ที่เป็นไปได้ที่เหลือ (ถ้ามี) จะถือเป็น ปุ่มทางเลือกตัวอย่างเช่น หากคุณเลือกหมายเลขประจำตัวเป็นคีย์หลัก หมายเลขหนังสือเดินทางจะเป็นคีย์สำรอง
ความสัมพันธ์ของตารางเป็นองค์ประกอบที่สำคัญที่สุดของแบบจำลองข้อมูลเชิงสัมพันธ์ มันได้รับการสนับสนุน กุญแจต่างประเทศ
เมื่ออธิบายโมเดลฐานข้อมูลเชิงสัมพันธ์ มักใช้คำที่แตกต่างกันสำหรับแนวคิดเดียวกัน ขึ้นอยู่กับระดับของคำอธิบาย (ทฤษฎีหรือการปฏิบัติ) และระบบ (Access, SQL Server, dBase) ในตาราง 2.3 จัดให้มีการสรุปคำศัพท์ที่ใช้
ตารางที่ 2.3.คำศัพท์เฉพาะทางฐานข้อมูล
ทฤษฎีฐานข้อมูล____________ ฐานข้อมูลเชิงสัมพันธ์_________ SQL Server __________
ตารางความสัมพันธ์ ตาราง
แถวเรคคอร์ด Tuple
AttributeField_______________คอลัมน์
ฐานข้อมูลเชิงสัมพันธ์
ฐานข้อมูลเชิงสัมพันธ์คือชุดของความสัมพันธ์ที่ประกอบด้วยข้อมูลทั้งหมดที่ต้องเก็บไว้ในฐานข้อมูล นั่นคือฐานข้อมูลแสดงถึงชุดของตารางที่จำเป็นในการจัดเก็บข้อมูลทั้งหมด ตารางของฐานข้อมูลเชิงสัมพันธ์มีความสัมพันธ์กันในเชิงตรรกะ ข้อกำหนดสำหรับการออกแบบฐานข้อมูลเชิงสัมพันธ์โดยทั่วไปสามารถลดลงได้เป็นกฎหลายข้อ
О แต่ละตารางมีชื่อเฉพาะในฐานข้อมูลและประกอบด้วยแถวประเภทเดียวกัน
O แต่ละตารางประกอบด้วยคอลัมน์และค่าจำนวนคงที่ ไม่สามารถจัดเก็บค่ามากกว่าหนึ่งค่าในคอลัมน์แถวเดียวได้ ตัวอย่างเช่น หากมีตารางที่มีข้อมูลเกี่ยวกับผู้เขียน วันที่ตีพิมพ์ ยอดจำหน่าย ฯลฯ คอลัมน์ที่มีชื่อผู้เขียนจะไม่สามารถจัดเก็บได้มากกว่าหนึ่งนามสกุล หากหนังสือเล่มนี้เขียนโดยผู้แต่งสองคนขึ้นไป คุณจะต้องใช้ตารางเพิ่มเติม
O จะไม่มีแถวสองแถวในตารางที่ซ้ำกัน แถวต้องแตกต่างกันอย่างน้อยหนึ่งค่าเพื่อให้สามารถระบุแถวในตารางได้โดยไม่ซ้ำกัน
О แต่ละคอลัมน์ได้รับการกำหนดชื่อเฉพาะภายในตาราง มีการตั้งค่าประเภทข้อมูลเฉพาะเพื่อให้ค่าที่เป็นเนื้อเดียวกันถูกวางไว้ในคอลัมน์นี้ (วันที่ นามสกุล หมายเลขโทรศัพท์ จำนวนเงิน ฯลฯ )
O เนื้อหาข้อมูลที่สมบูรณ์ของฐานข้อมูลจะแสดงเป็นค่าที่ชัดเจนของข้อมูลเอง และนี่เป็นวิธีการเดียวในการนำเสนอ ตัวอย่างเช่น ความสัมพันธ์ระหว่างตารางจะขึ้นอยู่กับข้อมูลที่จัดเก็บไว้ในคอลัมน์ที่เกี่ยวข้อง และไม่ได้อยู่บนพื้นฐานของตัวชี้ใดๆ ที่กำหนดความสัมพันธ์ปลอมๆ
О เมื่อประมวลผลข้อมูล คุณสามารถเข้าถึงแถวหรือคอลัมน์ใดก็ได้ของตารางได้อย่างอิสระ ค่าที่เก็บไว้ในตารางไม่มีข้อจำกัดใดๆ ในลำดับการเข้าถึงข้อมูล คำอธิบายของคอลัมน์