คำถามติดแท็ก database-normalization

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

4
แบบฟอร์มฐานข้อมูลปกติคืออะไรและคุณสามารถให้ตัวอย่างได้บ้าง [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ในการออกแบบฐานข้อมูลเชิงสัมพันธ์มีแนวคิดของการทำให้เป็นมาตรฐานของฐานข้อมูลหรือการทำให้เป็นมาตรฐานซึ่งเป็นกระบวนการของการจัดระเบียบคอลัมน์ (คุณลักษณะ) และตาราง (ความสัมพันธ์) เพื่อลดความซ้ำซ้อนของข้อมูลและปรับปรุงความสมบูรณ์ของข้อมูล (ตามที่เขียนบนWikipedia ) เนื่องจากบทความส่วนใหญ่ค่อนข้างเป็นเรื่องทางเทคนิคและยากที่จะเข้าใจฉันจึงขอให้บางคนเขียนคำอธิบายที่เข้าใจง่ายขึ้นโดยอ้างอิงจากตัวอย่างเกี่ยวกับความหมายของ 1NF, 2NF, 3NF แม้แต่ 3.5NF (Boyce-Codd)

11
การออกแบบฐานข้อมูลครั้งแรก: ฉันกำลังเอาชนะอยู่หรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ พื้นหลัง ฉันเป็นนักเรียน CS ปีแรกและฉันทำงานนอกเวลาเพื่อธุรกิจขนาดเล็กของพ่อ ฉันไม่มีประสบการณ์ในการพัฒนาแอปพลิเคชันโลกแห่งความจริง ฉันได้เขียนสคริปต์ใน Python บางหลักสูตรใน C แต่ไม่มีอะไรเช่นนี้ พ่อของฉันมีธุรกิจการฝึกอบรมขนาดเล็กและทุกชั้นเรียนมีกำหนดบันทึกและติดตามผ่านทางเว็บแอปพลิเคชันภายนอก มีคุณสมบัติการส่งออก / "รายงาน" แต่มันเป็นเรื่องทั่วไปมากและเราต้องการรายงานที่เฉพาะเจาะจง เราไม่สามารถเข้าถึงฐานข้อมูลจริงเพื่อเรียกใช้แบบสอบถาม ฉันถูกขอให้ตั้งค่าระบบการรายงานที่กำหนดเอง ความคิดของฉันคือการสร้างการส่งออกและนำเข้า CSV ทั่วไป (อาจเป็น Python) ลงในฐานข้อมูล MySQL ที่โฮสต์ในสำนักงานทุกคืนจากที่ที่ฉันสามารถเรียกใช้แบบสอบถามเฉพาะที่จำเป็น ฉันไม่มีประสบการณ์ในฐานข้อมูล แต่เข้าใจพื้นฐานมาก ฉันอ่านเกี่ยวกับการสร้างฐานข้อมูลและรูปแบบปกติเล็กน้อย เราอาจเริ่มมีลูกค้าต่างประเทศเร็ว ๆ นี้ดังนั้นฉันต้องการให้ฐานข้อมูลไม่เกิดการระเบิดหาก / เมื่อเกิดขึ้น ขณะนี้เรายังมี บริษัท ใหญ่สองสามแห่งที่เป็นลูกค้าด้วยแผนกที่แตกต่างกัน (เช่น บริษัท แม่ ACME, แผนกดูแลสุขภาพ ACME, …

26
เคยมีเวลาบ้างไหมที่ใช้ความสัมพันธ์แบบ 1: 1 กับฐานข้อมูล
ฉันคิดถึงวันธรรมดาในการทำให้เป็นมาตรฐานและมันเกิดขึ้นกับฉันฉันไม่สามารถนึกถึงเวลาที่ควรมีความสัมพันธ์แบบ 1: 1 ในฐานข้อมูล Name:SSN? ฉันต้องการพวกเขาในตารางเดียวกัน PersonID:AddressID? อีกครั้งตารางเดียวกัน ฉันสามารถสร้างตัวอย่างที่มีค่าเป็นล้าน ๆ ได้คือ 1: มากหรือมาก: มาก (พร้อมโต๊ะกลางที่เหมาะสม) แต่ไม่เคยเป็น 1: 1 ฉันขาดอะไรที่ชัดเจนหรือไม่

6
ความแตกต่างระหว่าง 3NF และ BCNF ในแง่ง่าย (ต้องสามารถอธิบายได้ถึง 8 ปี)
ฉันได้อ่านคำพูด: ข้อมูลขึ้นอยู่กับกุญแจ [1NF] คีย์ทั้งหมด [2NF] และไม่มีอะไร แต่ที่สำคัญ [3NF] อย่างไรก็ตามฉันมีปัญหาในการทำความเข้าใจ 3.5NF หรือ BCNF ตามที่เรียกว่า นี่คือสิ่งที่ฉันเข้าใจ: BCNF เข้มงวดกว่า 3NF ด้านซ้ายของ FD ใด ๆ ในตารางจะต้องเป็นปุ่ม Superkey (หรืออย่างน้อยหนึ่งปุ่มตัวเลือก) แล้วเหตุใดตาราง 3NF บางตัวจึงไม่อยู่ใน BCNF ฉันหมายถึงคำพูด 3NF พูดอย่างชัดเจนว่า "ไม่มีอะไรนอกจากกุญแจ" หมายความว่าแอตทริบิวต์ทั้งหมดขึ้นอยู่กับคีย์หลักเท่านั้น คีย์หลักคือคีย์ตัวเลือกจนกว่าจะได้รับเลือกให้เป็นคีย์หลักของเรา หากมีอะไรผิดปกติเกี่ยวกับความเข้าใจของฉันโปรดแก้ไขฉันและขอบคุณสำหรับความช่วยเหลือที่คุณสามารถให้ได้

13
ออกแบบฐานข้อมูล Facebook?
ฉันสงสัยมาตลอดว่า Facebook ออกแบบความสัมพันธ์กับผู้ใช้ของเพื่อน <-> อย่างไร ฉันคิดว่าตารางผู้ใช้เป็นดังนี้: user_email PK user_id PK password ฉันคิดว่าตารางที่มีข้อมูลของผู้ใช้ (เพศอายุ ฯลฯ ที่เชื่อมต่อผ่านอีเมลผู้ใช้ฉันจะถือว่า) มันเชื่อมต่อเพื่อนทั้งหมดกับผู้ใช้นี้อย่างไร? อะไรทำนองนี้? user_id friend_id_1 friend_id_2 friend_id_3 friend_id_N อาจจะไม่. เนื่องจากไม่ทราบจำนวนผู้ใช้และจะขยายออกไป

4
การสนับสนุน Native JSON ใน MYSQL 5.7: ข้อดีข้อเสียของประเภทข้อมูล JSON ใน MYSQL คืออะไร?
ใน MySQL 5.7 มีการเพิ่มประเภทข้อมูลใหม่สำหรับการจัดเก็บข้อมูล JSON ในตารางMySQL เห็นได้ชัดว่าจะเป็นการเปลี่ยนแปลงที่ดีใน MySQL พวกเขาระบุประโยชน์บางอย่าง การตรวจสอบเอกสาร - เฉพาะเอกสาร JSON ที่ถูกต้องเท่านั้นที่สามารถจัดเก็บในคอลัมน์ JSON คุณจึงได้รับการตรวจสอบความถูกต้องของข้อมูลโดยอัตโนมัติ การเข้าถึงที่มีประสิทธิภาพ - ที่สำคัญกว่านั้นคือเมื่อคุณจัดเก็บเอกสาร JSON ในคอลัมน์ JSON เอกสารนั้นจะไม่ถูกจัดเก็บเป็นค่าข้อความธรรมดา แต่จะถูกเก็บไว้ในรูปแบบไบนารีที่ปรับให้เหมาะสมซึ่งช่วยให้สามารถเข้าถึงสมาชิกวัตถุและองค์ประกอบอาร์เรย์ได้เร็วขึ้น ประสิทธิภาพ - ปรับปรุงประสิทธิภาพการสืบค้นของคุณโดยการสร้างดัชนีสำหรับค่าภายในคอลัมน์ JSON สามารถทำได้ด้วย“ ดัชนีการทำงาน” ในคอลัมน์เสมือน ความสะดวก - ไวยากรณ์แบบอินไลน์เพิ่มเติมสำหรับคอลัมน์ JSON ทำให้การรวมคิวรีเอกสารภายใน SQL ของคุณเป็นเรื่องปกติมาก ตัวอย่างเช่น (features.feature คือคอลัมน์ JSON):SELECT feature->"$.properties.STREET" AS property_street FROM features WHERE id = …

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