ทฤษฎีฐานข้อมูลเชิงสัมพันธ์ ทฤษฎีฐานข้อมูลเชิงสัมพันธ์: การทำให้เป็นมาตรฐาน ความสัมพันธ์ และการรวม กระทรวงศึกษาธิการและวิทยาศาสตร์แห่งสหพันธรัฐรัสเซีย

คำอธิบายประกอบ: การบรรยายครั้งนี้และครั้งต่อไปจะเน้นไปที่ทฤษฎีฐานข้อมูลเชิงสัมพันธ์ เนื่องจากแนวทางเชิงสัมพันธ์ทั้งหมดในการจัดระเบียบฐานข้อมูลเป็นเชิงปฏิบัติอย่างแท้จริง ทฤษฎีนี้จึงเป็นเชิงปฏิบัติเป็นหลัก ปัญหาหลักที่ทฤษฎีฐานข้อมูลเชิงสัมพันธ์มุ่งหวังที่จะแก้ไขคือ การค้นหาคุณสมบัติที่เป็นประโยชน์ของโครงร่างฐานข้อมูลบางอย่าง และพัฒนาวิธีสร้างโครงร่างดังกล่าว ปัญหานี้มักเรียกสั้น ๆ ว่าปัญหาการออกแบบฐานข้อมูลเชิงสัมพันธ์

การแนะนำ

แม้จะมีแนวทางการปฏิบัติ ทฤษฎีฐานข้อมูลเชิงสัมพันธ์เป็นสาขาวิทยาศาสตร์อิสระที่นักวิจัยชื่อดังหลายคนเคยทำงาน (และทำงานต่อไป) ซึ่งมีชื่อปรากฏในการบรรยายของเรา เราไม่ได้วางแผนที่จะอธิบายรายละเอียดผลลัพธ์หลักในสาขานี้ในหลักสูตรนี้ เป้าหมายของเราคือการให้เฉพาะคำจำกัดความและข้อความที่จำเป็นสำหรับความเข้าใจทั่วไปของกระบวนการ การออกแบบฐานข้อมูลเชิงสัมพันธ์ขึ้นอยู่กับการทำให้เป็นมาตรฐาน

เนื่องจากคุณสมบัติที่สำคัญที่สุดของฐานข้อมูลเชิงสัมพันธ์จากมุมมองเชิงปฏิบัตินั้นขึ้นอยู่กับแนวคิด การพึ่งพาการทำงานเราได้รวมการอภิปรายสั้น ๆ เกี่ยวกับประเด็นทางทฤษฎีที่เกี่ยวข้องไว้ในการบรรยายแยกต่างหาก ท่ามกลางคำถามเหล่านี้ การปิดตัว และ ครอบคลุมชุดการขึ้นต่อกันของฟังก์ชัน, สัจพจน์ของอาร์มสตรองและทฤษฎีบทของเฮลธ์เกี่ยวกับเงื่อนไขที่เพียงพอ การสลายความสัมพันธ์ที่ไม่สูญเสีย. แนวคิดและข้อความของการบรรยายนี้จำเป็นจริงๆ สำหรับการเรียนรู้เนื้อหาในการบรรยายที่ 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 ที่เรียงลำดับของแบบฟอร์ม โดยที่ d1 เป็นของ D1 เป็นต้น เซต D1,D2,..Dn เรียกว่าโดเมนของความสัมพันธ์ R
แต่ละองค์ประกอบของทูเปิลแสดงถึงค่าของหนึ่งในคุณลักษณะที่สอดคล้องกับโดเมนใดโดเมนหนึ่ง

กุญแจสำคัญในความสัมพันธ์
ในความสัมพันธ์ ข้อกำหนดก็คือว่าสิ่งอันดับทั้งหมดจะต้องแตกต่างกัน หากต้องการระบุทูเพิลโดยไม่ซ้ำกัน จะต้องมีคีย์หลัก คีย์หลักคือแอตทริบิวต์หรือชุดของจำนวนแอตทริบิวต์ขั้นต่ำที่ระบุ 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

ข้ามเข้าร่วม

สหภาพข้าม (ผลคูณคาร์ทีเซียน) ทุกบันทึกจากตารางหนึ่งจะจับคู่กับทุกบันทึกจากตารางอื่น จำนวนบันทึกผลลัพธ์จะเท่ากับผลคูณของจำนวนบันทึกในทั้งสองตาราง

หลักการจัดหลายอย่าง เข้าร่วมของ

หากคุณต้องการรวมหลายตาราง คุณต้องจำหลักการสองประการ:

  1. สหภาพแรงงานทั้งหมดอยู่ทางซ้าย เข้าร่วมถือเป็นตารางเดียวที่จะรวมหรือแยกออกจากแบบสอบถาม
  2. สหภาพแรงงานทั้งหมดอยู่ทางด้านขวา เข้าร่วมยังถือเป็นตารางเดียวที่จะรวมหรือแยกออกจากแบบสอบถาม

ข้อพิสูจน์ของหลักการเหล่านี้คือคำแนะนำต่อไปนี้สำหรับการจัดตั้งสมาคมที่ซับซ้อน:

  • เมื่อใดก็ตามที่เป็นไปได้ คุณควรใช้ INNER JOIN
  • หากจำเป็นต้องใช้ OUTER JOIN ควรวางไว้ท้ายสุด และ INNER JOIN ควรวางไว้ที่จุดเริ่มต้นของการรวม

ป.ล. ทั้งหมดข้างต้นเป็น "สมมุติฐาน" ทั่วไปของทฤษฎีฐานข้อมูลเชิงสัมพันธ์ ซึ่งไม่ได้เชื่อมโยงกับคุณลักษณะของ 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 เนื้อหาข้อมูลที่สมบูรณ์ของฐานข้อมูลจะแสดงเป็นค่าที่ชัดเจนของข้อมูลเอง และนี่เป็นวิธีการเดียวในการนำเสนอ ตัวอย่างเช่น ความสัมพันธ์ระหว่างตารางจะขึ้นอยู่กับข้อมูลที่จัดเก็บไว้ในคอลัมน์ที่เกี่ยวข้อง และไม่ได้อยู่บนพื้นฐานของตัวชี้ใดๆ ที่กำหนดความสัมพันธ์ปลอมๆ

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