การเกิดขึ้นของเทคโนโลยีคอมพิวเตอร์ในบ้านเราความทันสมัยได้ทำเครื่องหมายการปฏิวัติข้อมูลในทุกขอบเขตของกิจกรรมของมนุษย์ แต่เพื่อป้องกันไม่ให้ข้อมูลทั้งหมดกลายเป็นขยะที่ไม่จำเป็นบนอินเทอร์เน็ตทั่วโลก ระบบฐานข้อมูลจึงถูกคิดค้นขึ้น ซึ่งวัสดุต่างๆ จะถูกจัดเรียง จัดระบบ ส่งผลให้สามารถค้นหาและนำเสนอสำหรับการประมวลผลในภายหลังได้ง่าย มีสามประเภทหลัก - ฐานข้อมูลเชิงสัมพันธ์ ลำดับชั้น เครือข่าย
โมเดลพื้นฐาน
ย้อนไปถึงที่มาของฐานข้อมูลก็คุ้มกล่าวได้ว่ากระบวนการนี้ค่อนข้างซับซ้อน โดยมีต้นกำเนิดมาจากการพัฒนาอุปกรณ์ประมวลผลข้อมูลที่ตั้งโปรแกรมได้ ดังนั้นจึงไม่น่าแปลกใจที่จำนวนโมเดลของพวกเขาในขณะนี้ถึงมากกว่า 50 แต่โมเดลหลักถือเป็นลำดับชั้นเชิงสัมพันธ์และเครือข่ายซึ่งยังคงใช้กันอย่างแพร่หลายในทางปฏิบัติ พวกเขาคืออะไร?
ฐานข้อมูลแบบลำดับชั้นมีลักษณะเหมือนต้นไม้โครงสร้างและประกอบด้วยข้อมูลระดับต่าง ๆ ระหว่างที่มีการเชื่อมต่อ โมเดลเครือข่าย DB เป็นรูปแบบที่ซับซ้อนมากขึ้น โครงสร้างของมันคล้ายกับแบบลำดับชั้น และโครงร่างถูกขยายและปรับปรุง ความแตกต่างระหว่างข้อมูลเหล่านี้คือข้อมูลทางพันธุกรรมของแบบจำลองลำดับชั้นสามารถเชื่อมโยงกับบรรพบุรุษได้เพียงคนเดียว ในขณะที่ข้อมูลเครือข่ายสามารถมีได้หลายรุ่น โครงสร้างของฐานข้อมูลเชิงสัมพันธ์นั้นซับซ้อนกว่ามาก จึงควรวิเคราะห์ให้ละเอียดยิ่งขึ้น
แนวคิดพื้นฐานของฐานข้อมูลเชิงสัมพันธ์
รุ่นนี้ได้รับการพัฒนาในปี 1970โดย Edgar Codd วิทยาศาสตรดุษฎีบัณฑิต เป็นตารางที่มีโครงสร้างทางตรรกะพร้อมช่องที่อธิบายข้อมูล ความสัมพันธ์ระหว่างกัน การดำเนินการที่ดำเนินการ และที่สำคัญที่สุดคือกฎที่รับประกันความสมบูรณ์ของข้อมูล เหตุใดโมเดลจึงเรียกว่าเชิงสัมพันธ์ มันขึ้นอยู่กับความสัมพันธ์ (จาก lat. Relatio) ระหว่างข้อมูล มีคำจำกัดความมากมายสำหรับฐานข้อมูลประเภทนี้ ตารางเชิงสัมพันธ์ที่มีข้อมูลสามารถจัดระเบียบและประมวลผลได้ง่ายกว่าในเครือข่ายหรือแบบจำลองลำดับชั้น สิ่งนี้สามารถทำได้อย่างไร? การรู้คุณสมบัติโครงสร้างของแบบจำลองและคุณสมบัติของตารางเชิงสัมพันธ์ก็เพียงพอแล้ว
กระบวนการสร้างแบบจำลองและวาดองค์ประกอบหลัก
ในการสร้าง DBMS ของคุณเอง คุณควรใช้หนึ่งในเครื่องมือสร้างแบบจำลอง คิดเกี่ยวกับข้อมูลที่คุณต้องการทำงานด้วย ออกแบบตารางและความสัมพันธ์แบบเดี่ยวและเชิงสัมพันธ์เชิงสัมพันธ์ระหว่างข้อมูล กรอกข้อมูลในเซลล์เอนทิตี และตั้งค่าคีย์หลักและคีย์นอก
การสร้างแบบจำลองตารางและการออกแบบเชิงสัมพันธ์ฐานข้อมูลถูกสร้างโดยใช้เครื่องมือฟรี เช่น Workbench, PhpMyAdmin, Case Studio, dbForge Studio หลังจากการออกแบบโดยละเอียดแล้ว คุณควรบันทึกโมเดลเชิงสัมพันธ์พร้อมกราฟิกและแปลเป็นโค้ด SQL สำเร็จรูป ในขั้นตอนนี้ คุณสามารถเริ่มทำงานกับการเรียงลำดับข้อมูล การประมวลผล และการจัดระบบได้
ลักษณะ โครงสร้าง และข้อกำหนดที่เกี่ยวข้องกับแบบจำลองเชิงสัมพันธ์
แหล่งที่มาแต่ละแห่งอธิบายองค์ประกอบต่างๆ ด้วยวิธีของตนเอง ดังนั้นเพื่อให้เกิดความสับสนน้อยลง ข้าพเจ้าจึงอยากบอกใบ้เล็กน้อย:
- ป้ายความสัมพันธ์ = เอนทิตี;
- เลย์เอาต์ = คุณลักษณะ = ชื่อฟิลด์ = ส่วนหัวของคอลัมน์เอนทิตี;
- อินสแตนซ์เอนทิตี = ทูเพิล = บันทึก = แถวของตาราง;
- ค่าแอตทริบิวต์ = เซลล์เอนทิตี = ฟิลด์
เพื่อให้ได้คุณสมบัติของฐานข้อมูลเชิงสัมพันธ์ คุณจำเป็นต้องรู้ว่าส่วนประกอบพื้นฐานประกอบด้วยอะไรและมีไว้เพื่ออะไร
- แก่นแท้.สามารถมีหนึ่งตารางในฐานข้อมูลเชิงสัมพันธ์ หรืออาจมีทั้งชุดของตารางที่แสดงลักษณะของออบเจกต์ที่อธิบายไว้เนื่องจากข้อมูลที่จัดเก็บไว้ในนั้น พวกเขามีฟิลด์จำนวนคงที่และจำนวนตัวแปรของเร็กคอร์ด ตารางแบบจำลองฐานข้อมูลเชิงสัมพันธ์ประกอบด้วยสตริง คุณลักษณะ และโครงร่าง
- บันทึก - จำนวนตัวแปรของบรรทัดที่แสดงข้อมูลที่อธิบายลักษณะของวัตถุ ระเบียนจะถูกกำหนดหมายเลขโดยอัตโนมัติโดยระบบ
- แอตทริบิวต์คือข้อมูลที่แสดงคำอธิบายของคอลัมน์เอนทิตี
- สนาม. แสดงถึงคอลัมน์เอนทิตี หมายเลขของพวกเขาเป็นค่าคงที่ซึ่งกำหนดไว้ระหว่างการสร้างหรือแก้ไขตาราง
ตอนนี้ เมื่อทราบองค์ประกอบที่เป็นส่วนประกอบของตารางแล้ว คุณสามารถไปที่คุณสมบัติของโมเดลเชิงสัมพันธ์ของฐานข้อมูลได้:
- เอนทิตีฐานข้อมูลเชิงสัมพันธ์เป็นแบบสองมิติ ด้วยคุณสมบัตินี้ ทำให้ง่ายต่อการดำเนินการทางตรรกะและคณิตศาสตร์ต่างๆ กับพวกมัน
- ลำดับของค่าของแอตทริบิวต์และระเบียนในตารางเชิงสัมพันธ์สามารถกำหนดเองได้
- คอลัมน์ภายในหนึ่งตารางเชิงสัมพันธ์ต้องมีชื่อเฉพาะของตัวเอง
- ข้อมูลทั้งหมดในคอลัมน์เอนทิตีมีความยาวคงที่และเป็นประเภทเดียวกัน
- บันทึกใด ๆ ถือเป็นรายการข้อมูลหนึ่งรายการในสาระสำคัญ
- องค์ประกอบที่เป็นส่วนประกอบของสตริงไม่ซ้ำกัน ไม่มีแถวที่ซ้ำกันในเอนทิตีเชิงสัมพันธ์
ตามคุณสมบัติของ DBMS เชิงสัมพันธ์ เป็นที่ชัดเจนว่าค่าแอตทริบิวต์ต้องมีประเภทและความยาวเท่ากัน พิจารณาคุณสมบัติของค่าแอตทริบิวต์
ลักษณะสำคัญของเขตข้อมูลฐานข้อมูลเชิงสัมพันธ์
ชื่อช่องต้องไม่ซ้ำกันภายในเอนทิตีหนึ่ง แอตทริบิวต์ฐานข้อมูลเชิงสัมพันธ์หรือประเภทฟิลด์อธิบายว่าข้อมูลประเภทใดถูกเก็บไว้ในฟิลด์เอนทิตี ฟิลด์ฐานข้อมูลเชิงสัมพันธ์ต้องมีขนาดคงที่ในตัวอักษร พารามิเตอร์และรูปแบบของค่าแอตทริบิวต์เป็นตัวกำหนดว่าข้อมูลจะได้รับการแก้ไขอย่างไร นอกจากนี้ยังมีสิ่งเช่น "หน้ากาก" หรือ "รูปแบบการป้อนข้อมูล" มีวัตถุประสงค์เพื่อกำหนดการกำหนดค่าของการป้อนข้อมูลลงในค่าแอตทริบิวต์ จำเป็นอย่างยิ่งที่จะต้องแสดงข้อความแสดงข้อผิดพลาดเมื่อเขียนประเภทข้อมูลที่ไม่ถูกต้องในฟิลด์ นอกจากนี้ ยังมีข้อจำกัดบางประการเกี่ยวกับองค์ประกอบของฟิลด์ - เงื่อนไขสำหรับการตรวจสอบความถูกต้องและการป้อนข้อมูลที่ปราศจากข้อผิดพลาด มีค่าแอตทริบิวต์ที่จำเป็นบางอย่างที่ต้องเติมข้อมูลให้ชัดเจน สตริงแอตทริบิวต์บางรายการสามารถเติมค่า NULL ได้ อนุญาตให้ป้อนข้อมูลว่างลงในแอตทริบิวต์ฟิลด์ได้ เช่นเดียวกับการแจ้งเตือนข้อผิดพลาด มีค่าที่ระบบกรอกโดยอัตโนมัติ - นี่คือข้อมูลเริ่มต้น ฟิลด์ที่จัดทำดัชนีมีวัตถุประสงค์เพื่อเพิ่มความเร็วในการค้นหาข้อมูลใดๆ
สคีมาตารางฐานข้อมูลเชิงสัมพันธ์ 2 มิติ
ชื่อแอตทริบิวต์ 1 | ชื่อแอตทริบิวต์2 | ชื่อแอตทริบิวต์3 | ชื่อแอตทริบิวต์4 | ชื่อแอตทริบิวต์ 5 |
รายการ_1_1 | รายการ_1_2 | รายการ_1_3 | รายการ_1_4 | รายการ_1_5 |
รายการ_2_1 | รายการ_2_2 | รายการ_2_3 | รายการ_2_4 | รายการ_2_5 |
รายการ_3_1 | รายการ_3_2 | รายการ_3_3 | รายการ_3_4 | รายการ_3_5 |
เพื่อความเข้าใจโดยละเอียดเกี่ยวกับระบบควบคุมโมเดลที่มี SQL วิธีที่ดีที่สุดในการดูสคีมาคือตัวอย่าง เรารู้แล้วว่าฐานข้อมูลเชิงสัมพันธ์คืออะไร ระเบียนในแต่ละตารางคือรายการข้อมูลหนึ่งรายการ เพื่อป้องกันความซ้ำซ้อนของข้อมูล จำเป็นต้องดำเนินการทำให้เป็นมาตรฐาน
กฎพื้นฐานสำหรับการทำให้เอนทิตีเชิงสัมพันธ์เป็นปกติ
1. ค่าของชื่อฟิลด์สำหรับตารางเชิงสัมพันธ์ต้องไม่ซ้ำกัน หนึ่งเดียว (รูปแบบปกติแรกคือ 1NF)
2. สำหรับตารางที่ถูกลดขนาดเป็น 1NF แล้ว ชื่อของคอลัมน์ที่ไม่ระบุชื่อต้องขึ้นอยู่กับตัวระบุเฉพาะของตาราง (2NF)
3. สำหรับทั้งตารางที่อยู่ใน 2NF แล้ว แต่ละฟิลด์ที่ไม่ระบุตัวตนไม่สามารถขึ้นอยู่กับองค์ประกอบของค่าอื่นที่ไม่รู้จัก (เอนทิตี 3NF)
ฐานข้อมูล: ความสัมพันธ์เชิงสัมพันธ์ระหว่างตาราง
ความสัมพันธ์ของตารางเชิงสัมพันธ์มี 2 ประเภทหลัก:
- หนึ่ง-หลาย.เกิดขึ้นเมื่อหนึ่งเร็กคอร์ดหลักของตาราง # 1 ตรงกับหลายอินสแตนซ์ของเอนทิตีที่สอง ไอคอนรูปกุญแจที่ปลายด้านหนึ่งของเส้นที่ลากแสดงว่าเอนทิตีอยู่ด้าน "หนึ่ง" ปลายอีกด้านหนึ่งของเส้นมักถูกทำเครื่องหมายด้วยสัญลักษณ์อินฟินิตี้
- ความสัมพันธ์แบบ "กลุ่ม-กลุ่ม" จะเกิดขึ้นในกรณีที่มีการโต้ตอบเชิงตรรกะที่ชัดเจนระหว่างหลายแถวของเอนทิตีหนึ่งกับจำนวนเรกคอร์ดในอีกตารางหนึ่ง
- ถ้าระหว่างสองเอนทิตีมีการต่อกัน "หนึ่งต่อหนึ่ง" ซึ่งหมายความว่าตัวระบุหลักของตารางหนึ่งมีอยู่ในเอนทิตีอื่นจากนั้นตารางใดตารางหนึ่งควรถูกลบออกซึ่งไม่จำเป็น แต่บางครั้ง ด้วยเหตุผลด้านความปลอดภัยเพียงอย่างเดียว โปรแกรมเมอร์ก็จงใจแยกทั้งสองหน่วยงานออกจากกัน ดังนั้นตามสมมุติฐานความสัมพันธ์แบบหนึ่งต่อหนึ่งอาจมีอยู่
การมีอยู่ของคีย์ในฐานข้อมูลเชิงสัมพันธ์
กำหนดคีย์หลักและรองความสัมพันธ์ฐานข้อมูลที่อาจเกิดขึ้น ลิงก์เชิงสัมพันธ์ของแบบจำลองข้อมูลสามารถมีได้เพียงคีย์เดียว และนี่จะเป็นคีย์หลัก เขาชอบอะไร? คีย์หลักคือคอลัมน์เอนทิตีหรือชุดของแอตทริบิวต์ที่ช่วยให้คุณเข้าถึงข้อมูลสำหรับแถวใดแถวหนึ่งได้ ต้องไม่ซ้ำกัน ไม่ซ้ำกัน และฟิลด์ต้องไม่มีค่าว่าง หากคีย์หลักประกอบด้วยแอตทริบิวต์เดียวเท่านั้น จะเรียกว่า ง่าย มิฉะนั้น จะเป็นส่วนประกอบ
นอกจากคีย์หลักแล้วยังมี external(กุญแจต่างประเทศ). หลายคนไม่เข้าใจความแตกต่างระหว่างพวกเขา ลองดูรายละเอียดเพิ่มเติมโดยใช้ตัวอย่าง จึงมีโต๊ะอยู่ 2 โต๊ะ คือ "สำนักงานคณบดี" และ "นักศึกษา" เอนทิตี "สำนักงานของคณบดี" ประกอบด้วยฟิลด์: "รหัสนักศึกษา", "ชื่อเต็ม" และ "กลุ่ม" ตาราง "นักเรียน" มีค่าแอตทริบิวต์เช่น "ชื่อ" "กลุ่ม" และ "เฉลี่ย" เนื่องจากรหัสนักศึกษาต้องไม่ซ้ำกันสำหรับนักเรียนหลายคน ช่องนี้จึงเป็นคีย์หลัก "ชื่อเต็ม" และ "กลุ่ม" จากตาราง "นักเรียน" อาจเหมือนกันสำหรับหลายคน โดยอ้างอิงจากหมายเลขประจำตัวนักศึกษาจากหน่วยงาน "สำนักงานคณบดี" ดังนั้นจึงสามารถใช้เป็นคีย์ต่างประเทศได้
ตัวอย่างแบบจำลองฐานข้อมูลเชิงสัมพันธ์
เพื่อความชัดเจน เราจะยกตัวอย่างง่ายๆ ของโมเดลฐานข้อมูลเชิงสัมพันธ์ที่ประกอบด้วยสองเอนทิตี มีโต๊ะชื่อว่า "ดีเนอรี"
สาระสำคัญ "ดีนเนอรี่" | ||
รหัสนักศึกษา | ชื่อเต็ม | กลุ่ม |
111 | Ivanov Oleg Petrovich | IN-41 |
222 | Ilya Lazarev | IN-72 |
333 | Konoplev Petr Vasilievich | IN-41 |
444 | Kushnereva Natalia Igorevna | IN-72 |
คุณต้องเชื่อมต่อเพื่อรับฐานข้อมูลเชิงสัมพันธ์ที่เต็มเปี่ยม บันทึก "IN-41" เช่น "IN-72" อาจมีอยู่ในป้าย "สำนักงานคณบดี" มากกว่าหนึ่งครั้ง และนามสกุล ชื่อจริง และนามสกุลของนักเรียนในบางกรณีอาจตรงกัน ดังนั้นฟิลด์เหล่านี้จึงไม่สามารถ ทำคีย์หลัก มาแสดงเอนทิตี "นักเรียน" กันเถอะ
ตาราง "นักเรียน" | |||
ชื่อเต็ม | กลุ่ม | เครื่องหมายเฉลี่ย | โทรศัพท์ |
Ivanov Oleg Petrovich | IN-41 | 3,0 | 2-27-36 |
Ilya Lazarev | IN-72 | 3,8 | 2-36-82 |
Konoplev Petr Vasilievich | IN-41 | 3,9 | 2-54-78 |
Kushnereva Natalia Igorevna | IN-72 | 4,7 | 2-65-25 |
อย่างที่เราเห็น ประเภทของเขตข้อมูลในฐานข้อมูลเชิงสัมพันธ์แตกต่างอย่างสิ้นเชิง มีทั้งรายการดิจิทัลและสัญลักษณ์ ดังนั้นควรระบุค่าของจำนวนเต็ม, ถ่าน, vachar, วันที่และอื่น ๆ ในการตั้งค่าแอตทริบิวต์ ในตาราง "สำนักงานคณบดี" เฉพาะรหัสนักศึกษาเท่านั้นที่เป็นค่าที่ไม่ซ้ำกัน ฟิลด์นี้สามารถใช้เป็นคีย์หลักได้ ชื่อ กลุ่ม และหมายเลขโทรศัพท์จากหน่วยงาน "นักศึกษา" สามารถใช้เป็นรหัสต่างประเทศที่อ้างอิงถึงรหัสนักศึกษาได้ สร้างการเชื่อมต่อแล้ว นี่คือตัวอย่างของรูปแบบความสัมพันธ์แบบหนึ่งต่อหนึ่ง ตามสมมุติฐานตารางหนึ่งฟุ่มเฟือยพวกเขาสามารถรวมเป็นเอนทิตีเดียวได้อย่างง่ายดาย เพื่อป้องกันไม่ให้หมายเลขประจำตัวนักเรียนเป็นที่รู้จักโดยทั่วไป การมีอยู่ของสองตารางจึงค่อนข้างสมจริง