ฟอร์มปกติแรก: คำจำกัดความที่ชัดเจน


9

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

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

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

ฉันมุ่งเน้นไปที่ 1NF โดยเฉพาะเนื่องจากเกี่ยวข้องกับฐานข้อมูล SQL คำถามคือ: คุณสมบัติใดที่จำเป็นเพื่อให้แน่ใจว่าตารางที่อยู่ในรูปแบบปกติครั้งแรก?


เจ้าหน้าที่หลายคนแนะนำว่าหากตารางแสดงถึงความสัมพันธ์แสดงว่าเป็น 1NF แล้ว สิ่งนี้จะผลักดันความหมายของ 1NF กลับไปที่ความหมายของความสัมพันธ์

นี่คือคุณสมบัติบางส่วนของตารางใน 1NF:

  • ลำดับคอลัมน์ไม่มีความสำคัญ [1]
  • ลำดับแถวไม่มีนัยสำคัญ
  • แถวทั้งหมดมีความยาวเท่ากัน (เช่นข้อมูลแถวตรงกับส่วนหัวของคอลัมน์)
  • ไม่มีแถวที่ซ้ำกัน (สามารถรับประกันได้โดยใช้คีย์หลักของตัวแทนตัวแทน แต่ไม่จำเป็นต้องใช้ PK เอง)
  • ไม่มีคอลัมน์ซ้ำกัน
  • แต่ละคอลัมน์มีค่าเดียว (อะตอมมิก)

[1] แอททริบิวต์ทางเทคนิคไม่ได้เรียงลำดับ แต่ในตารางข้อมูลแถวจะต้องอยู่ในลำดับเดียวกับส่วนหัวของคอลัมน์ อย่างไรก็ตามคำสั่งซื้อที่แท้จริงนั้นไม่มีนัยสำคัญ

ในหลายข้อมูล :

แนวคิดของข้อมูลอะตอมคือไอเท็มไม่สามารถแยกย่อยได้อีก แนวคิดนี้ได้รับการมีคุณสมบัติในการว่าถึงแม้ในทางเทคนิคทุกอย่างได้ถูกทำลายลงnauseum โฆษณาข้อมูลในคำถามที่ไม่สามารถจริงเสียลงเพิ่มเติมใด ๆ ขึ้นอยู่กับว่าข้อมูลจะถูกนำมาใช้

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

ในฐานะที่เป็นเรื่องที่เกี่ยวกับการทำซ้ำคอลัมน์มันเป็นคอลัมน์ออกแบบที่ไม่ดีที่จะมีเกือบคอลัมน์ซ้ำเช่นphone1, phone2ฯลฯ โดยทั่วไปข้อมูลซ้ำชี้ให้เห็นความจำเป็นในการตารางที่เกี่ยวข้องเพิ่มเติม

การพึ่งพาอาศัยกัน

ไม่ควรมีความสัมพันธ์ใด ๆ ระหว่างแถวนอกจากที่สอดคล้องกับส่วนหัวเดียวกัน

ไม่ควรมีความสัมพันธ์ระหว่างคอลัมน์ แต่ฉันเชื่อว่าเป็นเรื่องของรูปแบบปกติที่สูงกว่า

คำถามคือเท่าไหร่ข้างต้นอยู่ในความหมายของ 1NF? แถวอิสระเข้ามาด้วยหรือไม่?

คำตอบ:


7

เบื้องต้น

ความหมายของรูปแบบปกติ (ซึ่งจากการนำเสนอของ“ปกติต่อไปของฐานข้อมูลเชิงสัมพันธ์รุ่น” ในปี 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 ด้วยย่อหน้าต่อไปนี้:

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

จากนั้นเขาก็ไปแสดง:

  1. กลุ่มของความสัมพันธ์ที่ไม่มีความผิดปกติ (มีโดเมนที่มีความสัมพันธ์เป็นค่ากล่าวคือพวกมันไม่ใช่เชิงอะตอมคือพวกมันไม่ใช่แบบง่าย)

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

จากนั้นเขาก็อธิบายขั้นตอนการรับความสัมพันธ์ปกติจากสิ่งที่ไม่ปกติ

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

พอเขาระบุ:

การดำเนินการเพิ่มเติมของชนิด normalizing เป็นไปได้ สิ่งเหล่านี้ไม่ได้กล่าวถึงในบทความนี้

และการดำเนินการดังกล่าวกล่าวคือรูปแบบปกติที่สองและสาม (2NF และ 3NF) มีรายละเอียดจริง ๆ ใน“ การทำให้ปกติของรูปแบบฐานข้อมูลเชิงสัมพันธ์ต่อไป” และดังกล่าวข้างต้นหลังจากการนำเสนอ (และการพิมพ์และสิ่งพิมพ์ในภายหลัง) ที่เดิมแบบปกติกลายเป็นที่รู้จักเป็นรูปแบบปกติแรก

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

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

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

[ ... ]

ความเป็นสากลของ sublanguage ของข้อมูลอยู่ในความสามารถในการอธิบาย (ไม่ใช่ความสามารถในการคำนวณ)

ความสับสน

จากจุดของฉันในมุมมองของความสับสนเกิดขึ้นได้เนื่องจาก (ก) ส่วนเกินดังกล่าวของการตีความคำอธิบาย ฯลฯ เกี่ยวกับ 1NF และRM ตัวเองและเพราะ (ข) ความพยายามต่อไปเพื่อredefine 1NF ว่ารัฐที่มีความสัมพันธ์ กับโดเมนที่เก็บค่าที่ในทางกลับกันความสัมพันธ์สอดคล้องกับ 1NF ตราบใดที่พวกเขาเป็นหนึ่งค่าเดียวสำหรับแต่ละ tuple ที่สอดคล้องกัน

ฉันใช้เวลากับคะแนนอื่น ๆ ของคุณ

ไม่ควรมีความสัมพันธ์ใด ๆ ระหว่างแถวนอกจากที่สอดคล้องกับส่วนหัวเดียวกัน

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

ไม่ควรมีความสัมพันธ์ระหว่างคอลัมน์ แต่ฉันเชื่อว่าเป็นเรื่องของรูปแบบปกติที่สูงกว่า

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

เพื่อเป็นตัวอย่างโดยคำนึงถึงความสัมพันธ์เชิงสมมติฐาน (ตาราง)

  • Salary (PersonNumber, EffectiveDate, Amount)

tuple (แถว)

  • Salary (x, y, z)

จะสื่อความหมาย

  • 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 มาใช้


3

ภาพประกอบ ใช้สตริงข้อความที่มีที่อยู่สหรัฐอเมริกาตามปกติ:

"123 Cornhusk Rd., South Succotash, NY 12345"

การเขียนแบบสอบถามเพื่อค้นหาผู้อยู่อาศัยทุกคนในถนน Cornhusk หรือผู้อยู่อาศัยในเมือง South Succotash หรือรัฐนิวยอร์กจะเป็นงานที่น่ากลัว โดยเฉพาะอย่างยิ่งเมื่อคุณมีสตริงต่อไปนี้ในข้อมูล:

"123 Cornhusk Road, South Succotash, NY 12345"
"123 Cornhusk Rd., South Succotash, New York 12345"
"123 Cornhusk, South Succotash, NY 12345"
"123 Cornhusk Rd., SOUTH SUCCOTASH, NY 12345"

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

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

create table Addresses(
  ...
  Street  varchar,
  City    int        references Cities( ID ),
  State   char( 2 )  references States( ID ),
  Zip     int
  ...
);

นี่ไม่ใช่การฟื้นฟูที่สมบูรณ์ ตัวอย่างเช่นคุณสามารถแบ่ง Street ออกเป็น StreetNum และ StreetName ได้อีกต่อไป แต่นี่ก็เพียงพอแล้วสำหรับภาพประกอบง่ายๆและเป็นเรื่องเกี่ยวกับกระบวนการฟื้นฟูในชีวิตจริง ยังคงมีปัญหาเล็กน้อยในการค้นหาผู้อยู่อาศัยทั้งหมดของถนน Cornhusk แต่ถ้าคุณค้นหาถนนสำหรับสายย่อย "Cornhusk" และเกิดขึ้นเป็นเมืองชื่อ Cornhusk ที่ไหนสักแห่งอย่างน้อยก็ไม่ทำให้เกิดความสับสน

ปัญหาเกี่ยวกับคำจำกัดความที่จัดทำโดย Date, et al คือพวกเขาล้มเหลวในการดูข้อมูลและพิจารณาความหมายของข้อมูลนั้น ไม่ว่าฉันจะตำหนิพวกเขาโดยเฉพาะมันอาจเป็นเรื่องยาก

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

ก่อนอื่นเราจะแก้ไขบริบท ไม่มีสิ่งใดที่มีความหมายหากไม่มีบริบท บริบทของเราที่นี่คือที่อยู่ ในบริบทที่เราสามารถมองเห็นชิ้นส่วนของข้อมูลที่มีความหมายที่เฉพาะเจาะจงเช่นถนน , เมืองฯลฯ เรากำหนดแต่ละความหมายข้อมูลที่แยกต่างหาก

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

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


1

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

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

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

การขึ้นต่อกันของแถวเช่นการขึ้นต่อกันแบบหลายค่าไม่ละเมิด 1NF แต่เช่นเดียวกับการขึ้นต่อกันระหว่างคอลัมน์เป็นเรื่องของรูปแบบปกติที่สูงกว่า เกือบคอลัมน์ซ้ำชอบphone1, phone2ฯลฯ ไม่ละเมิด 1NF อย่างใดอย่างหนึ่งถึงแม้ว่าพวกเขากำลังออกแบบที่ไม่ดี


0

ความหมายและคำอธิบายจากวิกิพีเดียเกี่ยวกับ 1NF ผมคิดว่าเป็นสิ่งที่ดีมากทีเดียว - joanolo

ขยายไปหนึ่งประโยคในบทความ Wikipedia:

มองว่าเป็นหมายเลขโทรศัพท์ข้อความไม่ได้เป็นอะตอม

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

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

"1NF" ใช้เพื่อหมายถึงกลุ่มของสิ่งต่าง ๆหลายแห่งซึ่งเป็นเรื่องไร้สาระและเป็นเรื่องธรรมดา ดูคำตอบของฉันในการ "การทำให้เป็นมาตรฐานในระบบการจัดการฐานข้อมูล"รวมถึงการเชื่อมโยง หนึ่งในนั้นคือคำตอบของฉัน "คืออะไร atomicity ใน DBMS" (ทั้งที่ Stack Overflow) - philipxy


คำตอบWiki ชุมชนที่สร้างจากความคิดเห็นที่ทิ้งไว้ในคำถาม

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