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

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

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

8
งานปฏิทินซ้ำ ๆ จะถูกเก็บไว้ในฐานข้อมูลอย่างไร?
นี่เป็นโครงการส่วนบุคคลขนาดเล็กสำหรับการจัดการไมโคร โดยทั่วไปฉันเก็บงานไว้ในฐานข้อมูล SQLite3 ที่มีลักษณะดังนี้: id INTEGER PRIMARY KEY AUTOINCREMENT label TEXT deadline INTEGER ดังนั้นแต่ละงานจึงมีวันครบกำหนด (กำหนดเวลา) ที่จัดเก็บเป็น Unix Time Stamp จนถึงตอนนี้ดีฉันสามารถทำรายการเช่น "พรุ่งนี้: เยี่ยมยาย" และแถวใหม่จะถูกสร้างขึ้นด้วย "เยี่ยมยาย" เป็นป้ายกำกับและในวันพรุ่งนี้จะเปลี่ยนเป็นเวลา Unix สำหรับกำหนดเวลา ตอนนี้ฉันต้องการป้อนงานประเภทใหม่: งานประจำ - งานที่ทำซ้ำในรูปแบบเวลาเช่น "ทุกวัน: ครัวสะอาด" งานดังกล่าวจะถูกจัดเก็บหรือจำลองอย่างไร ในขณะนี้ฉันคิดว่าในกรณีของงานที่ต้องทำทุกวันเพื่อสร้างแถวใหม่ในตารางของฉันที่จะมีป้ายกำกับเดียวกันและฟิลด์กำหนดเวลาเพิ่มขึ้นหนึ่งวัน ในกรณีนี้ฉันต้องแก้ไขขีด จำกัด ในอนาคต ตัวอย่างเช่นถ้าฉันสร้างกิจวัตรประจำวันมันจะสร้างแถวใหม่สำหรับทุกวันของปีที่เหลืออยู่ มีวิธีที่ง่ายกว่านี้หรือไม่? ฉันขาดหลักการออกแบบฐานข้อมูลที่ชัดเจนหรือไม่?

5
มีเหตุผลใดที่จะใช้ขนาด VARCHAR ปัดเศษเป็นออฟเซ็ต 128/256/4096 ไบต์?
ใน schema ของฐานข้อมูลฉันมักสังเกตว่าขนาด VARCHAR ถูกปัดเศษเป็น byte offsets 128/256 หรือ 4096 ฉันเคยทำมาก่อนเช่นกันและแนวคิดเบื้องหลังมันอาจเป็นสิ่งที่มีประสิทธิภาพ อย่างไรก็ตามในปัจจุบันยังมีเหตุผลที่ถูกต้องหรือไม่? ฉันมักจะใช้ '50', '100' หรือ '200' เป็น VARCHAR ขนาดวันนี้เนื่องจากพวกเขาเป็นธรรมชาติมากขึ้นและมักจะแสดงในการตรวจสอบการตรวจสอบกับผู้ใช้

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

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

2
ตารางเดี่ยวที่มีคอลัมน์เพิ่มเติมเทียบกับหลายตารางที่ทำซ้ำสคีมา
ฉันกำลังทำงานในโครงการที่บางจุดฉันจำเป็นต้องตัดสินใจว่าในฐานข้อมูลหรือไม่ฉันควรมีตารางเดียวที่มีหลายคอลัมน์ที่ไม่ใช่ทุกระเบียนที่ใช้หรือหลายตารางที่มีสคีมาซ้ำกัน ฉันกำลังสร้างแอปพลิเคชั่นข้อมูลกีฬาที่สามารถรองรับกีฬาหลายประเภท เราสามารถจัดการ NBA, NHL, MLB, NFL ได้ แต่ละกีฬามีแนวคิดที่คล้ายกันมาก - ทีม, ตารางเวลา, การบาดเจ็บ, ข้อมูลผู้เล่น .. แน่นอนแหล่งข้อมูลของเราไม่ได้ให้ข้อมูลแต่ละชิ้นในสคีมาเดียวกัน กีฬาแต่ละประเภทมีโครงสร้างที่แตกต่างกันซึ่งเราได้รับข้อมูลจากผู้ขายของเรา เนื่องจากมีเวลาไม่พอ (ความต้องการของลูกค้า) เพื่อทำการวิเคราะห์ข้อมูลล่วงหน้าเพื่อกำหนด commonalities ฉันจึงป้องกันการเดิมพันของฉันและใช้ 'เดิมพันที่ปลอดภัย' และสร้างตารางแยกสำหรับแต่ละกีฬาแต่ละชุดแทนที่จะเป็นหนึ่งชุดของตารางทั้งหมด กีฬาที่ใช้ ผลลัพธ์คือ schema ที่ซ้ำกันในหลายตารางและอินเทอร์เฟซที่ซ้ำซ้อนกับฐานข้อมูล (เช่น procs ที่เก็บไว้) เช่นกัน ฉันมีบางอย่างเช่น NBA_Game, NFL_Game, NBA_Team, NFL_Team และอื่น ๆ แต่ละตารางอาจมีคุณสมบัติบางอย่างที่อีกคนหนึ่งไม่ได้และอีกหลายคนที่ใช้ร่วมกัน มันพูดต่อไปประมาณ 5-10 ตารางจาก 4 หรือ 5 กีฬา ฉันยังไม่แน่ใจว่านี่เป็นสิ่งที่เลวร้ายหรือไม่ - ทางเลือกการมีตารางชุดเดียวซึ่งมีคุณสมบัติอยู่ในนั้นซึ่งไม่ใช่กีฬาทุกประเภทที่จะใช้อาจมีตัวของตัวเองที่เทอะทะเช่นกัน …

1
แบบจำลองข้อมูลมีผลกระทบต่อความสามารถในการขยายและประสิทธิภาพในฐานข้อมูลที่เรียกว่า“ NoSQL” มากน้อยเพียงใด?
คุณไม่เคยมีการพูดคุยเกี่ยวกับฐานข้อมูลที่เรียกว่า "NoSQL" โดยไม่ต้องนำทฤษฎีบท CAP (ความสอดคล้องความพร้อมใช้งานพาร์ติชัน: เลือกสอง) ถ้าคุณต้องเลือกว่าระหว่าง MongoDB (Partition, Consistency) และ CouchDB (Availability, Partition) สิ่งแรกที่คุณต้องคิดคือ "ฉันต้องการข้อมูลที่ถูกต้องหรือต้องเข้าถึงตลอดเวลาหรือไม่" ฐานข้อมูลใหม่เหล่านั้นถูกจัดทำขึ้นเพื่อแบ่งพาร์ติชัน แต่ถ้าฉันทำไม่ได้ล่ะ ถ้าฉันคิดว่ามันยอดเยี่ยมมากที่มีคีย์ / ค่าคอลัมน์เอกสารฐานข้อมูลใด ๆ แทนที่จะเป็นเชิงสัมพันธ์และเพิ่งสร้างเซิร์ฟเวอร์อินสแตนซ์เดียวและไม่เคยทิ้งมัน ในกรณีนั้นฉันจะไม่มีทั้งความพร้อมใช้งานและความสอดคล้องใช่ไหม MongoDB ไม่จำเป็นต้องทำซ้ำสิ่งใดดังนั้นจึงสามารถใช้งานได้ และ CouchDB จะมีแหล่งข้อมูลเพียงแหล่งเดียวดังนั้นมันจึงค่อนข้างสอดคล้องกัน นั่นหมายความว่าในกรณีนี้ MongoDB และ CouchDB จะมีความแตกต่างเล็กน้อยในแง่ของการใช้งาน? ดียกเว้นประสิทธิภาพของหลักสูตร API และ al แต่นั่นจะเป็นการเลือกระหว่าง PostgreSQL และ MySQL มากกว่าการมีข้อกำหนดที่แตกต่างกันสองชุด ฉันอยู่ตรงนี้หรือไม่ ฉันสามารถเปลี่ยนฐานข้อมูล AP หรือ CP เป็น AC …

4
ตารางเฉพาะเหล่านี้ต้องการคีย์ตัวแทนหรือไม่
พื้นหลัง ฉันมีตารางนี้ +-------------------------+ +------------------------+ |Airport | |Country | |-------------------------| |------------------------| |airport_code string (PK) | |country_code string (PK)| |address string | |name string | |name string | +------------------------+ +-------------------------+ +-------------------------+ |Currency | |-------------------------| |currency_code string (PK)| |name string | +-------------------------+ airport_codeเป็นรหัสสนามบินIATA (สมาคมการขนส่งทางอากาศระหว่างประเทศ) คุณสามารถดูได้ในแท็กกระเป๋าของคุณเมื่อคุณเดินทางโดยเครื่องบิน country_codeคือรหัสประเทศมาตรฐาน ISO 3166-1 A3คุณสามารถดูได้ในโอลิมปิก currency_codeคือรหัสสกุลเงิน 3 ตัวอักษรมาตรฐาน IS0 …

4
แนวปฏิบัติที่ดีที่สุดสำหรับการบันทึกเขตเวลาในฐานข้อมูลคืออะไร
เราต้องการเริ่มต้นรวบรวมเขตเวลาสำหรับที่อยู่แต่ละแห่งในฐานข้อมูล วิธีที่ดีที่สุดในการจัดเก็บเขตเวลาคืออะไร? คุณจะไปเกี่ยวกับการหาเขตเวลาสำหรับบันทึกที่อยู่ที่มีอยู่ได้อย่างไร ฉันใช้เซิร์ฟเวอร์ Microsoft SQL, .net mvc, C # ข้อเสนอแนะใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.

6
เป็นการดีที่จะมีคอลัมน์“ บันทึกสถานะ” ในตารางฐานข้อมูลหรือไม่?
ฉันต้องชี้แจงก่อนว่าคอลัมน์สถานะไม่ได้มีไว้เพื่อสะท้อนสถานะของรายการในโลกแห่งความเป็นจริงที่แสดงโดยระเบียน (แถว) ในตาราง ค่อนข้างมีวัตถุประสงค์เพื่อแสดงสถานะของบันทึกเอง สามารถทำได้ง่ายเหมือนใช้งาน / ไม่ใช้งานหรือซับซ้อนเช่นอนุมัติ / ลบ / ล็อก / รอดำเนินการ / ปฏิเสธ ฯลฯ สถานะสามารถเก็บไว้ในคอลัมน์จำนวนเต็มบูลีน / สั้นหรือคอลัมน์อักขระเดี่ยวโดยมีการแมปเช่นtrue/ 1= ใช้งานหรือA= อนุมัติแล้ว แนวคิดพื้นฐานคือการมีการสนับสนุนการกู้คืนรีไซเคิล / เหมือนถังขยะในแอปพลิเคชัน (และจำลองในฐานข้อมูล) หากมีส่วนหน้า GUI หรือส่วนต่อประสานอื่นที่สามารถให้ผู้ใช้บันทึก "ลบ" มันไม่ได้ลบบันทึกในตาราง แต่เพียงเปลี่ยนสถานะของบันทึกเป็นไม่ใช้งานหรือถูกลบ เมื่ออินเทอร์เฟซดึงระเบียนมันจะได้รับระเบียนที่ตรงกับเงื่อนไขที่สถานะนั้นใช้งานอยู่หรืออนุมัติแล้วเท่านั้น หากผู้ใช้ทำผิดพลาดและจำเป็นต้องกู้คืน "ลบ" (ในมุมมองของผู้ใช้) DBA สามารถแก้ไขบันทึกกลับเป็น Active หรือ Approved ได้อย่างง่ายดายซึ่งจะดีกว่าการค้นหาสำเนาสำรองและหวังว่าจะค้นหาระเบียนต้นฉบับ ที่นั่น หรืออินเทอร์เฟซของตัวเองสามารถอนุญาตให้ผู้ใช้ดูบันทึกที่ถูกลบในมุมมองที่แยกต่างหากและเรียกคืนพวกเขาตามความจำเป็นหรือแม้กระทั่งลบพวกเขาอย่างถาวร (ลบบันทึกจริง) คำถามของฉัน: นี่เป็นแนวปฏิบัติที่ดีหรือเป็นแนวปฏิบัติที่เลวร้ายหรือไม่? ส่งผลกระทบต่อการทำให้ข้อมูลกลับสู่ปกติหรือไม่ ข้อผิดพลาดที่อาจเกิดขึ้นคืออะไร? มีวิธีอื่นในการบรรลุเป้าหมายเดียวกันหรือไม่? …

4
ฉันควรแสดงชนิดที่แจกแจงในฐานข้อมูลเชิงสัมพันธ์ได้อย่างไร?
ฉันกำลังทำงานเพื่อพัฒนาฐานข้อมูลเชิงสัมพันธ์ที่ติดตามธุรกรรมที่เกิดขึ้นบนอุปกรณ์ที่ฉันทำงานให้กับ บริษัท ของฉัน มีธุรกรรมหลายประเภทที่อาจเกิดขึ้นบนอุปกรณ์ดังนั้นเราจึงมีฟิลด์ "trans_type" ในตารางบันทึกหลักของเรา กลุ่มของฉันได้ตัดสินใจที่จะทำให้ประเภทของเขตข้อมูลนี้เป็นจำนวนเต็มและถือว่าเป็นประเภทที่ระบุ สัญชาตญาณของฉันบอกฉันว่ามันจะเป็นการดีกว่าถ้าจะทำให้ฟิลด์นี้เป็นสตริงเพื่อให้ข้อมูลฐานข้อมูลของเราอ่านได้ง่ายขึ้นและสามารถใช้งานได้ เพื่อนร่วมงานของฉันดูเหมือนจะกังวลว่าสิ่งนี้จะทำให้เกิดปัญหามากกว่าที่ควรจะเป็น การเปรียบเทียบสตริงนั้นมีค่าใช้จ่ายสูงเกินไปและความเป็นไปได้ที่จะพิมพ์ผิดก็เป็นอุปสรรคใหญ่เกินไป ดังนั้นในความเห็นของคุณเมื่อต้องจัดการกับเขตข้อมูลในฐานข้อมูลเชิงสัมพันธ์ที่เป็นค่าที่แจกแจงมันเป็นการตัดสินใจที่ดีกว่าในการออกแบบเขตข้อมูลนี้ให้เป็นจำนวนเต็มหรือสตริง? หรือมีทางเลือกอื่นที่ฉันมองข้ามไปไหม หมายเหตุ: ฐานข้อมูลที่เรากำลังใช้ไม่รองรับประเภทการแจงนับอย่างชัดเจน และซอฟต์แวร์ที่เรากำลังพัฒนาที่จะเชื่อมต่อกับฐานข้อมูลนี้เขียนใน C ++

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

12
ใช้ XML เป็นที่เก็บข้อมูล [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันคิดเกี่ยวกับรูปแบบ XML และคำพูดต่อไปนี้: “ XML ไม่ใช่ฐานข้อมูล มันไม่เคยตั้งใจจะเป็นฐานข้อมูล มันจะไม่เป็นฐานข้อมูล ฐานข้อมูลเชิงสัมพันธ์เป็นเทคโนโลยีที่ได้รับการพิสูจน์แล้วพร้อมด้วยประสบการณ์การใช้งานมานานกว่า 20 ปี พวกเขาเป็นของแข็งมั่นคงผลิตภัณฑ์ที่มีประโยชน์ พวกเขาจะไม่หายไป XML เป็นเทคโนโลยีที่มีประโยชน์มากสำหรับการย้ายข้อมูลระหว่างฐานข้อมูลที่แตกต่างกันหรือระหว่างฐานข้อมูลและโปรแกรมอื่น ๆ อย่างไรก็ตามมันไม่ได้เป็นฐานข้อมูล อย่าใช้อย่างเดียว "- XML ที่มีประสิทธิภาพ: 50 วิธีพิเศษในการปรับปรุง XML ของคุณโดยElliotte Rusty Harold (หน้า 230, ตอนที่ 4, รายการ 41, วรรคสอง) สิ่งนี้ดูเหมือนจะเน้นว่า XML ไม่ควรใช้สำหรับการจัดเก็บข้อมูลและควรใช้สำหรับโปรแกรมเพื่อการทำงานร่วมกันของโปรแกรมเท่านั้น โดยส่วนตัวแล้วฉันไม่เห็นด้วยและapp.configไฟล์ของ. NET ที่ใช้ในการจัดเก็บการตั้งค่าของโปรแกรมเป็นตัวอย่างของการจัดเก็บข้อมูลในไฟล์ XML อย่างไรก็ตามสำหรับฐานข้อมูลมากกว่าการกำหนดค่า ฯลฯ …

4
รูปแบบการออกแบบ / กลยุทธ์สำหรับฟิลด์ที่กำหนดเองและประเภทข้อมูล
มีกลยุทธ์ทั่วไปหรือรูปแบบการออกแบบสำหรับการออกแบบแอปพลิเคชันที่มีความสามารถในการเพิ่มเขตข้อมูลที่กำหนดเองไปยังวัตถุข้อมูลหรือสำหรับการสร้างคำจำกัดความที่กำหนดเองของวัตถุ ตัวอย่างเช่นฉันกำลังคิดเกี่ยวกับผลิตภัณฑ์เช่น SalesForce ซึ่งคุณสามารถมีข้อมูลประเภทของคุณกรอบงานเช่น Expression Engine และวิธีการจัดการช่องทางและกลุ่มเขตข้อมูลช่อง(ตัวอย่าง)หรือวิธี CMSes Like wordpress มีความสามารถในการ เพิ่มฟิลด์ลงในประเภทโพสต์ที่กำหนดเอง

4
ฉันสามารถใช้โครงสร้างฐานข้อมูลของโครงการโอเพ่นซอร์สได้หรือไม่
ฉันพบโครงสร้างฐานข้อมูลสำหรับระบบ CMS และฉันต้องการคัดลอกกับ EF ที่ฐานข้อมูลนี้ทำอยู่หรือไม่การคัดลอกโครงสร้างฐานข้อมูลของซอฟต์แวร์โอเพ่นซอร์สที่อยู่ภายใต้ GNU v2 lisence หรือไม่ ฉันไม่ต้องการให้ส่วนที่เหลือของซอฟต์แวร์เพียงโครงสร้างฐานข้อมูล

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