เบื้องต้น
ความหมายของรูปแบบปกติ (ซึ่งจากการนำเสนอของ“ปกติต่อไปของฐานข้อมูลเชิงสัมพันธ์รุ่น” ในปี 1971 เป็นที่รู้จักกันเป็นรูปแบบปกติแรก ) และความหมายของกระบวนทัศน์เชิงสัมพันธ์ตัวเองถูกตีพิมพ์ในปี 1970 ในกระดาษทางวิทยาศาสตร์ที่ให้แข็งแกร่ง รากฐานสำหรับการปฏิบัติของการบริหารฐานข้อมูลเช่นที่ระดับ“A สัมพันธ์รูปแบบของข้อมูลขนาดใหญ่ที่ใช้ร่วมกันข้อมูลธนาคาร” (RM สำหรับความกะทัดรัด) ที่สร้างขึ้นโดยดร. EF Coddที่เป็นผู้รับรางวัลทัวริงและผู้มีอำนาจในเรื่องเกี่ยวกับกรอบความสัมพันธ์กับ
ใช่มีคำอธิบายการตีความการแสดงความเบี่ยงเบนและความคิดเห็นมากมายเกี่ยวกับข้อความของ Dr. Codd แต่ฉันชอบที่จะยึดติดกับต้นฉบับและฉันขอแนะนำให้คุณวิเคราะห์ด้วยตัวเองเพื่อที่จะสามารถสรุปข้อสรุปของคุณเอง
ฉันไม่เข้าใจ RM อย่างครบถ้วน แต่สิ่งที่ฉันเข้าใจจะทำให้ฉันเห็นคุณค่าของความเป็นเลิศวิสัยทัศน์ความตั้งใจและขอบเขตและแม้ว่าทศวรรษต่อ ๆ มาคน ๆ หนึ่งจะทราบได้ว่ามันมีความคลาดเคลื่อนเล็กน้อยเพียงเล็กน้อยพวกเขาไม่ลด ไม่ว่าในทางใดอัจฉริยะและความสง่างามของมัน ในสาขานั้น RM ได้ทำการทดสอบเวลาในแบบที่ไม่เหมือนใครและยังไม่มีใครเทียบได้
การเน้นย้ำถึงความไม่ถูกต้องดังกล่าวจะเป็นการใช้คำที่ไม่เป็นธรรมเพราะเมื่อมองจากระยะไกลวัสดุน้ำเชื้อนี้ต้องการการขัดเกลาและการขยายเล็กน้อย แต่ร่างกายหลักของงานคือหินที่แข็งจาก ความคิดอย่างมาก (และแน่นอนดร. Codd ทำส่วนใหญ่ - ไม่ใช่ทั้งหมดของการปรับแต่งและขยายตัวเอง)
ฉันทำการอ่าน RM อีกครั้งอย่างต่อเนื่องเพื่อเสริมสร้างความเข้าใจของฉันเกี่ยวกับแหล่งความรู้ที่ยอดเยี่ยมนี้ วัตถุประสงค์คือการยืนบนไหล่ของยักษ์
ความสัมพันธ์และตาราง
เป็นสิ่งสำคัญที่จะต้องทราบว่าในขณะที่ความสัมพันธ์เป็นทรัพยากรที่เป็นนามธรรมดร. Codd มองเห็นยูทิลิตี้ในการเป็นตัวแทนของพวกเขาในรูปแบบตาราง (ตอนแรกเขาใช้คำว่า "การเป็นตัวแทนอาร์เรย์" แต่ต่อมาก็ใช้ ผู้ใช้ผู้ออกแบบและผู้ดูแลระบบของฐานข้อมูลเชิงสัมพันธ์สามารถเข้าถึงพวกเขาในลักษณะที่คุ้นเคยหรือเป็นรูปธรรมมากขึ้น ดังนั้นภายในบริบทของการใช้งาน RDB จะสามารถใช้ตารางเป็นชวเลขสำหรับความสัมพันธ์ได้ตราบใดที่ตารางดังกล่าวหมายถึงความสัมพันธ์ที่แท้จริง คุณลักษณะนี้ - ชัดเจนเพียงพอ - ค่อนข้างสำคัญเพราะก่อนที่จะประเมินว่าตารางแสดงถึงความสัมพันธ์ที่สอดคล้องกับรูปแบบปกติแรก (1NF) หรือไม่นั้นจะต้องแสดงถึงความสัมพันธ์ที่แน่นอน
RM มีคุณสมบัติตามธรรมชาติที่ตารางจะต้องตรวจสอบว่าจริงแล้วมันแสดงถึงความสัมพันธ์หรือไม่ แต่ฉันจะเสนอการตีความอย่างไม่เป็นทางการและไม่โอ้อวดเกี่ยวกับพวกเขาที่นี่ (อีกอันใช่แล้ว!):
- มันจะต้องมีชื่อ (แต่ละความสัมพันธ์เฉพาะในโครงสร้างฐานข้อมูลจะต้องแตกต่างจากส่วนที่เหลือ)
- แต่ละแถวของมันจะต้องแสดงถึงหนึ่งtupleของความสัมพันธ์ที่เกี่ยวข้อง
- การสั่งซื้อของแถวของมันไม่สำคัญเลย
- แต่ละคอลัมน์ของมันจะต้องมีชื่อที่หมายถึงความหมายของหนึ่งโดเมนของความสัมพันธ์ที่เกี่ยวข้องและชื่อดังกล่าวจะต้องแตกต่างจากชื่อของส่วนที่เหลือของคอลัมน์ของตาราง (คอลัมน์จะต้องแตกต่างกันโดยเฉพาะและจะต้อง ความหมายที่แตกต่างและใช่บทบาทของผู้สร้างแบบจำลองฐานข้อมูลและผู้เชี่ยวชาญทางธุรกิจในการกำหนดโดเมนที่มีนัยสำคัญแต่ละโดเมนด้วยความแม่นยำเป็นสิ่งสำคัญยิ่ง)
- เพื่อคอลัมน์ที่มีความสำคัญไม่
- แถวทั้งหมดต้องมีจำนวนคอลัมน์เท่ากัน
- ต้องมีอย่างน้อยหนึ่งคอลัมน์หรือหนึ่งคอลัมน์รวมกันที่ระบุเอกลักษณ์ของสิ่งอันดับแต่ละภาพผ่านแถว ด้วยวิธีนี้แถวทั้งหมดจะต้องแตกต่างกัน (ใช่นี่เป็นการเน้นความสำคัญของการมีการประกาศ KEY อย่างน้อยหนึ่งครั้งและเมื่อมี KEY สองตัวหรือมากกว่านั้นควรจะนิยาม KEY เป็นหลักโดยใช้เหตุผลเชิงปฏิบัติในขณะที่ส่วนที่เหลือสามารถ ถือว่าเป็นทางเลือก แต่ใช่ก่อนที่จะทำการตัดสินใจ KEYs แต่ละตัวจะเป็น "ตัวเลือก" สำหรับคำจำกัดความเป็นแบบหลัก)
การมีตารางที่ในความเป็นจริงหมายถึงความสัมพันธ์มีความสำคัญอย่างยิ่งเมื่อมันผ่านการดำเนินการจัดการแบบเชิงสัมพันธ์แล้วผลที่ได้คืออีกครั้งตารางที่แสดงถึงความสัมพันธ์ ในลักษณะนี้พฤติกรรมของตารางดังกล่าวสามารถคาดการณ์ได้
โดเมนอะตอม (คอลัมน์)
ในส่วนแรกของ RM ดร. Codd นำเสนอตัวอย่างความสัมพันธ์หลายประการเพื่อแนะนำแนวคิดบางอย่าง ดังนั้นเพื่อให้เข้าใจความหมายของโดเมนอะตอมให้เราเริ่มต้นด้วยข้อความที่ตัดตอนมาต่อไปนี้จาก RM ซึ่งมีรายละเอียดบางประเด็นที่เกี่ยวข้อง:
จนถึงตอนนี้เราได้พูดถึงตัวอย่างของความสัมพันธ์ที่กำหนดไว้ในโดเมนง่าย ๆ - โดเมนที่มีองค์ประกอบคือค่าอะตอมมิก (nondecomposable) ค่า nonatomic สามารถพูดคุยภายในกรอบความสัมพันธ์ ดังนั้นบางโดเมนอาจมีความสัมพันธ์เป็นองค์ประกอบ ความสัมพันธ์เหล่านี้อาจถูกกำหนดบนโดเมนที่ไม่ซับซ้อนและอื่น ๆ
ด้วยวิธีนี้เราสามารถพูดได้ว่าความสัมพันธ์ที่อธิบายข้างต้นแต่ละอย่างพอดีในหนึ่งในสองชนิดกล่าวว่าชนิด Aหรือชนิด B :
ประเภทกลุ่มเท่านั้นความสัมพันธ์ (ตาราง) ที่มีโครงสร้างด้วยโดเมน (คอลัมน์) ที่มีค่าง่าย ๆโดยเฉพาะในสิ่งอันดับ (แถว) ของพวกเขาทุกคนนั่นคือโดเมน (คอลัมน์) ดังกล่าวไม่มีความสัมพันธ์ (ตาราง) เป็นค่าซึ่งใน บริบทนี้หมายความว่าค่าเหล่านี้เป็นอะตอมมิกเนื่องจากไม่สามารถย่อยสลายอย่างต่อเนื่องในความสัมพันธ์ใหม่ (ตาราง) ดังนั้นความสัมพันธ์ของคลาสนี้จึงเป็นสิ่งที่ถูกทำให้เป็นมาตรฐานคือพวกมันสอดคล้องกับ 1NF รูปแบบของพวกเขาเป็นที่พึงปรารถนา
ชนิด Bจะถูกรวมโดยความสัมพันธ์ (ตาราง) ที่มีหนึ่งโดเมนขึ้นไป (คอลัมน์) ที่เก็บความสัมพันธ์เป็นค่าในแต่ละ tuple (แถว) และนั่นหมายถึงว่าค่าดังกล่าวเป็นnonatomicเนื่องจากสามารถแบ่งออกเป็นความสัมพันธ์ใหม่ได้ในภายหลัง (ตาราง) คือมีการแยกออก ดังนั้นความสัมพันธ์ของการเรียงลำดับนี้จึงผิดปกติกล่าวคือพวกเขาละเมิด 1NF พวกเขาอยู่ในรูปแบบที่ไม่พึงประสงค์
normalization
Dr. Codd แนะนำส่วนเกี่ยวกับการทำให้เป็นมาตรฐานใน RM ด้วยย่อหน้าต่อไปนี้:
ความสัมพันธ์ที่มีโดเมนทั้งหมดง่ายสามารถแสดงในการจัดเก็บโดยอาร์เรย์คอลัมน์สองมิติที่เป็นเนื้อเดียวกันของชนิดที่กล่าวถึงข้างต้น โครงสร้างข้อมูลที่ซับซ้อนบางอย่างจำเป็นสำหรับความสัมพันธ์กับโดเมนที่ไม่ซับซ้อนหนึ่งโดเมนหรือมากกว่า ด้วยเหตุนี้ (และคนอื่น ๆ ที่อ้างถึงด้านล่าง) ความเป็นไปได้ในการกำจัดโดเมนที่ไม่ซับซ้อนดูเหมือนจะคุ้มค่ากับการตรวจสอบ! ในความเป็นจริงมีขั้นตอนการกำจัดที่ง่ายมากซึ่งเราจะเรียกว่าการทำให้เป็นมาตรฐาน
จากนั้นเขาก็ไปแสดง:
กลุ่มของความสัมพันธ์ที่ไม่มีความผิดปกติ (มีโดเมนที่มีความสัมพันธ์เป็นค่ากล่าวคือพวกมันไม่ใช่เชิงอะตอมคือพวกมันไม่ใช่แบบง่าย)
กลุ่มของความสัมพันธ์ที่ถูกทำให้เป็นมาตรฐาน (กล่าวคือกลุ่มที่ได้รับการสลายตัวคือกลุ่มที่มีค่าความสัมพันธ์ที่ถูกแบ่งย่อยออกเป็นกลุ่มธรรมดาซึ่งหมายถึงพวกเขาเป็นอะตอม)
จากนั้นเขาก็อธิบายขั้นตอนการรับความสัมพันธ์ปกติจากสิ่งที่ไม่ปกติ
ในแง่นี้ความสัมพันธ์ที่เขาใช้เพื่อแสดงแบบฝึกหัดการฟื้นฟูและคำอธิบายการออกกำลังกายนั้นค่อนข้างชัดเจนและฉันขอแนะนำให้คุณวิเคราะห์ด้วยตัวเองอีกครั้ง (และฉันหวังว่าสิ่งนี้จะกระตุ้นให้ผู้อ่านบางคนมีส่วนร่วมด้วย)
พอเขาระบุ:
การดำเนินการเพิ่มเติมของชนิด normalizing เป็นไปได้ สิ่งเหล่านี้ไม่ได้กล่าวถึงในบทความนี้
และการดำเนินการดังกล่าวกล่าวคือรูปแบบปกติที่สองและสาม (2NF และ 3NF) มีรายละเอียดจริง ๆ ใน“ การทำให้ปกติของรูปแบบฐานข้อมูลเชิงสัมพันธ์ต่อไป” และดังกล่าวข้างต้นหลังจากการนำเสนอ (และการพิมพ์และสิ่งพิมพ์ในภายหลัง) ที่เดิมแบบปกติกลายเป็นที่รู้จักเป็นรูปแบบปกติแรก
ในฐานะที่เป็นผู้ประกอบการสามารถสังเกตมีความสัมพันธ์ unnormalized (ตาราง) แนะนำ (เกือบตลอดเวลาที่ไม่จำเป็น) บิดเข้าสู่การใช้งาน RDB
ความสัมพันธ์ที่สอดคล้องกับ 1NF ช่วยลดคำจำกัดความของข้อ จำกัด และการดำเนินการจัดการข้อมูลซึ่งสามารถนำไปใช้โดย sublanguage ข้อมูลที่มีความซับซ้อนน้อยกว่าที่จำเป็นสำหรับความสัมพันธ์ที่ไม่ปกติ (ตาราง) เนื่องจาก Dr. Codd ชี้ให้เห็นในบรรทัดต่อไปนี้:
การนำแบบจำลองเชิงสัมพันธ์ของข้อมูลตามที่อธิบายไว้ข้างต้นอนุญาตให้มีการพัฒนา sublanguage ข้อมูลสากลที่ยึดตามแคลคูลัสเพรดิเคตที่ใช้ แคลคูลัสภาคแสดงคำสั่งแรกพอเพียงถ้าคอลเลกชันของความสัมพันธ์อยู่ในรูปแบบปกติ ภาษาดังกล่าวจะให้ปทัฏฐานของพลังภาษาสำหรับภาษาข้อมูลอื่น ๆ ที่เสนอทั้งหมดและจะเป็นผู้สมัครที่ดีสำหรับการฝัง (ด้วยการปรับเปลี่ยนไวยากรณ์ที่เหมาะสม) ในภาษาโฮสต์ที่หลากหลาย (การเขียนโปรแกรมคำสั่งหรือปัญหาที่มุ่งเน้น) [ ... ]
[ ... ]
ความเป็นสากลของ sublanguage ของข้อมูลอยู่ในความสามารถในการอธิบาย (ไม่ใช่ความสามารถในการคำนวณ)
ความสับสน
จากจุดของฉันในมุมมองของความสับสนเกิดขึ้นได้เนื่องจาก (ก) ส่วนเกินดังกล่าวของการตีความคำอธิบาย ฯลฯ เกี่ยวกับ 1NF และRM ตัวเองและเพราะ (ข) ความพยายามต่อไปเพื่อredefine 1NF ว่ารัฐที่มีความสัมพันธ์ กับโดเมนที่เก็บค่าที่ในทางกลับกันความสัมพันธ์สอดคล้องกับ 1NF ตราบใดที่พวกเขาเป็นหนึ่งค่าเดียวสำหรับแต่ละ tuple ที่สอดคล้องกัน
ฉันใช้เวลากับคะแนนอื่น ๆ ของคุณ
ไม่ควรมีความสัมพันธ์ใด ๆ ระหว่างแถวนอกจากที่สอดคล้องกับส่วนหัวเดียวกัน
ฉันไม่แน่ใจว่าฉันเข้าใจเจตนาของข้อความนั้นอย่างถูกต้องหรือไม่ แต่นอกเหนือจากการปฏิบัติตามส่วนหัวเดียวกันจะต้องมีการเชื่อมต่อระหว่างแถว (tuples) ของความสัมพันธ์ (ตาราง) เนื่องจากแต่ละคนควรมีการยืนยันเกี่ยวกับ การเกิดขึ้นเฉพาะของประเภทนิติบุคคลที่เฉพาะเจาะจง (กำหนดในแง่ของบริบททางธุรกิจที่น่าสนใจ) ที่ความสัมพันธ์ (ตาราง) ควรจะเป็นตัวแทน
ไม่ควรมีความสัมพันธ์ระหว่างคอลัมน์ แต่ฉันเชื่อว่าเป็นเรื่องของรูปแบบปกติที่สูงกว่า
ฉันไม่ทราบว่าฉันตีความความหมายของคำสั่งนั้นถูกต้องหรือไม่ แต่ในความเป็นจริงและตามการตอบกลับของฉันในแง่มุมก่อนหน้านี้จะต้องมีความสัมพันธ์ระหว่างโดเมน (คอลัมน์) ของความสัมพันธ์ (ตาราง) ด้วย ซึ่งเป็นเหตุผลที่แม่นยำว่าเป็นความสัมพันธ์ (โครงสร้างที่สำคัญของโมเดลเชิงสัมพันธ์และการประยุกต์ใช้ RDB ที่เป็นรูปธรรม)
เพื่อเป็นตัวอย่างโดยคำนึงถึงความสัมพันธ์เชิงสมมติฐาน (ตาราง)
Salary (PersonNumber, EffectiveDate, Amount)
tuple (แถว)
จะสื่อความหมาย
The Salary payed to the Person identified by PersonNumber x, on EffectiveDate y corresponds to the Amount of z
ดังนั้นแต่ละ tuple (แถว) ของSalary
ความสัมพันธ์ (ตาราง) จะต้องพอดีกับโครงสร้างของการยืนยันที่แสดงด้านบนและความแตกต่างจะเป็นการแทนที่ค่าโดเมน (คอลัมน์) ที่เกี่ยวข้อง แต่ต้องมีความสัมพันธ์ระหว่าง (a) Salary
โดเมนทั้งหมด(คอลัมน์) และระหว่าง (b) ค่าที่เกี่ยวข้องทั้งหมดที่เกี่ยวข้องกับแต่ละ tuple (แถว) ความสัมพันธ์ดังกล่าวเป็นสิ่งที่ขาดไม่ได้
สูงกว่ารูปแบบปกติ (2NF และ 3NF) มีประโยชน์ในการกำจัดการพึ่งพาการทำงานระหว่างโดเมน (คอลัมน์) ของความสัมพันธ์ (ตาราง) พวกเขาให้ความช่วยเหลือในการหลีกเลี่ยงที่ไม่พึงประสงค์ การเชื่อมต่อระหว่างโดเมน (คอลัมน์) เป็นกล่าวที่ไม่พึงประสงค์การเชื่อมต่อช่วยให้การแนะนำของความผิดปกติของการปรับปรุง . ทั้ง 2NF และ 3NF มีประโยชน์ในการทดสอบความสมบูรณ์ของโครงสร้างของความสัมพันธ์ (ตาราง) ในการนำ RDB มาใช้