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

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

9
วิธีจัดเก็บสถานะการบันทึก (เช่นรอดำเนินการเสร็จสมบูรณ์แบบร่างยกเลิก ... )
มีแอปพลิเคชันจำนวนมากที่ต้องการบันทึกในตารางเพื่อให้มีสถานะเช่น 'สมบูรณ์', 'ร่าง', 'ยกเลิก' วิธีที่ดีที่สุดในการจัดเก็บสถานะเหล่านี้คืออะไร เพื่อแสดงให้เห็นถึงสิ่งที่ฉันได้รับที่นี่เป็นตัวอย่างที่สั้นมาก) ฉันมีแอปพลิเคชันบล็อกที่เรียบง่ายและโพสต์แต่ละรายการมีสถานะหนึ่งใน: เผยแพร่ร่างหรือรอดำเนินการ วิธีที่ฉันเห็นมันมี 2 วิธีในการสร้างแบบจำลองนี้ในฐานข้อมูล ตารางโพสต์มีฟิลด์ข้อความที่มีข้อความสถานะ ตารางโพสต์มีฟิลด์สถานะที่มี ID ของบันทึกในตาราง PostStatus ตัวอย่างบล็อกที่นี่เป็นตัวอย่างที่ง่ายมาก ที่ enum (ถ้าสนับสนุน) อาจพอเพียง อย่างไรก็ตามฉันต้องการคำตอบสำหรับคำถามเพื่อพิจารณาว่ารายการสถานะสามารถเปลี่ยนแปลงได้ตลอดเวลาดังนั้นสามารถเพิ่มหรือลบได้อีก ทุกคนสามารถอธิบายข้อดี / ข้อเสียของแต่ละคนได้หรือไม่? ไชโย! การเลือกเริ่มต้นของฉันในเรื่องนี้ดีกว่าที่จะใช้ตารางอื่นและค้นหาสถานะว่าดีกว่าสำหรับการทำให้เป็นมาตรฐานและฉันได้รับการสอนเสมอว่าการทำให้เป็นมาตรฐานนั้นดีสำหรับฐานข้อมูล

4
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะอนุญาตให้ผู้ใช้กำหนดเขตข้อมูล?
โดยทั่วไปแล้วจะถือว่าเป็นวิธีปฏิบัติที่ไม่ดีที่จะอนุญาตให้ผู้ใช้สร้างฟิลด์ในฐานข้อมูลสำหรับเว็บแอพหรือไม่? ตัวอย่างเช่นฉันกำลังสร้างเว็บแอปสินค้าคงคลังที่บ้านสำหรับภรรยาของฉันและเธอจะต้องการกำหนดฟิลด์ของเธอเองสำหรับรายการที่แตกต่างกัน ฉันวางแผนที่จะอนุญาตให้เธอสร้างหมวดรายการและเพิ่ม "คุณสมบัติ" ให้กับหมวดหมู่เหล่านั้น คุณสมบัติจะเป็นคีย์ / ค่าที่จัดเก็บเป็นสตริง ถ้าเธอมีหมวดหมู่ที่เรียกว่า "Audio CDs" เธอสามารถเพิ่มฟีเจอร์สำหรับสิ่งต่าง ๆ เช่น "artist", "track" เป็นต้น แต่ในหมวดหมู่อื่นเช่น "เฟอร์นิเจอร์" เธอสามารถเพิ่มฟีเจอร์สำหรับสิ่งต่าง ๆ เช่น "วัสดุ "(ไม้พลาสติก ฯลฯ ) จากนั้นรายการใด ๆ อาจเป็นของหนึ่งหมวดหมู่ (หรือหลายกลุ่ม) เพิ่มคุณสมบัติเหล่านั้นไปยังรายการ ฉันสามารถดูปัญหาที่การค้นหาโดยคุณลักษณะเหล่านี้ต้องใช้การเปรียบเทียบสตริงไม่มีการตรวจสอบข้อมูล ฯลฯ ตามวิธีการแบบเปรียวบางทีมันอาจจะเป็นการดีกว่าถ้าให้เธอมากับหมวดหมู่และแอตทริบิวต์ใหม่และฉันจะต้องสร้างตารางใหม่ ในขณะที่เราไป ในตัวอย่างของฉันมันเป็นฐานข้อมูลขนาดเล็ก (เรา 2 คน) และจำนวนของเรกคอร์ดที่สร้างจะมีขนาดเล็กดังนั้นจึงไม่เลวร้ายเกินไป โดยทั่วไปแล้วผู้คนจะจัดการกับสิ่งนี้ใน "ชีวิตจริง" ได้อย่างไร?

7
มาตรฐานตามข้อเท็จจริงสำหรับบันทึกข้อมูลลูกค้า [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ขณะนี้ฉันกำลังประเมินโครงการใหม่ที่อาจเกิดขึ้นซึ่งเกี่ยวข้องกับการสร้างฐานข้อมูลลูกค้าทั่วไป (userid, pwd, ชื่อ & นามสกุล, อีเมล, ที่อยู่, telfnr ... ) ณ จุดนี้ความต้องการมีการกำหนดคร่าวๆเท่านั้น ฐานข้อมูลลูกค้าคาดว่าจะอยู่ในบันทึก O (ล้านรายการ) ในการคำนวณตัวเลขแบ็คเอนด์สำหรับการปรับขนาดฐานข้อมูลและประเมินตัวเลือกฐานข้อมูลและสถาปัตยกรรมที่เป็นไปได้ฉันกำลังมองหามาตรฐานที่แท้จริงสำหรับบันทึกประเภทนี้ โดยเฉพาะอย่างยิ่งขนาดมาตรฐานของทุกสาขา (ชื่อ, นามสกุล, ที่อยู่, ... ) หรือเฉลี่ยปกติสำหรับลูกค้าบันทึกง่ายจะข้อมูลที่ดี เมื่อมีเว็บไซต์อีคอมเมิร์ซจำนวนมากออกมาควรมีการกำหนดค่าทั่วไปบางประเภทที่สามารถนำมาใช้ซ้ำได้และหลีกเลี่ยงการประดิษฐ์ล้อเลื่อนอีกครั้ง ความคิดใด ๆ ---- แก้ไข ---- คำตอบดูเหมือนว่าจะนำไปสู่การใช้บันทึกลูกค้ามาตรฐานและการออกแบบของคุณเอง ฉันต้องการเน้นว่าจุดเน้นของคำถามนี้คือการค้นหาการอ้างอิงสำหรับการปรับขนาดเขตข้อมูลสำหรับวัตถุลูกค้าและหลีกเลี่ยงการหาสิ่งนั้นด้วยตัวเอง (ฉันได้เน้นส่วนนั้นในข้อความต้นฉบับ - ตอนนี้เป็นตัวหนา -)

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

5
เวอร์ชันควบคุมเนื้อหาของฐานข้อมูล
ฉันกำลังทำงานในโครงการเว็บที่เกี่ยวข้องกับเนื้อหาที่ผู้ใช้สามารถแก้ไขได้และฉันต้องการที่จะสามารถติดตามเวอร์ชันของเนื้อหาจริงที่อยู่ในฐานข้อมูล โดยพื้นฐานแล้วฉันต้องการที่จะใช้ประวัติความเปลี่ยนแปลงของวิกิ ในการทำวิจัยพื้นหลังฉันเห็นเอกสารจำนวนมากเกี่ยวกับวิธีการทำคีมาฐานข้อมูลของคุณ(จริง ๆ แล้วฉันควบคุมอยู่แล้ว) แต่กลยุทธ์ใด ๆ ที่มีอยู่เกี่ยวกับวิธีการติดตามการเปลี่ยนแปลงเนื้อหาของฐานข้อมูลของคุณจะสูญหายไป ในการค้นหาของฉัน ฉันสามารถคิดถึงวิธีการติดตามการเปลี่ยนแปลงของตัวเองได้บ้าง แต่พวกเขาทั้งหมดดูค่อนข้างหยาบ: บันทึกทั้งแถวในการเปลี่ยนแปลงแต่ละรายการเชื่อมโยงแถวกลับไปยังรหัสแหล่งที่มาด้วยคีย์หลัก การเปลี่ยนแปลงเล็ก ๆ น้อย ๆ จำนวนมากอาจทำให้โต๊ะโตมาก บันทึกก่อน / หลัง / ผู้ใช้ / การประทับเวลาสำหรับการเปลี่ยนแปลงแต่ละรายการด้วยชื่อคอลัมน์เพื่อเชื่อมโยงการเปลี่ยนแปลงกลับไปยังคอลัมน์ที่เกี่ยวข้อง บันทึกก่อน / หลัง / user / timestamp ด้วยตารางสำหรับแต่ละคอลัมน์ (อาจส่งผลให้มีตารางมากเกินไป) บันทึก diffs / user / timestamp สำหรับการเปลี่ยนแปลงแต่ละรายการด้วยคอลัมน์ (ซึ่งหมายความว่าคุณต้องเดินผ่านประวัติการเปลี่ยนแปลงทั้งหมดเพื่อย้อนกลับไปยังวันที่แน่นอน) อะไรคือวิธีที่ดีที่สุดที่นี่? ดูเหมือนว่าฉันจะพลิกโฉมฐานข้อมูลโค้ดของคนอื่น (ดีกว่า) คะแนนโบนัสสำหรับ PostgreSQL

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

5
RDBMS หลายเซิร์ฟเวอร์ของฉันหรือแอปพลิเคชันของฉันควรจัดการกับ Referential Integrity หรือไม่
รายการเช่น Foreign Keys, ข้อ จำกัด , ค่าเริ่มต้นและอื่น ๆ ควรได้รับการจัดการโดยระบบการจัดการฐานข้อมูล (ในกรณีนี้คือ MS SQL 2005) หรือแอปพลิเคชันหรือไม่ ฉันเคยได้ยินความคิดเห็นจากทั้งสองฝ่ายและฉันก็ไม่แน่ใจเหมือนกันว่าจะไปทางไหน มีโอกาสที่เราจะขยายเซิร์ฟเวอร์หลายตัว / ฐานข้อมูลและฉันไม่คิดว่า Foreign Keys สามารถใช้ข้ามเซิร์ฟเวอร์ที่เชื่อมโยงได้ นอกจากนั้นยังมีการอ้างอิงแบบวงกลมในการออกแบบฐานข้อมูลซึ่งทำให้ฉันไม่สามารถใช้ON UPDATE CASCADEกับทุกสิ่งได้ ฐานข้อมูลคือ MS SQL 2005 (อาจเป็น 2008) และการโต้ตอบทั้งหมดที่มีควรผ่านแอปพลิเคชัน

7
ข้อเสียของการใช้ foreign key แบบ nullable แทนการสร้างตาราง intersection
ว่าฉันมีแผนภาพ ER ต่อไปนี้: ตอนนี้ถ้าฉันแสดงถึงความสัมพันธ์โดยใช้ foreign key ของSchoolin StudentฉันสามารถมีNULLค่าได้(เนื่องจาก a Student ไม่จำเป็นต้องเป็นของ a School) ตัวอย่างเช่น: ดังนั้นวิธีที่ถูกต้อง (ขึ้นอยู่กับสิ่งที่ฉันได้อ่าน) คือการสร้างตารางสี่แยกเพื่อเป็นตัวแทนของความสัมพันธ์ตัวอย่างเช่น วิธีนี้ไม่มีค่าสามารถจะนำเสนอในตารางNULLSchool_has_Student แต่อะไรคือข้อเสียของการใช้ foreign key แบบ nullable แทนการสร้างตาราง intersection? แก้ไข: ฉันเลือก ( school_id, student_id) เป็นคีย์หลักสำหรับSchool_has_Studentตารางโดยไม่ตั้งใจซึ่งทำให้ความสัมพันธ์แบบนี้มีมากหลายต่อหลายคน คีย์หลักที่ถูกต้องควรเป็นstudent_id:

3
สกีมาฐานข้อมูลสำหรับรายการสิ่งที่ต้องทำ
ฉันกำลังพยายามสร้างแอพพลิเคชั่นรายการสิ่งที่ต้องทำง่ายๆด้วย PHP, MySQL, Jquery templating และ JSON ... อย่างไรก็ตามโครงสร้างของฉันดูเหมือนจะซับซ้อนกว่าใน JSON วิธีที่ดีที่สุดที่จะทำคืออะไร? ตารางใหม่สำหรับแต่ละรายการที่มีรายการ หรือ ตารางสำหรับรายการและตารางสำหรับรายการที่เข้าร่วมอย่างใด เพราะฉันได้ลองสิ่งนี้แล้วและดูเหมือนว่ามันจะไม่ถูกใช่มั้ย ตัวอย่างhttp://jsfiddle.net/Lto3xuhe/

7
สิ่งที่ต้องพิจารณาเป็นพิเศษในการออกแบบฐานข้อมูลเพื่อเก็บบันทึกทางการเงิน
ฉันหวังว่าคำถามนี้จะไม่กว้างเกินไป ในอนาคตฉันอาจต้องเพิ่มระบบบัญชีและการติดตามทางการเงินลงในบางแอปพลิเคชัน (ส่วนใหญ่เป็นแอปพลิเคชันบนเว็บ แต่คำถามของฉันเกี่ยวข้องกับแอปเดสก์ท็อปเช่นกัน) ตอนนี้การสร้างบันทึกทางธุรกรรมทางการเงินอย่างง่ายเป็นเรื่องง่ายในทางทฤษฎี ตารางฐานข้อมูลหนึ่งตารางที่มีคอลัมน์น้อยสามารถทำงานได้ แม้แต่ MS Access, Excel หรือแม้แต่ไฟล์ข้อความ ASCII ธรรมดาก็สามารถใช้เก็บวันที่ทำธุรกรรมรหัสบัญชีและจำนวนเงินดอลล่าร์ได้ อย่างไรก็ตามฉันรู้สึกว่าแม้ตาราง SQL ที่สำรองไว้เป็นประจำซึ่งมีความสมบูรณ์ของธุรกรรมอาจไม่แข็งแกร่งพอสำหรับการติดตามทางการเงินที่ร้ายแรง ฉันได้ยินคำศัพท์เช่น "double-entry accounting" และฉันรู้สึกว่าแอพติดตามการเงินส่วนใหญ่ (เช่น Mint.com หรือ GnuCash) มีโครงสร้างข้อมูลหรือกระบวนการที่ซับซ้อนมากขึ้นเพื่อให้แน่ใจว่าทุกสิ่ง เพิ่มขึ้นอย่างสมบูรณ์ตามที่ควรและไม่มีข้อมูลสูญหายหรือเสียหาย คำถามของฉันคือเมื่อออกแบบแอพเพื่อติดตามธุรกรรมทางการเงินควรพิจารณาการออกแบบพิเศษอะไรบ้าง ดูเหมือนว่าอาจมีปัญหาที่อาจเกิดขึ้นมากมาย ... ปัญหาเกี่ยวกับความแม่นยำในการปัดเศษการตรวจสอบพาริตี้กระบวนการตรวจสอบบางชนิดการสำรองข้อมูลพิเศษการรักษาความปลอดภัย / การเข้ารหัสวิธีพิเศษในการปกป้องข้อมูลในกรณีที่เกิดข้อผิดพลาด ... ฉันไม่รู้จริง ๆ ว่าควรถามอะไรเป็นพิเศษ แต่ฉันรู้สึกว่าอุตสาหกรรมการเขียนโปรแกรมมีแนวปฏิบัติที่ดีที่สุดที่ฉันไม่รู้ พวกเขาคืออะไร แก้ไข: ดูเหมือนว่าฉันจะเปิดเวิร์มกระป๋องขนาดใหญ่กว่าที่ฉันคาดไว้ เพื่อชี้แจงฉันคิดเฉพาะแอพสองประเภท: "ตรวจสอบรีจิสทรี" - แอปประเภทเช่น GnuCash หรือ Quicken ที่เก็บบันทึกการทำธุรกรรมส่วนบุคคลสำหรับการใช้งานของตนเอง แอพที่ติดตามใบแจ้งหนี้ / …

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

2
วิธีการออกแบบการควบคุมการเข้าถึงตามบทบาท?
ฉันกำลังพยายามติดตามรูปแบบการควบคุมการเข้าถึงฐานบทบาทเพื่อ จำกัด สิ่งที่ผู้ใช้สามารถทำได้หรือไม่สามารถทำได้ในระบบของฉัน จนถึงตอนนี้ฉันมีหน่วยงานดังต่อไปนี้: users - ผู้ที่จะใช้ระบบ ที่นี่ฉันมีชื่อผู้ใช้และรหัสผ่าน role - การรวบรวมบทบาทที่ผู้ใช้สามารถมีได้ ทรัพยากรต่างๆ เช่นผู้จัดการผู้ดูแลระบบ ฯลฯ - สิ่งที่ผู้ใช้สามารถจัดการได้ เช่นเดียวกับสัญญาผู้ใช้ร่างสัญญา ฯลฯ การดำเนินการ - สิ่งที่ผู้ใช้สามารถทำกับทรัพยากร ชอบสร้างอ่านอัปเดตหรือลบ ตอนนี้ความสงสัยของฉันเพิ่มขึ้นที่นี่ในแผนภาพที่ฉันมีความสัมพันธ์เช่นนี้: การดำเนินงาน (0 .. *) จะดำเนินการเมื่อ ทรัพยากร (0 .. *) ซึ่งจะสร้างตารางที่ผมเรียกว่าสิทธิ์และที่จะจัดเก็บการดำเนินงานและทรัพยากร ตารางสิทธิ์จะมีลักษณะเช่นนี้ (หนึ่งแถว): ID: 1, การดำเนินการ:สร้าง, ทรัพยากร:สัญญา ซึ่งหมายถึงการได้รับอนุญาตในการสร้างสัญญา ฉันทำอย่างนี้เพราะฉันรู้สึกว่าทรัพยากรบางอย่างอาจไม่มีการดำเนินการทุกประเภท ตัวอย่างเช่นสำหรับการลงทะเบียนสัญญาผู้ใช้สามารถอัปโหลดไฟล์ได้ แต่การดำเนินการนี้ไม่สามารถใช้สำหรับการลงทะเบียนผู้ให้บริการได้ ดังนั้นตอนนี้เมื่อผู้ดูแลระบบจะให้สิทธิ์กับบทบาทเขาจะไม่มีรายชื่อของทรัพยากรที่มีการดำเนินการทุกครั้งที่ลงทะเบียนในระบบ ฉันคิดว่าแต่ละแหล่งข้อมูลมีการรวบรวมการดำเนินงานของตนเองที่สามารถดำเนินการกับเขาได้ ฉันสามารถชี้แจงได้หากบางสิ่งไม่เข้าใจ นี่เป็นวิธีที่ถูกต้องในการติดตั้ง rbac หรือไม่? แก้ไข …

6
แนวปฏิบัติที่เหมาะสมที่สุดสำหรับการเลิกใช้คอลัมน์ฐานข้อมูลล้าสมัยคืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันออกแบบแอปพลิเคชันซึ่งจะรวบรวมข้อมูล A, B และ C จากลูกค้าในระยะแรก แต่หลังจากนั้นจะรวบรวมข้อมูล A, B และ D แทน A, B, C และ D ที่เกี่ยวข้องมากและในขณะนี้มีอยู่เป็นคอลัมน์ของฐานข้อมูลเดียว PostgreSQL ตารางT เมื่อไม่ต้องการใช้ C อีกต่อไปฉันต้องการลบการอ้างอิงออกจากแอปพลิเคชันของฉัน (ฉันใช้Django ORM ) แต่ฉันต้องการเก็บข้อมูลที่ป้อนไว้แล้ว วิธีที่ดีที่สุดที่จะทำคืออะไร? ฉันคิดว่าจะสร้างตารางใหม่สำหรับ ABD แต่นั่นหมายความว่าอาจทำให้เกิดปัญหากับตารางอ้างอิงแถวใดก็ได้ที ฉันสามารถปล่อยให้คอลัมน์ C ไปพร้อมกันและลบการอ้างอิงถึงมันในโค้ดทำให้ข้อมูลที่มีอยู่รอด มีตัวเลือกที่ดีกว่าที่ฉันไม่เห็นหรือไม่ รายละเอียดพิเศษบางอย่าง: จำนวนแถวจะไม่ใหญ่มากที่สุดน่าจะเป็น 1-2 ต่อผู้ใช้ นี่เป็นแอปพลิเคชั่นสำหรับตลาดมวลชน แต่เมื่อฉันเปลี่ยนจาก C เป็น …

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

3
กระบวนการคิดทั่วไปสำหรับคำถามสัมภาษณ์“ คุณจะสร้างเว็บไซต์ / แอพนี้” อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันได้รวบรวมคำถามสัมภาษณ์มากมายเช่น "อธิบายว่าคุณจะออกแบบแอพพลิเคชั่นอัลบั้มรูปได้อย่างไร", "อธิบายว่าคุณจะออกแบบคุณสมบัติเฉพาะของเว็บไซต์นี้ได้อย่างไร" (เช่นกดไลค์บน Facebook แนะนำใน Amazon ตะกร้าสินค้าเกม แจ็คสีดำ) ถ้าเป็นเช่นนั้นจะเกิดอะไรขึ้น คุณจะเปลี่ยนอะไร ดูเหมือนว่าสิ่งนี้คาดหวังว่าสคีมาฐานข้อมูลหรือคำจำกัดความของคลาส (หรือทั้งสองอย่าง?) ฉันได้เรียนรู้เกี่ยวกับฐานข้อมูลในโรงเรียนแล้ว แต่ฉันไม่เคยออกแบบแอปพลิเคชันมาก่อนและมีปัญหาในการรู้ว่าจะเริ่มจากที่ใดการออกแบบที่ฉันออกแบบมานั้นมี "ดี" และสิ่งที่ฉันสามารถเปลี่ยนได้ มีวิธีการทั่วไปหรือกระบวนการคิดเมื่อออกแบบระบบเหล่านี้หรือไม่? และปัญหา / ปัญหาทั่วไปที่ดูเหมือนจะเกิดขึ้นมากในการออกแบบที่ฉันควรพยายามหลีกเลี่ยง? ใครบางคนอาจจะแนะนำให้ฉันผ่านหนึ่ง (หรือมากกว่าทั้งหมดในขณะที่เปรียบเทียบความต้องการของแต่ละคน) และอธิบาย: 1) คุณคิดอย่างไรกับเอนทิตีที่ต้องการ? 2) คุณตัดสินใจได้อย่างไรว่าความสัมพันธ์ทุกอย่างจะมีอะไรบ้าง 3) คุณรวมการปรับปรุงประสิทธิภาพไว้ในการออกแบบของคุณอย่างไร 4) ฉันจะใช้คลาสหรือฐานข้อมูลหรือไม่ มันสร้างความแตกต่าง (เช่นฉันจะมีคลาสที่ไม่สามารถแปลเป็นตารางฐานข้อมูลจริง ๆ ได้หรือไม่) เหตุผลหลักที่ฉันถามคือเพราะฉันกำลังผ่าน "แคร็กสัมภาษณ์การเข้ารหัส" และคำตอบของฉันแตกต่างอย่างสิ้นเชิงจากผู้เขียน - ฉันมีความคิดแตกต่างกันมากในสิ่งที่ชั้นเรียนมีความสำคัญ ความตั้งใจของฉัน: ด้วยแอพแชร์รูปภาพฉันจะมีคลาส …

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