ทำไมคำว่า "สัมพันธ์ (อัล)"?


26

ในภาษาอังกฤษเราอาจพูดถึงความสัมพันธ์ระหว่างพูดบ๊อบกับทิม บางทีพวกเขาเป็นลูกพี่ลูกน้อง คำว่า "ความสัมพันธ์" ในบริบทนี้สมเหตุสมผลสำหรับฉัน

ในบริบทของฐานข้อมูลเชิงสัมพันธ์ฉันเข้าใจว่าคำนี้หมายถึงอะไร แต่ฉันไม่เข้าใจว่าทำไมจึงใช้ ฉันเข้าใจว่าทำไมการใช้งานจึงช่วยให้ฉันเข้าใจสนามได้ดีขึ้นดังนั้นฉันจึงอยากเข้าใจว่าทำไมจึงมีการใช้งาน

  • ยกตัวอย่างเช่นทำไมบุคคลจึงถูกมองว่าเป็น "ความสัมพันธ์"? ในภาษาอังกฤษความสัมพันธ์เป็นคำนามที่อธิบายถึงความสัมพันธ์สองหน่วยงาน มันไม่ได้หมายถึงเอนทิตีเอง ในบริบทของฐานข้อมูลเชิงสัมพันธ์ "ความสัมพันธ์" หมายถึงเอนทิตีเอง ทำไม?
  • ฉันเข้าใจว่าโมเดลเชิงสัมพันธ์เกิดขึ้นหลังจากโมเดลลำดับชั้นและเครือข่าย (เช่นพาเรนต์เพื่อนบ้าน) แต่ในโมเดลเหล่านั้นหน่วยงานยังมีความสัมพันธ์ซึ่งกันและกัน เหตุใดจึงเรียกโมเดลนี้ว่าโมเดลเชิงสัมพันธ์ มีวลี / คำที่เฉพาะเจาะจงมากขึ้นหรือไม่? หรือบางทีเราควรจะบอกว่าทั้งสามรุ่นเป็นแบบจำลองเชิงสัมพันธ์ แต่โมเดลลำดับชั้นและเครือข่ายเป็นแบบจำลองเชิงสัมพันธ์ที่เฉพาะเจาะจง
  • ถ้าเรามีเอนทิตีแบบสแตนด์อโลนที่ไม่เกี่ยวข้องกัน พูดบุคคลประตูและต้นไม้ คำว่า "ความสัมพันธ์ (al)" ยังคงใช้ได้หรือไม่

(บางทีนี่อาจเป็นคำถามหลายข้อฉันคิดว่าคำตอบนั้นมีความเกี่ยวข้องสูง - อาจมีเพียงคำตอบเดียว - ดังนั้นฉันคิดว่ามันสมเหตุสมผลแล้วที่จะเป็นคำถามเดียวถ้าฉันผิดฉันก็แจ้งให้ฉันทราบและฉัน จะสร้างคำถามแยกต่างหากแทน)


แก้ไข: แผนภาพนี้อาจเป็นประโยชน์ในการมองเห็นว่าความสัมพันธ์เกี่ยวข้องกับโดเมนที่ต่างกัน:

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


33

ครั้งแรกของทั้งหมดผมขอแนะนำกระดาษทางวิทยาศาสตร์ในการที่ดร. เอ็ดการ์แฟรงก์ Coddตีพิมพ์กรอบสัมพันธ์ให้กับประชาชนทั่วไปในปี 1970 คือสัมพันธ์รูปแบบของข้อมูลขนาดใหญ่ที่ใช้ร่วมกันข้อมูลธนาคาร ที่นั่นในหัวข้อ 1.1“ บทนำ” ดร. Codd เองกล่าวไว้ว่า:

บทความนี้เกี่ยวข้องกับการประยุกต์ใช้ทฤษฎีความสัมพันธ์ระดับต้นกับระบบที่ให้การเข้าถึงแบบแบ่งใช้กับธนาคารขนาดใหญ่ของข้อมูลที่จัดรูปแบบ


©สมาคมเพื่อการคำนวณเครื่องจักร การสื่อสารของ ACMเล่ม 13 ฉบับที่ 6 (pp. 377-387), มิถุนายน 1970

ดังนั้นใช่ความสัมพันธ์ของคำและ (จึง) เชิงสัมพันธ์มาจากภูมิหลังทางคณิตศาสตร์ ดร. Codd - ซึ่งนอกเหนือจากข้อมูลทางวิชาการและการวิจัยของเขามีประสบการณ์มือแรกประมาณ 20 ปีในการคำนวณและการประมวลผลข้อมูล - มองเห็นข้อได้เปรียบมหาศาลของการใช้ความสัมพันธ์ (โครงสร้างนามธรรมตามธรรมชาติ) ในด้านการบริหารข้อมูล .

ฉันไม่ใช่นักคณิตศาสตร์ แต่โดยทั่วไปแล้วความสัมพันธ์คือความสัมพันธ์ระหว่างเซตชุดหนึ่งเป็นชุดขององค์ประกอบ ( ทรัพยากรภายนอกนี้ให้คำจำกัดความของความสัมพันธ์ทางคณิตศาสตร์ที่อาจช่วยให้เข้าใจจากมุมมองที่แตกต่างกัน) เมื่อทำงานด้วยความช่วยเหลือของ SQL ระบบการจัดการฐานข้อมูล (DBMS สำหรับความกะทัดรัด) ซึ่งเป็นที่รู้จักกันดีประมาณความสัมพันธ์เป็นตารางซึ่งในกรณีนี้สมาคมจะเกิดขึ้นระหว่างประเภทของคอลัมน์ เห็นได้ชัดว่าในแพลตฟอร์ม SQL ที่ให้การสนับสนุน DOMAIN (เช่นFirebirdและPostgreSQL ) ความสัมพันธ์จะเกิดขึ้นระหว่างโดเมนที่ได้รับการแก้ไขสำหรับคอลัมน์ของตารางที่เป็นปัญหา ดูส่วนด้านล่างสำหรับรายละเอียดที่สำคัญ

ในแง่นั้นฉันจะกล่าวถึงอีกครั้ง Dr. Codd ซึ่งในหัวข้อ 1.3“ มุมมองเชิงสัมพันธ์ของข้อมูล” อ้างว่า:

ความสัมพันธ์ของคำถูกใช้ที่นี่ในแง่คณิตศาสตร์ที่เป็นที่ยอมรับ ชุดที่ได้รับS 1 , S 2 , ⋯, S n , (ไม่จำเป็นต้องแตกต่างกัน) Rคือความสัมพันธ์เหล่านี้nชุดถ้ามันเป็นชุดของn -tuples แต่ละที่มีองค์ประกอบแรกจากS 1องค์ประกอบที่สอง จากS 2และอื่น ๆ 1เราจะอ้างถึงS Jเป็นเจ TH โดเมนของR ตามที่นิยามไว้ข้างต้นR ได้รับการกล่าวว่ามีระดับ n. ความสัมพันธ์ของระดับ 1 มักจะเรียกว่าเอกระดับ 2 ไบนารีระดับ 3 ternaryและปริญญาn n-Ary

1เพิ่มเติมรัดกุมRเป็นส่วนหนึ่งของผลิตภัณฑ์ Cartesian S 1 × S 2 × S 3 ⋯× S n


©สมาคมเพื่อการคำนวณเครื่องจักร การสื่อสารของ ACMเล่ม 13 ฉบับที่ 6 (pp. 377-387), มิถุนายน 1970

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

ความสัมพันธ์และความสัมพันธ์

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

มุมมองกิจการสัมพันธ์และแบบเชิงสัมพันธ์

ปัจจัยอื่น ๆ ที่ฉันคิดว่าอาจทำให้เกิดความสับสน (และมีความสัมพันธ์อย่างใกล้ชิดกับความหมายทางเทคนิคของคำศัพท์ทั้งสองที่กล่าวมาข้างต้น) คือเมื่อเรียนรู้ที่จะออกแบบฐานข้อมูลนักเรียนหรือผู้ปฏิบัติมักจะแนะนำวิธีการที่ดร. . Peter Pin-Shan Chenในมุมมองเอนทิตีของความสัมพันธ์ของข้อมูล (ตีพิมพ์ในปี 1976) ซึ่งแสดงให้เห็นถึงการดำเนินการสองอย่างที่แตกต่างกัน (เช่นเอนทิตีและความสัมพันธ์ ) เพื่ออธิบายโครงสร้างสคีแนวคิดแล้วหลังจากนิยามสกีมาดังกล่าว มีเสถียรภาพนักเรียนหรือผู้ปฏิบัติงานได้รับการแนะนำให้รู้จักกับข้อตกลงและเครื่องมือที่เกี่ยวข้อง (เช่นความสัมพันธ์ ) เมื่อประกาศรูปแบบตรรกะของฐานข้อมูลที่เกี่ยวข้อง ภายในกรอบแนวคิดของการอ้างอิงความสัมพันธ์มีความหมายที่ใกล้เคียงกับความหมายของคำในชีวิตประจำวัน

จากนั้นบางทีสถานการณ์นั้นก็เพิ่มปัญหาด้านความสัมพันธ์และความสัมพันธ์ -แต่ลำดับของการกำหนดโครงสร้างแนวคิดในตอนแรกและต่อมาการประกาศการออกแบบเชิงตรรกะที่สอดคล้องกันนั้นค่อนข้างเหมาะสมแน่นอนเนื่องจากฉันจะให้รายละเอียดในส่วนต่อไปนี้ -

ตอบคำถามย่อยแต่ละข้อของคุณ

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

คำถามย่อย 1

ยกตัวอย่างเช่นทำไมบุคคลจึงถูกมองว่าเป็น "ความสัมพันธ์"? ในภาษาอังกฤษความสัมพันธ์เป็นคำนามที่อธิบายถึงความสัมพันธ์สองหน่วยงาน มันไม่ได้หมายถึงเอนทิตีเอง ในบริบทของฐานข้อมูลเชิงสัมพันธ์ "ความสัมพันธ์" หมายถึงเอนทิตีเอง ทำไม?

ระดับแนวคิด

ในสภาพแวดล้อมทางธุรกิจที่กำหนดบุคคลนั้นสามารถพิจารณาประเภทของเอนทิตี้ได้โดยขึ้นอยู่กับว่าคนที่ทำงานที่นั่น (ผู้เชี่ยวชาญด้านธุรกิจและนักออกแบบฐานข้อมูล) มีแนวคิดอย่างไร และใช่ในสภาพแวดล้อมทางธุรกิจที่อาจจะมีความแตกต่างกันคุณสมบัติที่น่าสนใจเกี่ยวกับบุคคลประเภทบุคคลเช่นชื่อ , วันเกิด , เพศ , ฯลฯ

นอกจากนี้ประเภทบุคคลนิติบุคคลอาจถือประเภทความสัมพันธ์ (หรือสมาคมหรือการเชื่อมต่อ ) บางประเภทด้วยตัวเองหรือประเภทนิติบุคคลอื่น ๆ ; เช่นบุคคลที่อาจจะเกี่ยวข้องกับประเภทกิจการชื่อUserProfileซึ่งในทางกลับกันอาจจะมีคุณสมบัติของตัวเองที่น่าสนใจให้เราบอกว่าชื่อผู้ใช้และรหัสผ่าน

แต่, (a) ประเภทเอนทิตี, (b) คุณสมบัติที่สอดคล้องกัน, (c) ประเภทความสัมพันธ์ระหว่างประเภทเอนทิตีและ (d) ความสัมพันธ์ระหว่างคุณสมบัติของตัวเองเป็นสิ่งที่ "เป็นของ" สภาพแวดล้อมทางธุรกิจเฉพาะที่พวกเขาเป็น ถือว่ามีความสำคัญ พวกเขาเป็นอุปกรณ์ที่ใช้โดยนักออกแบบฐานข้อมูลที่ทำงานอย่างใกล้ชิดกับผู้เชี่ยวชาญทางธุรกิจเพื่อกำหนดschema แนวคิดเฉพาะบริบทที่ระยะการออกแบบ

ดังนั้นในระดับความคิดเราโดยทั่วไปทำงานกับโครงสร้างของความคิดที่เกิดขึ้นในส่วนที่น่าสนใจในโลกแห่งความจริงคือ (1) ต้นแบบของสิ่งต่าง ๆและ (2) ต้นแบบของความสัมพันธ์ระหว่างต้นแบบของสิ่งต่าง ๆเราไม่ทำงานด้วย (3) ความสัมพันธ์การใช้คำศัพท์สุดท้ายในแง่ของกรอบความสัมพันธ์ของข้อมูล -

ระดับตรรกะ

หลังจากบุคคลถูกวิเคราะห์อย่างแม่นยำว่าเป็นประเภทเอนทิตีในระดับแนวคิดและหากต้องการใช้ฐานข้อมูลเชิงสัมพันธ์ที่สื่อความหมายของบุคคลและแนวคิดทั้งหมดที่เกี่ยวข้องกับมันดังนั้นข้อเท็จจริงเกี่ยวกับเอนทิตี้ของประเภทนั้นสามารถจัดการได้โดยอาศัยอำนาจ ของความสัมพันธ์ทางคณิตศาสตร์ในระดับตรรกะและใช้ประโยชน์จากการดำเนินงานตามวิทยาศาสตร์ที่สามารถดำเนินการในการสร้างนามธรรมที่ (กล่าวคือกำหนดมัน จำกัด มันและจัดการมัน)

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

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

  • Salary (PersonNumber, EffectiveDate, Amount)

... และให้เราสมมติว่าในสภาพแวดล้อมทางธุรกิจที่มีปัญหาtuple - ซึ่ง (i) หมายถึงเอนทิตีที่เฉพาะเจาะจงเช่นอินสแตนซ์ของประเภทเอนทิตีจากสคีมาแนวคิดที่ใช้บังคับและ (ii) ซึ่ง SQL คู่กันแถว -

  • Salary (x, y, z)

…จะพกพาความหมาย

  • “เงินเดือน payed เพื่อคนที่ระบุโดย PersonNumber xบน EFFECTIVEDATE yสอดคล้องกับจำนวนของz

ดังนั้น - เพื่ออธิบายสิ่งต่าง ๆ ในลักษณะโดยประมาณ - การเชื่อมต่อระหว่างโดเมนทั้งสามนั้นมีความสำคัญอย่างยิ่งพวกเขาเกี่ยวข้องกันทั้งหมด(และใช่ความสัมพันธ์แบบเอกภาพจะเกี่ยวข้องกับโดเมนเดียวเท่านั้น) การเชื่อมต่อในทุกค่าของโดเมนบางอย่างที่มีความสำคัญมากเกินไปเช่นที่พวกเขาถือว่าเป็นชุดของที่แม่นยำชนิด นอกจากนี้เนื้อหาของ tuple แต่ละSalaryความสัมพันธ์จะต้องสอดคล้องกับโครงสร้างของการยืนยันที่แสดงไว้ด้านบน

แนวคิดระดับความสัมพันธ์และตรรกะระดับความสัมพันธ์

ดังที่ได้แสดงตอนนี้ฉันได้จัดการกับการจัดการฐานข้อมูลที่สองระดับที่แตกต่างกันของนามธรรม, แนวคิดและตรรกะ - และยังมีระดับต่ำกว่าที่รู้จักกันเป็นหนึ่งทางกายภาพซึ่งใน SQL DBMSs มักจะเกี่ยวข้องกับเช่นดัชนีหน้าขอบเขต ลา ๆ

ดังนั้นตามแนวคิดที่อธิบายไว้ก่อนหน้านี้ในระดับตรรกะหนึ่งทำงานเฉพาะกับ (a) ความสัมพันธ์ทางคณิตศาสตร์โดยที่ (b) ความสัมพันธ์เชิงแนวคิดหรือการเชื่อมโยงจะแสดงโดย (c) ค่าที่มีอยู่ใน tuples ของความสัมพันธ์ทางคณิตศาสตร์ดังกล่าว และค่าดังกล่าวมักถูกคั่นด้วยข้อ จำกัด ของ FOREIGN KEY เพื่อให้สามารถแสดงความสัมพันธ์ที่เกี่ยวข้องได้อย่างถูกต้อง

และใช่หน่วยงานเชื่อมโยงคือตัวอย่างของประเภทความสัมพันธ์ที่มีอัตราส่วนความต่อเนื่องของโรคต่อเนื่อง (M: N) ที่มีต่อหลายคนสามารถถ่ายทอดโดยวิธีการ tuples ของความสัมพันธ์ทางคณิตศาสตร์เดี่ยวซึ่งมีข้อ จำกัด ที่สอดคล้องกันที่ประกาศอย่างเหมาะสม course-

คำถามย่อย 2

ฉันเข้าใจว่าโมเดลเชิงสัมพันธ์เกิดขึ้นหลังจากโมเดลลำดับชั้นและเครือข่าย แต่ในโมเดลเหล่านั้นหน่วยงานยังมีความสัมพันธ์ซึ่งกันและกัน เหตุใดจึงเรียกโมเดลนี้ว่าโมเดลเชิงสัมพันธ์ มีวลี / คำที่เฉพาะเจาะจงมากขึ้นหรือไม่? หรือบางทีเราควรจะบอกว่าทั้งสามรุ่นเป็นแบบจำลองเชิงสัมพันธ์ แต่โมเดลลำดับชั้นและเครือข่ายเป็นแบบจำลองเชิงสัมพันธ์ที่เฉพาะเจาะจง

เครือข่ายและลำดับชั้น DBMSs นำหน้าการสนับสนุนทางทฤษฎีอย่างเป็นทางการของพวกเขา

มันเป็นโอกาสที่ดีที่จะชี้ให้เห็นว่าการสนับสนุนทางทฤษฎีเกี่ยวกับลำดับชั้นและแนวทางของเครือข่ายนั้นถูกสร้างขึ้นในแง่ของDBMS ที่มีอยู่ก่อนหน้านี้โดยมีจุดประสงค์ในการทดสอบและสร้างความสมบูรณ์ของ (1) ของซอฟต์แวร์และ (2) แนวทางการจัดการข้อมูลที่เชื่อมโยง - และปรากฏการณ์กลับหัวกลับหางจากมุมมองของฉัน -

ไม่สมบูรณ์เมื่อเปรียบเทียบกับกรอบความสัมพันธ์

ที่ถูกกล่าวถึงแม้ว่าจะมีลำดับชั้นและเครือข่าย DBMSs ที่ลงวันที่ก่อนวันที่แบบจำลองเชิงสัมพันธ์และแม้กระทั่งเมื่อดร. Codd อ้างถึงวิธีการเหล่านั้นเป็นรูปแบบ "แบบจำลอง" ไม่มีการกำหนดไว้ในลักษณะเดียวกันกับที่เป็นกรอบความสัมพันธ์ กระบวนทัศน์เชิงสัมพันธ์ให้โครงสร้างทางวิทยาศาสตร์สำหรับคำนิยาม (i), (ii) ข้อ จำกัด และ (iii) การจัดการข้อมูลและวิธีการลำดับชั้นและเครือข่ายขาดการสนับสนุนทางทฤษฎีอย่างเต็มรูปแบบเพื่อครอบคลุมโครงสร้างทั้งสามประเภทที่กล่าวถึงก่อนหน้านี้

คุณสมบัติเครือข่ายและลำดับชั้น

นอกจากนี้ตามที่ระบุไว้ก่อนหน้านี้เอนทิตีและประเภทความสัมพันธ์เป็นอุปกรณ์ระดับแนวคิดพวกเขาไม่ได้อยู่ในวิธีการลำดับชั้นหรือเครือข่ายซึ่งแต่ละกลไกมีกลไกพิเศษเพื่อแสดงด้านดังกล่าว:

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

  • สำหรับส่วนของมุมมองลำดับชั้นเสนอแสดงข้อมูลโดยวิธีการ (ทางกายภาพ) ไฟล์ที่สร้างขึ้นจากการบันทึก (ซึ่งในทางกลับกันประกอบด้วยเขต ) จัดในสามเช่นการจัดเรียง; เช่นบันทึกผู้ปกครองคนหนึ่งถูกล่ามโซ่กับลูกหลายคนอาจจะผ่านทางพอยน์เตอร์ซึ่งสร้างเส้นทางการเข้าถึงทางกายภาพเกี่ยวกับการจัดการข้อมูล วิธีการนี้ยังไม่เอื้ออำนวยเพราะมันแสดงให้เห็นถึงความยุ่งเหยิงในแง่มุมทางความคิดและทางกายภาพดังนั้นการเปลี่ยนแปลงในการจัดเก็บทางกายภาพจำเป็นต้องมีการจัดโครงสร้างของโครงสร้างข้อมูลใหม่ซึ่งต้องการการเปลี่ยนแปลงในการดำเนินการจัดการข้อมูล

ดังที่แสดงมุมมองแบบลำดับชั้นและเครือข่ายการกำหนดโครงสร้างของพวกเขาในข้อมูลที่จะได้รับการจัดการในขณะที่แบบเชิงสัมพันธ์เสนอการบริหารจัดการข้อมูลอย่างหรูหราในโครงสร้างตามธรรมชาติของมันโดยวิธีการของชุดที่เกี่ยวข้องข้อเท็จจริง (จากที่nประเภทที่ตามมาของชุดไม่ได้คาดการณ์ไว้ที่ ขั้นตอนการออกแบบสามารถได้รับและอื่น ๆ !)

โมเดลเชิงสัมพันธ์ไม่มีโมเดลย่อย

และค่อนข้างสำคัญไม่ว่าจะเป็นลำดับชั้นหรือมุมมองเครือข่ายเป็นแบบจำลองเชิงสัมพันธ์ที่เฉพาะเจาะจงพวกเขาก็เป็นกระบวนทัศน์อื่น ๆ ที่บางคนอาจติดตาม (a) สร้าง DBMS และ (b) สร้างฐานข้อมูล แต่โปรดจำไว้ว่าลำดับชั้น และแนวทางของเครือข่ายนั้นล้าสมัยมาหลายทศวรรษแล้ว

คำถามย่อย 3

ถ้าเรามีเอนทิตีแบบสแตนด์อโลนที่ไม่เกี่ยวข้องกัน พูดบุคคลประตูและต้นไม้ คำว่า "ความสัมพันธ์ (al)" ยังคงใช้ได้หรือไม่

ใช่มันใช้ได้อย่างสมบูรณ์ถ้ามี (1) จัดการข้อมูลเกี่ยวกับประเภทเอนทิตี้เหล่านั้นโดยอาศัยความสัมพันธ์ทางคณิตศาสตร์ที่ดัดแปลงและ (2) ดำเนินการเชิงสัมพันธ์ที่เกี่ยวข้องที่ระดับตรรกะในฐานข้อมูลบางอย่างที่ได้รับการสนับสนุนจาก DBMS เชิงสัมพันธ์ที่กำหนด .

ไม่สำคัญว่าในระดับแนวคิดประเภทเอนทิตีกล่าวว่าไม่มีประเภทความสัมพันธ์กับประเภทเอนทิตีอื่น ๆ (และเป็นที่น่าสังเกตว่าประเภทเอนทิตีสามารถมีความสัมพันธ์ของอัตราส่วนความเป็น cardinality แบบหนึ่งต่อศูนย์หนึ่งหรือหลายคน ด้วยตัวเอง) และดังนั้นจึงไม่มีการถ่ายทอดหรือการบังคับใช้ความสัมพันธ์ใด ๆ ระหว่างค่าของสิ่งอันดับของความสัมพันธ์ภายใต้การพิจารณา


1
ฉันไม่คิดว่าการเป็น "ผู้ที่ไม่พูดภาษาอังกฤษ" จำเป็นต้องเข้าใจผิดหรือสับสนโดยคำว่า "ความสัมพันธ์" ยกเว้นว่าคุณได้ศึกษาวิชาคณิตศาสตร์นั้นเป็นคำจำกัดความที่แปลกใหม่อย่างสมบูรณ์ พูดตามตรงถ้าฉันไม่รู้ว่า "ความสัมพันธ์" มีความหมายอย่างไรในบริบทนี้คำตอบนี้จะไม่ช่วยโดยเฉพาะน่าสนใจแม้ว่าบางอย่างจะเป็น
IMSoP

1
@IMSoP ฉันไม่เคยสังเกตมาก่อน แต่ฉันตั้งใจจะเขียน "ผู้พูดภาษาอังกฤษที่ไม่ใช่เจ้าของภาษา" ดังนั้นฉันจึงได้คัดลอกข้อความที่เกี่ยวข้องในตอนนี้ ในทางกลับกันฉันไม่เห็นด้วยคำตอบนี้ช่วยได้เป็นพิเศษเพราะฉันได้ตอบ (1) ชื่อคำถามและ (2) คำถามย่อยทั้งหมดที่มีอยู่ในเนื้อหาของคำถามซึ่งทำให้การโพสต์ในบริบทกว้างขึ้น แต่แน่นอนคุณมีสิทธิ์ที่จะแสดงความคิดเห็นของคุณเอง
MDCCL

16

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

ก็ขึ้นอยู่กับพีชคณิตเชิงสัมพันธ์ที่กำหนดโดยอัลเฟรด Tarskiในปี 1941 (!) กระดาษของเขาในแคลคูลัสของความสัมพันธ์ เขาสรุปประวัติความเป็นมาของคำศัพท์และการใช้งานในเชิงตรรกะสัญลักษณ์ แต่กำหนดการดำเนินการซึ่งในท้ายที่สุดกลายเป็นรากฐานสำหรับ SQL

Coddเปลี่ยนสิ่งนี้เป็นนิยามสำหรับสิ่งที่สามารถเข้าใจได้ว่าเป็นฐานข้อมูลเชิงสัมพันธ์ใน12 บัญญัติของเขา


10

คำว่า "สัมพันธ์" มาจากคณิตศาสตร์และไม่มีส่วนเกี่ยวข้องกับความสัมพันธ์ระหว่างเอนทิตี ฉันไม่คณิตศาสตร์ (ขณะ Codd มีปริญญาเอกในวิชาคณิตศาสตร์) และดังนั้นจะไม่ซับซ้อน แต่จะชี้ให้คุณบทความวิกิพีเดียนี้ในฐานความสัมพันธ์ รายการ wikipedia เกี่ยวกับความสัมพันธ์ (ฐานข้อมูล)ให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีที่ Codd ปรับแนวคิดทางคณิตศาสตร์เพื่อนำไปใช้กับการจัดการข้อมูล ด้วยเหตุที่โครงสร้างทางคณิตศาสตร์นี้เรียกว่าความสัมพันธ์ฉันคิดว่ามันเกี่ยวข้องกับความคิดที่ว่ามี "ความสัมพันธ์" ระหว่างโดเมนที่ประกอบเป็นความสัมพันธ์ แหล่งที่ดีที่สุดที่ฉันรู้เพื่อทำความเข้าใจความคิดดั้งเดิมของ Codd ให้ดีขึ้นคือFabian Pascal '. Chris Date ยังเขียนอย่างกว้างขวางใน RDM และไซต์Manifesto ที่สามของเขามีเอกสารและส่วนของรายการ หนังสือทฤษฎีเชิงสัมพันธ์สำหรับผู้เชี่ยวชาญด้านคอมพิวเตอร์ของเขาเป็นการแนะนำที่ดี ฉันหวังว่านี่จะช่วยได้.


7

มันเป็นชื่อที่เข้าใจง่ายเมื่อคุณนึกถึงปุ่มธรรมชาติ คุณสามารถนึกถึงคุณค่าของเซลล์ว่าเป็นตัวแทนของเอนทิตี

Relation: Employee
|--------+------------+--------|
| name   | job        | boss   |
|--------+------------+--------|
| Mark   | owner      | NULL   |
| Bob    | manager    | Mark   |
| Jane   | supervisor | Bob    |
| Claire | supervisor | Bob    |
| John   | cashier    | Jane   |
| Jesse  | cashier    | Jane   |
| Jason  | cashier    | Claire |
|--------+------------+--------|
  • ชื่อพนักงาน "Jane" เกี่ยวข้องกับงาน "supervisor"
  • ชื่อพนักงาน "จอห์น" เกี่ยวข้องกับเจ้านาย "เจน"
  • งาน "แคชเชียร์" เกี่ยวข้องกับชื่อพนักงาน "John", "Jesse" และ "Jason"
  • งาน "แคชเชียร์" เกี่ยวข้องกับเจ้านาย "เจน" และ "แคลร์"

ฉันพบว่าคำตอบนี้ใช้งานง่ายที่สุด แต่ไม่ครอบคลุมเท่าของ MDCCL การรวมกันของคำตอบนี้บวกกับคำตอบของ MDCCL ทำให้ฉันพอใจมาก
Adam Zerner

6

คุณได้ยอมรับคำตอบที่ยาวมากซึ่งต้องพูดถึงฐานข้อมูลจำนวนมาก แต่ให้ฉันตอบคำถามที่คุณถามจริง:

ทำไมคำว่า "สัมพันธ์"

เพราะตารางเป็นตัวอย่างที่ชัดเจนของวัตถุทางคณิตศาสตร์ "ความสัมพันธ์"

เรามาดูกันว่าวิกิพีเดียมีอะไรที่จะพูดเกี่ยวกับคำว่า "ความสัมพันธ์" (ในคณิตศาสตร์ไม่ใช่ RDBMS) จากนั้นแปลเป็นฐานข้อมูล:

อย่างเป็นทางการความสัมพันธ์คือเซตของ n-tuples ที่มีระดับเท่ากัน ดังนั้นความสัมพันธ์แบบไบนารีคือชุดของคู่, ความสัมพันธ์แบบไตรภาคชุดของ triples และอื่น ๆ ในภาษาของทฤษฎีเซตความสัมพันธ์ระหว่างสองเซตเป็นส่วนย่อยของผลิตภัณฑ์คาร์ทีเซียน

Mathematics             | RDBMS
========================|===============
A relation is           | A table is
a set of                | a bunch of 
n-tuples                | rows
of equal degree.        | with the same cell (a.k.a. column) types and sizes.

มันยังคงมีทฤษฎีเซต โปรดจำไว้ว่านี่คือคณิตศาสตร์นามธรรมมากกว่าสิ่งฐานข้อมูล ประโยคสุดท้ายจึงเป็น

ความสัมพันธ์ระหว่างสองชุดเป็นส่วนย่อยของผลิตภัณฑ์คาร์ทีเซียนของพวกเขา

สิ่งนี้แปลเป็นหนึ่งตารางที่มีสองคอลัมน์:

  • เรียกคอลัมน์ A "ชื่อ" ชุดทางคณิตศาสตร์ของมันAคือชุดของชื่อ (มนุษย์) ทั้งหมด
  • คอลัมน์ BI เรียกว่า "เมือง" ชุดคณิตศาสตร์ของมันBคือชุดของเมืองทั้งหมด
  • ผลิตภัณฑ์คาร์ทีเซียนA x B(คณิตศาสตร์) เป็นชุดใหม่ซึ่งมีของทุกคู่ (aka, tupels) (a, b)ที่aเป็นสมาชิกของAและเป็นสมาชิกของb Bเช่นaเป็นชื่อและbเป็นเมือง ตัวอย่างจะเป็นหรือ(Alice, New York) (Bob, Hollywood)แต่ผลิตภัณฑ์คาร์ทีเซียนไม่ได้เป็นเพียงไม่กี่ของเหล่านั้น แต่ทั้งหมดของพวกเขา ความสัมพันธ์ที่จะไปถึงจุดนั้นเป็นส่วนย่อยของผลิตภัณฑ์คาร์ทีเซียนนั้น กล่าวอีกนัยหนึ่งความสัมพันธ์คือจำนวนคู่ใด ๆ(a, b)ที่aมีชื่อและbเป็นเมืองแม้ไม่มีเลย

ตอนนี้ฉันหวังว่าทุกคนจะเริ่มเข้าใจ ใน RDBMS แถวของตารางจะเลือกชุดย่อยของผลิตภัณฑ์คาร์ทีเซียนของชุดค่าผสมที่เป็นไปได้ทั้งหมดในคอลัมน์เหล่านั้น ซึ่งเมื่อใช้ RDBMS นั้นเป็นเรื่องเล็กน้อยและไม่เกี่ยวข้องอย่างสมบูรณ์

แต่เนื่องจากวิทยาการคอมพิวเตอร์รวมทั้งฐานข้อมูลเชิงสัมพันธ์จะมีรากในคณิตศาสตร์ที่เรามีความสุขกับคำว่า "ความสัมพันธ์" ที่นี่ มันเป็นนามธรรมอย่างสมบูรณ์และไม่มีอะไรเกี่ยวข้องกับความสัมพันธ์ระหว่างผู้คนหรือสิ่งที่คุณมี

นอกเหนือจากนี้บางครั้งคำว่า "ความสัมพันธ์" ก็ใช้สำหรับ "การเชื่อมโยง" และมันก็เหมือนกันทั้งหมด

หมายเหตุ: ในวิชาคณิตศาสตร์ความสัมพันธ์ไม่ได้เกี่ยวกับฐานข้อมูล แต่เป็นฟังก์ชั่นทั่วไปมากกว่าเท่านั้น (ได้โปรดนักคณิตศาสตร์ทุกท่านอย่าเริ่ม nitpick ตอนนี้เราอยู่ใน dba.SE ไม่ใช่ math.SE ฉันรู้ นั่นเป็นวิธีที่ผิด ๆ :)) ฟังก์ชั่นเช่นf(x)=x+1นี้สามารถแสดงเป็นชุดของ tuples (1, 2), (2, 3), ...ได้ แต่มันสามารถมีได้ทุกหมายเลขเพียงครั้งเดียวเท่านั้นที่ด้านซ้ายของ tuple (1, 2), (1, 3), ...เช่นนี้จะไม่เป็นฟังก์ชั่นที่ถูกต้อง: แต่หลังจะเป็นความสัมพันธ์ที่ถูกต้อง เช่นคุณสามารถมีบ๊อบในนิวยอร์กและบ๊อบในฮอลลีวูด


5

ฐานข้อมูลเชิงสัมพันธ์ขึ้นอยู่กับโมเดลเชิงสัมพันธ์ของ EFCodd เชิงพีชคณิตอธิบายวิธีการของวิธีการค้นหาข้อมูล ความสัมพันธ์เป็นเพียงส่วนย่อยของ crossproduct ของบางชุด (โดเมน)

ตัวอย่าง

เรามีชุดดังต่อไปนี้:

DepIds = {1, 2, 3, ...}
EmpIds = {1, 2, 3, ...}
DepNames = {'Engineering', 'Finance', 'Sales', ...}
FirstNames = {'John', 'Walter', 'Mary', 'Roxane', ...}
LastNames = {'Smith', 'Bondy', 'Taylor', ...}
BirthDates = {..., 1950-01-01, 1950-01-02, ...}
Jobs = {'Accountant', 'Programmer', 'Database Administrator', ...}

นอกจากนี้เรายังมีชุดของ tuples

departements = { 
    (1, 'Engineering'), 
    (2, 'Finance')}
employees = { 
    (1, 1, 'John', 'Taylor', 1985-03-22, 'Programmer'), 
    (2, 1, 'Walter', 'Bondy', 1997-09-11, 'Database Administrator'), 
    (3, 2, 'Roxane', 'Myers', 1987-12-19, 'Accountant')}

departements เป็นส่วนย่อยของ

    DepIds x DepNames

และมันก็เป็นความสัมพันธ์

employees เป็นส่วนย่อยของ

    EmpIds x DepIds x FirstNames x LastNames x BirthDates x Jobs

และมันก็เป็นความสัมพันธ์ด้วย

เห็นได้ชัดว่าตารางสามารถใช้ความสัมพันธ์ได้อย่างไร

ทำไมนักคณิตศาสตร์ถึงเรียกชุดของความสัมพันธ์แบบทูเปิล

โดยปกติแล้วคุณสมบัติเช่น '2 น้อยกว่า 3', '4 เท่ากับ 4', '2 อยู่ระหว่าง 1 ถึง 3.4', '-1 เป็นลบ' เรียกว่าความสัมพันธ์

ความสัมพันธ์ 'น้อยกว่า' ในชุด A = {1, 2, 3} ถูกกำหนดโดยชุดย่อย

{(1, 2), (1, 3), (2, 3) }

ของ

A x A = {1, 2, 3} x {1, 2, 3}=
{ (1, 1), (1, 2), (1, 3), 
  (2, 1), (2, 2), (2, 3), 
  (3, 1), (3, 2), (3, 3) } 

ในทำนองเดียวกันความสัมพันธ์อื่น ๆ สามารถมองได้ว่าเป็นส่วนย่อยของ crossproduct 'x น้อยกว่า y', 'x เท่ากับ y' คือความสัมพันธ์แบบไบนารีและดังนั้นจึงถูกกำหนดโดยชุดของคู่ 'x ระหว่าง y anz' เป็นความสัมพันธ์แบบไตรภาคและดังนั้นจึงถูกกำหนดโดยชุดของ triples 'x is negative' เป็นความสัมพันธ์ที่ไม่เหมือนกันดังนั้นจึงถูกกำหนดโดยชุดของซิงเกิล

tuple แผนกที่เรากำหนดไว้ด้านบนเป็นความสัมพันธ์แบบไบนารีความสัมพันธ์ของพนักงานคือความสัมพันธ์ 6-ary

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.