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

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

3
อาร์คพิเศษในฐานข้อมูลคืออะไรและทำไมมันถึงชั่วร้าย?
ฉันอ่านข้อผิดพลาดในการออกแบบฐานข้อมูลที่พบบ่อยที่สุดโดยนักพัฒนาถามและตอบเกี่ยวกับ stackoverflow ที่คำตอบแรกมีวลีเกี่ยวกับส่วนโค้งพิเศษ: อาร์คเอกสิทธิ์เป็นข้อผิดพลาดทั่วไปที่โต๊ะถูกสร้างขึ้นโดยมีกุญแจต่างประเทศตั้งแต่สองปุ่มขึ้นไปโดยที่หนึ่งและหนึ่งในนั้นเท่านั้นที่สามารถไม่ใช่ค่าว่างได้ ความผิดพลาดครั้งใหญ่. สำหรับสิ่งหนึ่งมันกลายเป็นเรื่องยากที่จะรักษาความสมบูรณ์ของข้อมูล ท้ายที่สุดแม้จะมี Referential Integrity แต่ก็ไม่มีอะไรที่ป้องกันไม่ให้มีการตั้งค่าคีย์ต่างประเทศเหล่านี้ตั้งแต่สองตัวขึ้นไป (ข้อ จำกัด การตรวจสอบที่ซับซ้อนแม้จะมี) ฉันไม่เข้าใจจริงๆว่าเพราะเหตุใดอาร์คเอ็กซ์คลูซีฟจึงชั่วร้าย อาจเป็นเพราะฉันไม่เข้าใจพื้นฐานของมัน มีคำอธิบายที่ดีเกี่ยวกับส่วนโค้งพิเศษหรือไม่?

2
ต้องการฐานข้อมูลการทำให้เป็นมาตรฐานกับความโปร่งใสของสคีมาหรือไม่
ความต้องการใหม่ได้ปรากฏขึ้นบน codebase เก่าซึ่งโดยทั่วไปจะช่วยให้การสื่อสารโดยตรง (ภายใน) ระหว่างสองคลาสก่อนหน้านี้ไม่เกี่ยวข้องโดยตรงของผู้ใช้ (เก็บไว้ในตารางที่แตกต่างกับสคีมาที่แตกต่างกันโดยสิ้นเชิงและเศร้ารหัสแทบไม่ทราบ ออกแบบน้อยดังนั้นจึงไม่มีชั้นผู้ปกครอง) เนื่องจากเราออกไปแขวนกระเป๋าในการตั้งค่าแบบเก่าที่ไม่เคยพิจารณาฟังก์ชั่นนี้มาก่อนจึงไม่มีการรับประกันว่าจะไม่มีการชนกันของ PK - เนื่องจากชุดข้อมูลที่ใช้อยู่นั้นรับประกันว่าจะมี ดังนั้นวิธีการแก้ปัญหาที่เห็นได้ชัด: ฆ่ามันด้วยไฟและเขียนตารางการทำแผนที่ทั้งหมดของระเบียบ ฉันได้รับสองทิศทางสำหรับวิธีที่เป็นไปได้ในการนำแผนที่ไปใช้ แต่ฉันไม่ใช่ DBA ดังนั้นฉันจึงไม่แน่ใจว่ามีข้อดีหรือข้อเสียใดที่ฉันพลาดไป เพื่อความกระจ่างเกี่ยวกับสิ่งที่เป็นนามธรรมให้พิจารณาสามกลุ่มข้อมูลผู้ใช้ที่แตกต่างกัน: อาจารย์ผู้บริหารนักเรียน (ไม่นี่ไม่ใช่การบ้านที่ได้รับมอบหมายสัญญา!) การทำแผนที่ 1 (Professor_id, admin_id และ student_id เป็นรหัสต่างประเทศในตารางที่เกี่ยวข้อง) | mailing_id (KEY) | professor_id | admin_id | student_id | ------------------------------------------------------- | 1001 | NULL | 87 | NULL | | 1002 | …

7
เอนทิตีที่ซ้อนกันและการคำนวณเกี่ยวกับคุณสมบัติของเอนทิตีใบไม้ - วิธี SQL หรือ NoSQL
ฉันกำลังทำงานในโครงการงานอดิเรกที่เรียกว่าการจัดการเมนู / สูตร นี่คือลักษณะที่หน่วยงานของฉันและความสัมพันธ์ของพวกเขามีลักษณะ NutrientมีคุณสมบัติCodeและValue IngredientมีคอลเลกชันของNutrients A Recipeมีคอลเล็กชันIngredientsและบางครั้งสามารถมีคอลเล็กชันอื่นได้recipes A Mealได้รวบรวมRecipesและIngredients A Menuมีคอลเล็กชันของMeals ความสัมพันธ์สามารถอธิบายได้ว่า ในหน้าใดหน้าหนึ่งสำหรับเมนูที่เลือกฉันจำเป็นต้องแสดงข้อมูลสารอาหารที่มีประสิทธิภาพซึ่งคำนวณจากส่วนประกอบ (อาหารสูตรอาหารส่วนผสมและสารอาหารที่เกี่ยวข้อง) ณ ตอนนี้ฉันกำลังใช้ SQL Server เพื่อจัดเก็บข้อมูลและฉันกำลังนำทางลูกโซ่จากรหัส C # ของฉันเริ่มจากอาหารแต่ละมื้อของเมนูแล้วรวบรวมค่าสารอาหาร ฉันคิดว่านี่ไม่ใช่วิธีที่มีประสิทธิภาพเนื่องจากการคำนวณนี้กำลังทำทุกครั้งที่มีการร้องขอหน้าเว็บและมีการเปลี่ยนแปลงองค์ประกอบในบางครั้ง ฉันคิดเกี่ยวกับการให้บริการพื้นหลังที่รักษาตารางที่เรียกว่า MenuNutrients ( {MenuId, NutrientId, Value}) และจะเติม / อัปเดตตารางนี้ด้วยสารอาหารที่มีประสิทธิภาพเมื่อมีองค์ประกอบใด ๆ (Meal, Recipe, Ingredient) เปลี่ยนแปลง ฉันรู้สึกว่า GraphDB เหมาะสำหรับความต้องการนี้ แต่การได้รับ NoSQL ของฉันมี จำกัด ฉันต้องการที่จะรู้ว่าสิ่งที่เป็นทางเลือกวิธีการแก้ปัญหา / แนวทางในการแสดงสารอาหารของเมนูที่กำหนด หวังว่าคำอธิบายของฉันเกี่ยวกับสถานการณ์จะชัดเจน

2
วิธีการออกแบบสกีมาฐานข้อมูล NoSql อย่างถูกต้อง? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับฐานข้อมูล NoSQL ดังนั้นฉันจึงเลือกสร้างโครงการใหม่ตั้งแต่เริ่มต้นเพื่อจัดการผลฟุตบอล ในฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิมของฉันฉันมีการแข่งขันทีมผลการแข่งขันและตารางการแข่งขัน เห็นได้ชัดว่าเกี่ยวข้องกันทั้งหมด สิ่งที่อาจเป็นวิธีที่ดีสำหรับการออกแบบโครงการเช่นนี้โดยใช้วิธี NoSQL แทน

9
มีธนาคารขนาดใหญ่ที่ใช้ Mysql หรือ PostgreSQL หรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันคิดเสมอว่าธนาคารขนาดใหญ่ที่สุดใช้ Oracle อย่างไรก็ตามไม่มีข้อพิสูจน์ว่าพวกเขาใช้ Oracle แทน Mysql หรือ PostgreSQL ไม่มีใครรู้ความลับ ความคิดใด ๆ ที่พวกเขาใช้จริง ๆ ? ฉันสามารถสร้างระบบ ATM / ธนาคารที่มีธุรกรรมหลายล้านรายการที่จะเกิดขึ้นโดยใช้ Mysql หรือไม่? ฉันสามารถใช้ PostgreSQL ได้ไหม หรือฉันต้องใช้ Oracle เท่านั้น

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

2
ฐานข้อมูลคลาวด์เหมาะกับฉันเมื่อใด
บางคนบอกว่า DBaaS (ฐานข้อมูลเป็นบริการ) - ฐานข้อมูลคลาวด์หรือที่รู้จัก - ไม่เหมาะสำหรับระบบธุรกิจอัจฉริยะ (BI), การวิเคราะห์ (OLAP) หรือการเก็บถาวร มันเป็นเรื่องจริงเหรอ? โดยทั่วไปเมื่อ DBaaS เป็นตัวเลือกทางเทคนิคที่มีประสิทธิภาพมากที่สุด

8
รายการลำดับความสำคัญของงานที่เก็บไว้ในฐานข้อมูล
ฉันพยายามคิดถึงวิธีที่ดีที่สุดในการทำสิ่งต่อไปนี้: ฉันมีรายการงานที่จัดเก็บในฐานข้อมูล งานมีลำดับความสำคัญที่กำหนดไว้ คุณสามารถเปลี่ยนลำดับความสำคัญของงานเพื่อจัดลำดับใหม่ที่ควรดำเนินการ ฉันกำลังคิดถึงบางสิ่งที่คล้ายกับ Pivotal Tracker ดังนั้นลองจินตนาการว่าเรามีสิ่งต่อไปนี้: 1 Task A 2 Task B 3 Task C 4 Task D 5 Task E เราตัดสินใจว่า E เป็นภารกิจที่สำคัญที่สุดแล้ว 1 Task E 2 Task A 3 Task B 4 Task C 5 Task D ฉันต้องการอัปเดตงานทั้งหมด 5 รายการเพื่อให้ลำดับความสำคัญใหม่แก่พวกเขา ถ้า Task B มีความสำคัญมากกว่า AI ก็จะมี …

8
การออกแบบและการปฏิบัติเพื่อป้องกันรายการ null ที่ผิดพลาดจากฐานข้อมูล
ส่วนหนึ่งของโปรแกรมของฉันดึงข้อมูลจากหลาย ๆ ตารางและคอลัมน์ในฐานข้อมูลของฉันเพื่อการประมวลผล บางคอลัมน์อาจเป็นnullแต่ในบริบทการประมวลผลปัจจุบันที่เป็นข้อผิดพลาด สิ่งนี้จะ "เกิดขึ้นตามหลักวิชา" ไม่ควรเกิดขึ้นดังนั้นหากมันชี้ไปที่ข้อมูลที่ไม่ดี ข้อผิดพลาดที่มีความรุนแรงแตกต่างกันขึ้นซึ่งข้อมูลคือnull; เช่นสำหรับบางฟิลด์การประมวลผลควรจะหยุดและบางคนได้รับแจ้งสำหรับคนอื่น ๆ การประมวลผลควรได้รับอนุญาตให้ดำเนินการต่อและเพียงแค่แจ้งใครบางคน มีสถาปัตยกรรมที่ดีหรือหลักการออกแบบเพื่อจัดการกับรายการที่หายาก แต่เป็นไปได้nullหรือไม่? โซลูชันควรเป็นไปได้ที่จะนำไปใช้กับ Java แต่ฉันไม่ได้ใช้แท็กเพราะฉันคิดว่าปัญหาค่อนข้างไม่เชื่อเรื่องภาษา ความคิดบางอย่างที่ฉันมี: ใช้ NOT NULL ที่ง่ายที่สุดคือการใช้ข้อ จำกัด NOT NULL ในฐานข้อมูล แต่ถ้าหากการแทรกข้อมูลดั้งเดิมมีความสำคัญมากกว่านั้นขั้นตอนการประมวลผลในภายหลังจะเป็นอย่างไร ดังนั้นในกรณีที่ส่วนแทรกจะใส่nullลงในตาราง (อาจเป็นเพราะข้อบกพร่องหรืออาจเป็นเหตุผลที่ถูกต้อง) ฉันไม่ต้องการให้ส่วนแทรกล้มเหลว สมมติว่าส่วนต่าง ๆ ของโปรแกรมขึ้นอยู่กับข้อมูลที่ใส่เข้าไป แต่ไม่ได้อยู่ในคอลัมน์นี้ ดังนั้นฉันจึงค่อนข้างเสี่ยงข้อผิดพลาดในขั้นตอนการประมวลผลปัจจุบันแทนขั้นตอนการแทรก นั่นเป็นเหตุผลที่ฉันไม่ต้องการใช้ข้อ จำกัด NOT NULL อย่างไร้เดียงสาขึ้นอยู่กับ NullPointerException ฉันสามารถใช้ข้อมูลราวกับว่าฉันคาดหวังว่ามันจะอยู่ที่นั่นเสมอ (และนั่นควรจะเป็นอย่างนั้นจริง ๆ ) และจับ NPE ที่ได้ในระดับที่เหมาะสม (เช่นเพื่อให้การประมวลผลของรายการปัจจุบันหยุดลง แต่ไม่ใช่ความคืบหน้าการประมวลผลทั้งหมด ) …

3
วิธีการแยกข้อมูลที่สำคัญในฐานข้อมูล (MySql)
ฉันต้องการออกแบบฐานข้อมูลที่จะมีข้อมูลเกี่ยวกับโรคส่วนตัวของผู้ใช้ สิ่งที่สามารถเป็นวิธีการที่จะใช้คอลัมน์ของตารางฐานข้อมูล: เข้ารหัสข้อมูลแยกข้อมูลภายในสองฐานข้อมูล differents หนึ่งสำหรับข้อมูลที่สำคัญและอื่น ๆ สำหรับข้อมูลที่ไม่สำคัญหรือทั้งสองหรือวิธีอื่น?

2
เราควรสร้างแบบจำลองความสัมพันธ์เอนทิตีหรือการสร้างแบบจำลองเชิงวัตถุก่อนหรือไม่
เมื่อสร้างแอปพลิเคชันจากศูนย์ฉันควรเริ่มต้นด้วยโมเดลเชิงวัตถุ (OO) หรือโมเดลเอนทิตีสัมพันธ์ (ER) หรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.