รหัสคลังสินค้าZovnіshnіy ข้อมูลพื้นฐาน สรุปคีย์เวิร์ด

โกลอฟน่า / โคริสเน่ พีแซด

ในบทความนี้เราจะพยายามดูทุกสิ่งที่คุ้มค่ากับกุญแจ เอสคิวแอล:ความต้องการnavіscho, การสร้าง, การแลกเปลี่ยนกุญแจ Zagalom: มันจะน่าเบื่อ 😉

แผนสำหรับวันนี้คือ:

ในทางทฤษฎี ฐานข้อมูลเชิงสัมพันธ์ กุญแจ tse deyakіsutnostі, svorenі zadlya vstanovlennya pevnyh obmezheni, yakіpіdtrimuyuttsіlіsnіstіความพร้อมใช้งานใน dannyh ในฐานข้อมูลตาราง dannyh

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

คีย์หลัก

Stovpets ซึ่งในฐานข้อมูลสามารถถูกกำหนดโดยคีย์หลักโดยไม่ซ้ำกัน คีย์หลักหรือคีย์หลักหมายความว่าตารางมีค่าคอลัมน์คีย์หลักเหมือนกัน ด้วยวิธีนี้ คีย์นี้ช่วยให้คุณสามารถระบุเรกคอร์ดในตารางโดยไม่ซ้ำกัน โดยไม่ต้องกลัวว่าค่าจะซ้ำกัน Vіrazu butt: ยอมรับได้ คุณมีโต๊ะkoristuvachіv ตารางนี้มีฟิลด์ต่อไปนี้: ПІБ, rіk narodzhennya, โทรศัพท์ จะระบุ koristuvach ได้อย่างไร? พารามิเตอร์เช่น PIB ที่โทรศัพท์ไม่สามารถเชื่อถือได้ อย่างไรก็ตาม, เราสามารถมีกิ่งก้านของ koristuvachiv ได้ ไม่เพียง แต่มีชื่อเล่นเดียวกัน, แต่ y z im'yam. หมายเลขโทรศัพท์อาจเปลี่ยนแปลงตามชั่วโมงและหมายเลขโทรศัพท์อาจไม่ปรากฏพร้อมกันกับหมายเลขที่เรามีในฐานข้อมูลของเรา

แกนที่ฉันเดาคีย์แรก เมื่อได้รับตัวระบุที่ไม่ซ้ำกันแล้ว ที่ มายเอสคิวแอลบนก้นในขณะที่เราชนะก้นทั้งหมดจากสนาม AUTO_INCREMENTไม่สามารถตั้งค่าได้เว้นแต่คุณจะบอกว่าคีย์แรกคืออะไร

ฉันคิดว่าไม่ปลอดภัยที่จะเดาว่าฟิลด์ถูกกำหนดให้เป็นคีย์แรก ฟิลด์นี้ต้องไม่ว่างเปล่าก่อนชั่วโมงของการสร้างเรคคอร์ด

กุญแจ Zovnishniy ( คีย์ต่างประเทศ)

มากกว่า คีย์ภายนอก (คีย์ต่างประเทศ). Yogo เรียกอีกอย่างว่าเป็นไปได้ Vіnnebhіdny zv'yazuvannya ตาราง mizh เอง

หากคุณดูภาพที่สูงขึ้นคีย์ถัดไปจะเป็นฟิลด์ของผู้นำในตารางด้านล่าง ตามกฎแล้วในขณะที่สร้างตารางจะมีการตั้งค่าคอลัมน์ของค่าจำนวนเต็มที่ไม่ซ้ำกัน แยก mi tse robili ถ้าพวกเขาสร้างตาราง ผู้จัดหา.

คอลัมน์ รหัสซัพพลายเออร์จะมีลักษณะเฉพาะสำหรับการบันทึกผิวหนัง Її มูลค่าและรูปลักษณ์บนพื้นที่คอลัมน์ พนักงานไปรษณีย์ในตาราง วซาตยาฉันออกเสียงดวงตาของฉันและมองไปที่ก้นราวกับว่ากำลังสร้างกุญแจด้านนอก

การสร้างคีย์ zvonishny

สร้างรองเท้าตาราง (shoes_id int auto_increment คีย์หลัก, ข้อความชื่อเรื่อง, ขนาด int, ราคาลอยตัว, จำนวน int, ประเภท varchar (30), ซัพพลายเออร์ int, รหัสต่างประเทศ (ซัพพลายเออร์) อ้างอิงซัพพลายเออร์ (ซัพพลายเออร์_id));

ดังที่คุณเห็นในตัวอย่าง ไวยากรณ์สำหรับการสร้างคีย์ ovish นั้นเรียบง่าย จำเป็นต้องเพิ่มฟิลด์ลงในตาราง จากนั้นเราจะแสดงฟิลด์เป็นคีย์ภายนอกและระบุตำแหน่งที่จะถามไวน์ ที่ ประเภทนี้โดยเฉพาะสนาม ผู้จัดหาคุณจะลงสนาม รหัสซัพพลายเออร์ในตาราง ผู้จัดหา.

กุญแจโกดัง (คีย์ผสม)

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

มีบางสถานการณ์ที่เมื่อแทรกลงในตาราง จำเป็นต้องตรวจสอบเรกคอร์ดว่าไม่ซ้ำกันตามจำนวนฟิลด์ แกนสำหรับสิ่งนี้และรหัสคลังสินค้าสิ่งประดิษฐ์ ตัวอย่างเช่น ฉันจะสร้างตารางอย่างง่ายด้วย คีย์ผสม เพื่อแสดงไวยากรณ์:

สร้างการทดสอบตาราง (field_1 int, ข้อความ field_2, field_3 bigint, คีย์หลัก (field_1, field_3));

แอปพลิเคชันมีสองฟิลด์ที่รวมกันเป็นรหัสคลังสินค้า และตารางจะไม่มีเรกคอร์ดที่มีฟิลด์เดียวกันนี้

Tse ทุกสิ่งที่คุ้มค่ากับกุญแจ เอสคิวแอลนี่ไม่ใช่ความช่วยเหลือที่ดี - การเตรียมการสำหรับบทความ มีรายงานว่าเดมี่ได้รับการตรวจสอบเป็นการรวมกันของตาราง เพื่อให้กลิ่นเหม็นกลายเป็นฐานข้อมูลเดียว

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

หากแอตทริบิวต์ถูกกำหนดให้กับโดเมน โดเมนนั้นจะไม่มีค่าที่ถูกต้องสำหรับแอตทริบิวต์นี้ แอตทริบิวต์Dekіlkaที่มีชื่อเดียวกันและแอตทริบิวต์นำทางของvіdnosinที่แตกต่างกันสามารถกำหนดได้ในโดเมนเดียวกัน

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

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

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

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

ยัคโช คีย์หลักประกอบด้วยแอตทริบิวต์เดียว เรียกว่า กุญแจง่ายๆ .

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



On the vіdmіnu vіd єєєrkhіchіchії і єєєrkhіchії ї і єєrkhіchії ї models danih іn relational vіdsutnє іntel'tya ієrkhіchії ї і ії ї ії ї dani͡a vіdhіnіy vіdsutnє іntel'tya ієrkhіchії і і і ії ії ї ії ї models dani͡a іn relational vіdsutnі іnє nіttya ієrkhіchії і іnіnоsnennia. สำหรับการแสดงความสัมพันธ์ระหว่างสิ่งอันดับที่แตกต่างกัน การทำซ้ำของคีย์ถือเป็นชัยชนะ

เรียกแอตทริบิวต์ซึ่งเป็นสำเนาของคีย์ของข้อมูลประจำตัวอื่น คีย์ต่างประเทศ.

ตัวอย่างเช่น การเชื่อมโยงระหว่าง VIDDIL และ SPIVROBITNIK ถูกสร้างขึ้นโดยการคัดลอกคีย์หลัก "หมายเลขวิดิลู" ตั้งแต่วันแรกไปจนถึงวันถัดไป ด้วยวิธีนี้ในการรับรายชื่อผู้ริเริ่มสำหรับโปรแกรมย่อยนี้จำเป็นต้องมี: 1) จากตาราง VIDDDIL ให้ตั้งค่าแอตทริบิวต์ "หมายเลขวิดิลู" มันพูดอะไรกับ "Name_name_name" ที่กำหนด 2) เลือกจากตาราง SPIVROBITNIK บันทึกทั้งหมด, ค่าแอตทริบิวต์ "หมายเลขวิดิลู" dorivnyuє otrimanomu บางส่วนที่โครเชต์ด้านหน้า เพื่อที่จะรับรู้ว่า spivrobitnik ทำงานอย่างไร จำเป็นต้องทำการกลับรายการ: 1) "หมายเลขวิดิลู"จากตาราง SPIVROBITNIK 2) สำหรับการลบค่า เราทราบรายการในตาราง VIDDDIL


18. การทำให้เป็นมาตรฐานในฐานข้อมูลเชิงสัมพันธ์ การทำความเข้าใจรูปแบบปกติสำหรับการออกแบบฐานข้อมูล

แบบฟอร์มปกติ - พลังในโมเดลเชิงสัมพันธ์ของข้อมูล ซึ่งแสดงลักษณะเฉพาะจากภาพรวมของความเป็นสากล ซึ่งอาจนำไปสู่ผลลัพธ์ที่เป็นไปได้เชิงตรรกะในการเลือกข้อมูล รูปแบบปกติเรียกว่าsukupnіst vmog ยาคิมอาจพอใจกับการตั้งค่า

กระบวนการแปลงฐานข้อมูลให้ดูเหมือนรูปแบบปกติเรียกว่า การทำให้เป็นมาตรฐาน . การทำให้เป็นมาตรฐานได้รับการยอมรับเพื่อลดโครงสร้างของฐานข้อมูลจนถึงจุดที่รับประกันความผิวเผินน้อยที่สุด ดังนั้นการทำให้เป็นมาตรฐานไม่ได้หมายถึงการเปลี่ยนแปลงหรือการเพิ่มผลผลิตของงาน หรือการเปลี่ยนแปลงหรือการเพิ่มหน้าที่ของฐานข้อมูล . วิธีการKіntsevoyuของการทำให้เป็นมาตรฐานє zmenshenya ศักยภาพของข้อมูลที่บันทึกไว้ในฐานข้อมูล



Usunennya nadmіrnosti viroblyayetsya, เสียง, การสลายตัวของ rahunok vіdnosinในลักษณะดังกล่าวเพื่อให้ในผิวหนังvіdnoshnіได้รับการบันทึกเฉพาะข้อเท็จจริงหลักเท่านั้น (นั่นคือข้อเท็จจริงที่มองไม่เห็นจากข้อเท็จจริงอื่น ๆ ซึ่งได้รับการบันทึกไว้)

เงินฝากตามหน้าที่

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

19. 1NF: จุดประสงค์หลักของกฎการเปลี่ยนแปลง

เพื่อหารือเกี่ยวกับรูปแบบปกติแรก จำเป็นต้องให้คำจำกัดความสองประการ:

คุณลักษณะที่เรียบง่าย - คุณลักษณะ ความหมายของปรมาณูบางชนิด (ไม่คล้าย)

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

การกำหนดรูปแบบปกติแรก:

ข้อเสนอแนะอยู่ใน 1NF เนื่องจากความหมายของแอตทริบิวต์ทั้งหมดคืออะตอม . มิฉะนั้น ตารางและแอตทริบิวต์ดังกล่าวจำเป็นต้องแยกย่อย

ลองดูตัวอย่าง:

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

พนักงาน (EMPLOYEE_NUMBER, NAME, BIRTH_DATE, WORK_HISTORY, CHILDREN)

เนื่องจากรูปลักษณ์ที่น่านับถือซึ่งvіdnoshennia vіplivaє, scho คุณลักษณะ "history_of_robots"і "เด็ก"є พับได้ ยิ่งกว่านั้นยังเป็นแอตทริบิวต์ "history_of_robots"รวมถึงแอตทริบิวต์การพับอีกหนึ่งรายการ "เงินเดือน_ประวัติ".
หน่วยเหล่านี้มีลักษณะดังนี้:

 HISTORY_JOBS (DATE_ACCEPTED, NAME, HISTORY_SALARY)

 HISTORY_SALARY (วันที่_ASSIGNMENT เงินเดือน)

 เด็ก (IM'YA_DITINI, RIK_NATIONAL)

ลิงค์สุดท้ายของการแสดงในรูป 3.3.

รูปที่ 3.3 โพสต์ไว้ตรงกลาง

ในการนำ Servant ไปสู่ร่างปกติขั้นแรก จำเป็นต้องแยกย่อยโยคะบน chotiri blue เศษชิ้นส่วนจะแสดงบน step small:

รูปที่ 3.4 เอาต์พุตที่ไม่ระบุชื่อถูกทำให้เป็นมาตรฐาน

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

อัลกอริทึมสำหรับการทำให้คำอธิบายเป็นมาตรฐานโดย E.F. Codd มีดังนี้:

  • เริ่มต้นจากจุดเริ่มต้นซึ่งอยู่ที่ด้านบนสุดของต้นไม้ (รูปที่ 3.3.) คีย์แรกจะถูกนำไปใช้และสกินที่ไม่มีคำสั่งตัวกลางจะถูกขยายโดยการใส่เส้นทางไปยังโดเมนหรือการรวมกันของโดเมนที่เหมือนกัน คีย์หลัก
  • คีย์หลักของสกินที่ขยายในระดับสีน้ำเงินนั้นเกิดจากคีย์หลักซึ่งเป็นคีย์แรกของคีย์แรกในส่วนขยายของคีย์หลักของ Batkivska ที่เพิ่มเข้ามา
  • หลังจาก Batkivsky vіdnoshennia โดเมนที่ยากทั้งหมดปรากฏขึ้นจะเห็น vuzol ด้านบนของต้นไม้และขั้นตอนซ้ำสำหรับต้นไม้ผิวหนังซึ่งหายไป

20. 2NF: การนัดหมายหลักกฎของการเปลี่ยนแปลง

บ่อยกว่านั้น คีย์แรกของบทนำมีการโรยแอตทริบิวต์ (สำหรับเวลานี้เรียกว่า รวมกัน) - แผนก 3.4 อาหาร19 ความเก่าของการทำงานใหม่.

การนัดหมาย:

แอตทริบิวต์ที่ไม่ใช่คีย์จะถูกฝากซ้ำตามหน้าที่ในคีย์คลังสินค้า เช่นเดียวกับการฝากซ้ำตามหน้าที่ในคีย์สุดท้ายโดยรวม แต่ไม่ได้อยู่ในการฝากตามหน้าที่ในแอตทริบิวต์ใดๆ ที่ป้อนก่อนแอตทริบิวต์ใหม่

ก้น:

ให้ฉันส่งคำสั่งซื้อสำหรับการจัดส่งให้คุณ (N_SUPPLIER, GOODS, PRICE)
พนักงานไปรษณีย์สามารถจัดหาสินค้าที่แตกต่างกัน และสินค้าเดียวกันสามารถจัดส่งโดยพนักงานไปรษณีย์ที่แตกต่างกัน คีย์เดียวกันvіdnoshenna - "N_postman + รายการ". ให้พนักงานไปรษณีย์ทุกคนส่งของในราคาเดียวกัน อย่างไรก็ตาม อาจมีค้างการทำงานดังกล่าว:

  • N_ไปรษณีย์, สินค้า -> ราคา
  • ผลิตภัณฑ์ -> ราคา

Nepovna funktіonalnazalezhnіstแอตทริบิวต์ "cіna" เป็นสาเหตุสำคัญที่ทำให้nastupnoї anomalії: เมื่อzmіnі cіni สินค้าnebhіdnі povniy vіdnosin vіdnosin vіdnosin schob zmіniti vsі บันทึกเกี่ยวกับ yogo postachalnikіv ความผิดปกตินี้เป็นผลมาจากข้อเท็จจริงที่ว่าข้อเท็จจริงทางความหมายสองประการรวมกันอยู่ในโครงสร้างข้อมูลเดียว การขยายตัวที่จะเกิดขึ้นจะได้รับสีน้ำเงินใน 2NF:

  • การจัดส่ง (N_SUPPLIER สินค้า)
  • PRICE_PRODUCT (สินค้า ราคา)

ในอันดับนี้คุณสามารถให้

คำจำกัดความของรูปแบบปกติอื่น: คำแนะนำอยู่ใน 2NF แม้ว่าจะไม่ได้อยู่ใน 1NF และพบแอตทริบิวต์ที่ไม่ใช่คีย์ของสกินเป็นคีย์ตามหน้าที่

21. 3NF: การนัดหมายหลักกฎของการเปลี่ยนแปลง

ก่อนที่จะพูดถึงรูปแบบปกติที่สาม จำเป็นต้องเข้าใจ: สกรรมกริยาที่ไม่เสถียร.

การนัดหมาย:

ให้ X, Y, Z - คุณสมบัติสามประการของการมองเห็นที่ไม่ชัดเจน มี X --> Y і Y --> Z Z -/-> Y และ Y -/-> X จากนั้น Z จะถูกฝากไว้ใน X
นำความทรงจำของ ZBERIGANNIA ( บริษัท, WAREHOUSE, OBSYAG) เพื่อให้ได้ข้อมูลเกี่ยวกับบริษัทที่รวบรวมสินค้าจากคลังสินค้า และรวบรวมสินค้าจากคลังสินค้าเหล่านี้ คุณลักษณะที่สำคัญ - "บริษัท". หากบริษัทเครื่องหนังสามารถรับสินค้าจากโกดังแห่งเดียวเท่านั้น โกดังเดียวกันก็ใช้งานได้เช่นกัน:

  • บริษัท -> คลังสินค้า
  • คลังสินค้า -> เกี่ยวกับ `em

ทำไมต้องตำหนิความผิดปกติ:

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

ในการระบุความผิดปกติเหล่านี้ จำเป็นต้องแยกลักษณะที่ปรากฏออกเป็นสองส่วน:

  • บันทึก ( บริษัท, คลังสินค้า)
  • OBSIAG_WAREHOUSE ( คลังสินค้า, เกี่ยวกับ `EM)

คำจำกัดความของรูปแบบปกติที่สาม:

ควรอยู่ใน 3NF แต่ไม่ควรอยู่ใน 2NF และแอตทริบิวต์คีย์สกินไม่ได้อยู่ในคีย์หลัก

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

กุญแจดอกแรกคืออะไร?

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

กุญแจสำคัญคืออะไร?

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

ขายปลีกระหว่างคีย์หลักและคีย์หลัก

ฐานของคีย์หลักและคีย์หลัก

คีย์แรกเป็นคีย์พิเศษในฐานข้อมูลเชิงสัมพันธ์ ซึ่งเป็นตัวระบุเฉพาะสำหรับเรกคอร์ดสกิน ซึ่งหมายความว่าคีย์ระบุแถว/เรกคอร์ดสกินในตารางโดยเฉพาะ และค่าอาจไม่ซ้ำกันสำหรับแถวสกินของตาราง . ในอีกด้านหนึ่ง คีย์ภายนอกคือเขตข้อมูลในตารางเดียว ดังนั้นจึงเชื่อมต่อสองตารางพร้อมกัน ในvіdnositsyaเพื่อ stovptsya หรือกลุ่มของstovptsіv, yakіอย่างไม่น่าสงสัยіndіfіkuyuіnshої ї ї ї ї ї ї ї ї ї ї tії ї ї ї zh ตาราง і

เปลี่ยนคีย์หลักและคีย์หลัก

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

ค่าที่ซ้ำกันของคีย์หลักของคีย์หลักเดียวกัน

คีย์หลักที่มีการรวมกัน UNIQUE และ Not Null ฟิลด์คีย์หลักของตารางฐานข้อมูลเชิงสัมพันธ์ไม่สามารถมีค่าที่ซ้ำกันได้ ไม่มีสองแถวที่สามารถมีค่าซ้ำสำหรับแอตทริบิวต์ของคีย์หลัก ในมุมมองของคีย์หลัก คีย์ดั้งเดิมสามารถแทนที่ค่าที่ซ้ำกัน และตารางในฐานข้อมูลเชิงสัมพันธ์สามารถแทนที่คีย์ดั้งเดิมที่ต่ำกว่าที่มีขนาดใหญ่กว่าได้

NULL ของคีย์หลักและคีย์ดั้งเดิม

หนึ่งในเอกลักษณ์หลักระหว่างพวกเขาคือ บนพื้นฐานของคีย์หลัก คีย์หลักยังสามารถมีค่า NULL ตารางฐานข้อมูลเชิงสัมพันธ์สามารถมีคีย์หลักได้อย่างน้อยหนึ่งคีย์ ซึ่งไม่อนุญาตให้มีค่า NULL

ตาราง Timchas ของคีย์หลักและคีย์ดั้งเดิม

การปักหลักคีย์หลักสามารถกำหนดให้กับตารางนาฬิกาเวลาของคนอื่น ๆ โดยปริยายได้ เช่นเดียวกับที่การปักหลักคีย์ภายนอกไม่สามารถพุชไปยังตารางนาฬิกาเวลาท้องถิ่นหรือทั่วโลกได้

มุมมองของคีย์หลักและคีย์ภายนอก

ค่าของคีย์หลักสามารถดูได้จากตารางหลัก เนื่องจากเดาว่าเป็นคีย์หลักในตารางรอง ก่อนถอดโต๊ะ Batkiv จำเป็นต้องถอดโต๊ะเด็กที่ด้านหลังออก Navpaki ค่าของคีย์ดั้งเดิมสามารถลบออกจากตารางลูกได้ แต่ควรเพิ่มลงในคีย์หลักของตารางหลัก

คีย์หลักหรือคีย์ดั้งเดิม: ตารางเพียร์

สรุปคีย์เวิร์ด

คีย์มีบทบาทสำคัญในสคีมาพื้นฐานของฐานข้อมูลสำหรับสร้างลิงก์ระหว่างตารางและตรงกลางตาราง คีย์ติดตั้ง stosunki และ zastosovat ประเภทต่างๆ tsіl_snostіโดยเฉพาะอย่างยิ่งtsіlіsnіstน้อยกว่าในตารางที่เท่ากันและvіdnosinที่เท่ากัน ในตอนแรก, กลิ่นเหม็น vvazhayut ที่ตารางมีไว้เพื่อแทนที่ระเบียนที่ไม่ซ้ำกัน, และฟิลด์เช่นคุณvikoristovuєteสำหรับการแทรกข้อมูลระหว่างตาราง, มีกำหนดที่จะแทนที่ค่าที่เกี่ยวข้อง. คีย์หลักและคีย์ดั้งเดิมเป็นคีย์สองประเภทที่สำคัญและกว้างที่สุดที่ชนะในฐานข้อมูลเชิงสัมพันธ์ คีย์หลักคือคีย์พิเศษแบบเดียวกันที่ชนะในการระบุเรคคอร์ดที่ไม่ซ้ำใครในตาราง เช่นเดียวกับคีย์ดั้งเดิมที่ชนะในการแทรกเร็กคอร์ดระหว่างสองตาราง ไม่พอใจกับกลิ่นเหม็นของโครงสร้างที่เหมือนกัน พวกเขามีบทบาทที่แตกต่างกันในสคีมาฐานข้อมูลเชิงสัมพันธ์

อัปเดตล่าสุด: 27.04.2019

ปุ่มโทรช่วยให้คุณสามารถแทรกลิงก์ระหว่างตารางได้ คีย์ดั้งเดิมถูกติดตั้งสำหรับคอลัมน์จาก fallow, subtable และระบุหนึ่งในคอลัมน์จาก head table ตามกฎแล้ว คีย์ดั้งเดิมจะชี้ไปที่คีย์หลักจากตารางหลักที่เชื่อมโยง

ไวยากรณ์การสะกดสำหรับการแทรกคีย์เฉพาะในตารางที่เท่ากัน:

รหัสต่างประเทศ (stovpet1, stowpet2, ... stovpetN) อ้างอิง head_table (stowpet_head_table1, stowpet_head_table2, ... stow_head_tableN)

สำหรับการสร้างการแลกเปลี่ยนคีย์ต่างประเทศหลังจากคีย์ต่างประเทศจำเป็นต้องระบุตารางของตารางซึ่งแสดงถึงคีย์ต่างประเทศ และหลังจากนั้น คำสำคัญ REFERENCES ระบุด้วยชื่อของตารางที่เชื่อมโยง จากนั้นตามด้วยแขนของคอลัมน์ที่เชื่อมโยง แล้วแต่ว่าจะระบุคีย์ใด หลังจากมุมมอง REFERENCES ให้ไปที่มุมมอง ON DELETE และ ON UPDATE เพื่อให้คุณสามารถตั้งค่ามุมมองเมื่อมองเห็นแถวการอัปเดตจากตารางหลัก

ตัวอย่างเช่น สองตารางมีความสำคัญ และเชื่อมโยงกันสำหรับคีย์เพิ่มเติม:

สร้างตารางลูกค้า (รหัสหลัก INT AUTO_INCREMENT, อายุ INT, ชื่อแรก VARCHAR(20) ไม่เป็นโมฆะ, นามสกุล VARCHAR(20) ไม่เป็นโมฆะ, โทรศัพท์ VARCHAR(20) ไม่เป็นโมฆะ ไม่ซ้ำกัน); สร้างคำสั่งซื้อตาราง (Id INT คีย์หลัก AUTO_INCREMENT, CustomerId INT, วันที่ CreateAt, FOREIGN KEY (CustomerId) อ้างอิงลูกค้า (Id));

มุมมองใดถูกกำหนดให้กับตารางลูกค้าและใบสั่ง ลูกค้าเป็นหัวหน้าและเป็นตัวแทนของลูกค้า คำสั่งซื้อคือคำสั่งซื้อที่ล้มเหลวซึ่งแสดงถึงคำขอของลูกค้า ตารางใบสั่งซื้อเชื่อมโยงผ่านคอลัมน์รหัสลูกค้าไปยังตารางลูกค้าตามคอลัมน์รหัสนั้น นี่คือคีย์ CustomerId stovnіshniy ซึ่งสามารถใช้เพื่อระบุรหัส stovpets จากตารางลูกค้า

ด้วยความช่วยเหลือของตัวดำเนินการ CONSTRAINT คุณสามารถแทรกชื่อสำหรับการแลกเปลี่ยนคีย์ภายนอก:

สร้างคำสั่งซื้อตาราง (Id INT คีย์หลัก AUTO_INCREMENT, CustomerId INT, CreatedAt Date, CONSTRAINT orders_custonmers_fk FOREIGN KEY (CustomerId) ลูกค้าอ้างอิง (Id));

บนลบและในการปรับปรุง

สำหรับความช่วยเหลือเพิ่มเติม สามารถใช้ ON DELETE และ ON UPDATE เพื่อตั้งค่าตัวเลขได้ ซึ่งจะถูกตรวจสอบอีกครั้งเมื่อคุณลบและเปลี่ยนแถวที่เชื่อมโยงจากตารางหลัก คุณจะเลือกตัวเลือกต่อไปนี้ได้อย่างไร:

    CASCADE : ดูหรือเปลี่ยนแถวจากตาราง fallow โดยอัตโนมัติในขณะที่ดูหรือเปลี่ยนแถวที่เกี่ยวข้องของตารางหลัก

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

    ข้อจำกัด: อนุญาตให้เปลี่ยนแถวในตารางหลักเพื่อให้มีแถวที่ทับซ้อนกันในตารางตก

    NO ACTION : เหมือนกับ RESTRICT

    ตั้งค่าเริ่มต้น : เมื่อแถวที่เชื่อมโยงถูกลบออกจากตารางหลัก แถวนั้นจะถูกตั้งค่าสำหรับค่าแถวของคีย์แถวหลังโปรโมชัน เนื่องจากถูกตั้งค่าหลังตัวช่วยแอตทริบิวต์ DEFAULT ไม่ว่าตัวเลือกนี้จะมีอยู่จริงหรือไม่ก็ตาม InnoDB pro engine ไม่รองรับไวรัสนี้

มุมมองลดหลั่น

มุมมองแบบเรียงซ้อนช่วยให้คุณดูลิงก์ทั้งหมดจากตารางสำรองโดยอัตโนมัติเมื่อคุณดูแถวจากตารางหลัก สำหรับผู้ที่จำเป็นต้องใช้ตัวเลือก CASCADE:

สร้างคำสั่งซื้อตาราง (Id INT คีย์หลัก AUTO_INCREMENT, CustomerId INT, วันที่ CreateAt, FOREIGN KEY (CustomerId) อ้างอิงลูกค้า (Id) บน DELETE CASCADE);

มาปฏิบัติตามคำสั่งของการปฏิบัติและ viraz ON UPDATE CASCADE เมื่อเปลี่ยนคีย์หลัก ค่าของคีย์หลักที่เกี่ยวข้องจะเปลี่ยนโดยอัตโนมัติ อย่างไรก็ตาม ออสซิลเลเตอร์ของคีย์หลักเปลี่ยนแปลงน้อยมาก และโดยหลักการแล้ว ไม่แนะนำให้ชนะเนื่องจากคีย์หลักของคอลัมน์มีค่าที่เปลี่ยนแปลง ดังนั้นในทางปฏิบัติ ON UPDATE จะชนะน้อยมาก

ตั้งค่าโมฆะ

เมื่อตั้งค่าตัวเลือก SET NULL สำหรับคีย์ผู้โทรแล้ว จำเป็นที่สถานะของคีย์ผู้โทรจะอนุญาตให้มีค่า NULL:

สร้างคำสั่งซื้อตาราง (Id INT คีย์หลัก AUTO_INCREMENT, CustomerId INT, วันที่ CreateAt, FOREIGN KEY (CustomerId) อ้างอิงลูกค้า (Id) เมื่อลบ SET NULL);

Vykoristovyvayutsya ในกิจกรรมทุกประเภท: ในธนาคารและตู้การเงิน, ธุรกิจการท่องเที่ยว, รัฐบาลคลังสินค้า, ในด้านการผลิตและในที่ทำงาน กลิ่นเหม็นคือลำดับของโต๊ะ ความสามารถในการอ่านของเจ้าหน้าที่ และลำดับของ suvorim vimog ในฐานข้อมูลเชิงสัมพันธ์ ตารางเรียกว่าแผ่นข้อมูล

คีย์แรกของฐานข้อมูลคืออะไร

ในฐานข้อมูล คีย์หลักของตารางคือคีย์หลัก ลองมาดูที่ก้นกันบ้างว่ากำลังมอง เอาแค่นักศึกษาในมหาวิทยาลัย (เราเรียกว่า "นักศึกษา")

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

คีย์แรกที่เรียบง่ายและคลังสินค้า

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

พี.ไอ. เกี่ยวกับ. วันเกิด ชุดหนังสือเดินทาง รหัสหนังสือเดินทาง
Ivanov P.A. 12.05.1996 75 0553009
Sergeev V.T. 14.07.1958 71 4100654
คราสนอฟ แอล.วี. 22.01.2001 73 1265165

หนังสือเดินทางของผู้คนสามารถถูกแทนที่ด้วยหมายเลขชุดเดียวกัน แต่ไม่มีหนังสือเดินทางจากชุดเดียวกัน ด้วยวิธีนี้ ฟิลด์ "Passport Series" และ "Passport Number" จะกลายเป็นคีย์การจัดเก็บของการต่ออายุที่กำหนด โดยเป็นการระบุบุคคลโดยเฉพาะ

Zvyazki ระหว่างvіdnosinami

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

มาดูก้นแรกของ "นักเรียน" กัน ในฐานข้อมูลไครเมียมีการรวบรวมข้อมูลเช่นความสำเร็จของการศึกษาผิวหนัง เพื่อหลีกเลี่ยงการทำซ้ำข้อมูลทั้งหมดที่เก็บไว้ในฐานข้อมูล โดยใช้คีย์ อาศัย รายการที่จำเป็น. เซ็งเลย

กระเป๋าสองช่องมีช่อง ID Ce คีย์หลักในฐานข้อมูลของตารางเหล่านี้ ในฐานะ Bachimo ความสำเร็จของการล้างแค้นนั้นเกินความจำเป็นจากจำนวนฟิลด์ในตารางอื่นๆ โดยไม่จำเป็นต้องให้ข้อมูลทั้งหมดจากฟิลด์เหล่านั้น

คีย์ธรรมชาติและตัวแทน

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

คีย์การโทรและความสมบูรณ์ของข้อมูลในฐานข้อมูล

ต้องไม่นำไฟล์ทั้งหมดมาขึ้นกับคีย์นอกและความสมบูรณ์ของฐานข้อมูล รหัสต่างประเทศ - ฟิลด์ทั้งหมดซึ่งใช้กับคีย์หลักของปัจจุบัน ตารางแห่งความสำเร็จมีค่า "นักเรียน" และ "วินัย" ข้อมูลของคุณช่วยให้เราสามารถ โต๊ะเก่า. ดังนั้นฟิลด์ "นักเรียน" ควรเป็น "ความสำเร็จ" เป็นคีย์ต่างประเทศ และ "นักเรียน" ควรเป็นคีย์แรกในฐานข้อมูล

หลักการสำคัญคือการส่งเสริมให้ฐานข้อมูลมีความสมบูรณ์ ฉันเป็นหนึ่งในกฎ - ความสมบูรณ์ของข้อความ ซึ่งหมายความว่าไม่สามารถอ้างอิงคีย์ปัจจุบันของตารางไปยังคีย์หลักที่ไม่รู้จักของการอ้างอิงอื่นได้ ไม่สามารถดูบันทึก "นักเรียน" ด้วยรหัส 1,000 - Ivanov Ivan ได้ดังนั้นจึงจำเป็นต้องมีบันทึกจากตารางแห่งความสำเร็จ เมื่อฐานข้อมูลแจ้งข้อมูลที่ถูกต้อง เมื่อพยายามค้นหา คุณจะขออภัย ฟิลด์ใดเป็นผู้ชนะ

สร้างและจัดกลุ่มของกฎแห่งความสมบูรณ์รวมถึงฐานข้อมูลของіnshі obezhennya yakіยังได้รับความเคารพและความรับผิดชอบในการประกันโดยผู้ค้าปลีก

© 2022 androidas.ru - ทั้งหมดเกี่ยวกับ Android