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

แท็กนี้สำหรับคำถามฐานข้อมูลทั่วไป หากคำถามของคุณเฉพาะกับ SQL ให้ใช้แท็กนั้นแทน

7
วิธีที่จะมีประวัติการเปลี่ยนแปลงของรายการฐานข้อมูล
มีวิธีใดบ้างที่จะอนุญาตการกำหนดเวอร์ชันของรายการฐานข้อมูล (ข้อมูล) คิดถึงความสามารถของระบบการจัดการเนื้อหาเพื่อย้อนกลับการเปลี่ยนแปลงของบทความ ข้อดี / ข้อเสียของพวกเขาคืออะไร
21 design  database 

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

4
การใช้ไฟล์แฟลตเทียบกับฐานข้อมูล / API เป็นการขนส่งระหว่างส่วนหน้าและส่วนหลัง
ฉันมีแอปพลิเคชั่นที่สร้างการสนทนาที่ค่อนข้างร้อนแรงระหว่างนักพัฒนาสองคน โดยทั่วไปจะแบ่งเป็นเลเยอร์เว็บและเลเยอร์แบ็กเอนด์ เลเยอร์เว็บรวบรวมข้อมูลโดยแบบฟอร์มเว็บอย่างง่ายหยุดข้อมูลนี้เป็นเอกสาร JSON (แท้จริงไฟล์. json) ลงในโฟลเดอร์เฝ้าดูที่ใช้โดยส่วนหลัง ส่วนหลังทำการสำรวจโฟลเดอร์นี้ทุกสองสามวินาทีหยิบไฟล์ขึ้นมาและทำหน้าที่ของมัน ตัวไฟล์เองนั้นง่ายมาก (เช่นข้อมูลสตริงทั้งหมด, ไม่มีการซ้อน), และประมาณ 1-2k ที่ใหญ่ที่สุด, โดยระบบใช้เวลาส่วนใหญ่ในการใช้งาน (แต่การกระจายข้อความสูงสุด 100 ข้อความในเวลาใดก็ตาม) ขั้นตอนการประมวลผลส่วนหลังใช้เวลาประมาณ 10 นาทีต่อข้อความ ข้อโต้แย้งเกิดขึ้นเมื่อผู้พัฒนารายหนึ่งแนะนำว่าการใช้ระบบไฟล์เป็นเลเยอร์การส่งข้อความเป็นวิธีแก้ปัญหาที่ไม่ดีเมื่อบางสิ่งเช่นฐานข้อมูลเชิงสัมพันธ์ (MySQL), ฐานข้อมูล noSQL (Redis) หรือแม้แต่การเรียก REST API ธรรมดาควรใช้แทน ควรสังเกตว่า Redis ถูกใช้ที่อื่นในองค์กรสำหรับการจัดการข้อความที่อยู่ในคิว ข้อโต้แย้งที่ฉันได้ยินแตกออกเป็นดังนี้ ในความโปรดปรานของไฟล์แบน: ไฟล์แบบเรียบมีความน่าเชื่อถือมากกว่าโซลูชันอื่น ๆ เนื่องจากไฟล์จะถูกย้ายจากโฟลเดอร์ "เฝ้าดู" ไปยังโฟลเดอร์ "กำลังดำเนินการ" หลังจากที่รับแล้วและท้ายที่สุดไปยังโฟลเดอร์ "เสร็จสิ้น" เมื่อเสร็จสิ้น ไม่มีความเสี่ยงของข้อความที่จะหายไปยกเว้นข้อผิดพลาดในระดับต่ำมากซึ่งจะทำลายสิ่งอื่น ๆ อย่างไรก็ตาม ไฟล์แบบแฟลตต้องการความซับซ้อนทางเทคนิคที่น้อยกว่าในการทำความเข้าใจ - เพียงแค่catมัน …

3
วิธีจัดเก็บข้อมูลที่สั่งซื้อในฐานข้อมูลเชิงสัมพันธ์
ฉันพยายามที่จะเข้าใจวิธีการจัดเก็บข้อมูลที่สั่งซื้ออย่างถูกต้องในฐานข้อมูลเชิงสัมพันธ์ ตัวอย่าง: สมมติว่าฉันมีเพลย์ลิสต์ประกอบด้วยเพลง ภายในฐานข้อมูลเชิงสัมพันธ์ของฉันฉันมีสารบัญPlaylistsประกอบด้วยข้อมูลเมตาบางส่วน (ชื่อผู้สร้าง ฯลฯ ) ฉันยังมีตารางที่เรียกว่าSongsที่มีข้อมูลplaylist_idรวมถึงข้อมูลเฉพาะเพลง (ชื่อศิลปินระยะเวลา ฯลฯ ) ตามค่าเริ่มต้นเมื่อมีการเพิ่มเพลงใหม่ลงในเพลย์ลิสต์เพลงจะถูกต่อท้าย เมื่อสั่งซื้อบน Song-ID (น้อยไปหามาก) คำสั่งซื้อจะเป็นลำดับของการเพิ่ม แต่ถ้าหากผู้ใช้สามารถสั่งซื้อเพลงในรายการเพลงได้อีกครั้ง ฉันคิดไอเดียสองสามข้อแต่ละข้อมีข้อดีและข้อเสีย: คอลัมน์เรียกว่าorderซึ่งเป็นจำนวนเต็ม เมื่อเพลงถูกย้ายลำดับของเพลงทั้งหมดระหว่างตำแหน่งเก่าและตำแหน่งใหม่จะเปลี่ยนไปเพื่อให้สอดคล้องกับการเปลี่ยนแปลง ข้อเสียของเรื่องนี้คือต้องมีการค้นหาจำนวนมากในแต่ละครั้งที่มีการย้ายเพลงและอัลกอริทึมการย้ายนั้นไม่สำคัญกับตัวเลือกอื่น ๆ คอลัมน์ที่เรียกว่าorderซึ่งเป็นทศนิยม ( NUMERIC) เมื่อเพลงถูกย้ายมันจะถูกกำหนดค่าจุดลอยตัวระหว่างตัวเลขสองตัวที่อยู่ติดกัน ข้อเสียเปรียบ: เขตข้อมูลทศนิยมใช้เนื้อที่มากขึ้นและอาจเป็นไปได้ที่จะใช้ความแม่นยำจนหมดเว้นแต่จะได้รับการดูแลเพื่อกระจายช่วงใหม่หลังจากการเปลี่ยนแปลงทุกครั้ง อีกวิธีหนึ่งก็คือการมีpreviousและnextฟิลด์ที่อ้างอิงเพลงอื่น ๆ (หรือเป็น NULL ในกรณีของเพลงแรก, resp. เพลงสุดท้ายในเพลย์ลิสต์ในขณะนี้โดยทั่วไปคุณสร้างรายการที่ลิงก์ ) ข้อเสียเปรียบ: ข้อความค้นหาเช่น 'find Xth Song ในรายการ' ไม่ใช่เวลาคงที่อีกต่อไป แต่จะเป็นเวลาเชิงเส้นแทน ขั้นตอนใดที่ใช้บ่อยที่สุดในการปฏิบัติ? ขั้นตอนใดที่เร็วที่สุดสำหรับฐานข้อมูลขนาดกลางถึงขนาดใหญ่ มีวิธีอื่นอีกไหมในการเก็บเรื่องนี้? แก้ไข:เพื่อความง่ายในตัวอย่างเพลงเป็นของเพลย์ลิสต์เดียวเท่านั้น (ความสัมพันธ์แบบหนึ่งต่อหนึ่ง) แน่นอนเราสามารถใช้ …

9
ข้อ จำกัด ในฐานข้อมูลเชิงสัมพันธ์ - ทำไมไม่ลบอย่างสมบูรณ์?
มีเหตุผลใดที่จะสร้างข้อ จำกัด ระหว่างตาราง (ภายใน SQLserver) ทุกวันนี้? ถ้าเป็นเช่นนั้นเมื่อไหร่? แอปพลิเคชั่นส่วนใหญ่ในพื้นที่ของฉันสร้างขึ้นตามหลักการของวัตถุและตารางจะเข้าร่วมได้ตามต้องการ ความต้องการขึ้นอยู่กับความต้องการจากแอปพลิเคชัน ฉันจะไม่โหลดตารางที่ จำกัด สำหรับการค้นหาอย่างง่ายซึ่งในทางกลับกัน (หลังจากการกระทำ) ต้องใช้การค้นหาแบบง่ายอีกอันหนึ่ง เครื่องมือ ORM เช่น EntityContext, Linq2Data, NHibernate ยังจัดการกับข้อ จำกัด ด้วยตัวเองอย่างน้อยคุณก็รู้ว่าตารางใดที่ต้องการซึ่งกันและกัน การทำข้อ จำกัด ภายในเซิร์ฟเวอร์นั้นเกี่ยวกับการเปลี่ยนแปลง (บังคับ) เดียวกันสองครั้งหรือไม่? นี่ไม่ใช่คำถามสำหรับการตัดสินใจ แต่ฐานข้อมูลนี้ออกแบบแตกต่างกันมาก การออกแบบดูดีปกติสะท้อนวัตถุที่ใช้โดยแอพพลิเคชั่นเป็นส่วนใหญ่ สิ่งที่รบกวนฉันคือข้อ จำกัด ทั้งหมดที่กำหนดค่าไว้ภายใน SQLserver ด้วย "not cascade" ซึ่งหมายความว่าคุณต้องเล่น "ค้นหาและค้นหา" เมื่อเข้ารหัสคิวรีฐานข้อมูลใหม่ บางกรณีต้องการคำสั่งซื้อที่แน่นอนถึง 10 ระดับเพื่อทำการลบแบบครั้งเดียว เรื่องนี้ทำให้ฉันประหลาดใจและฉันไม่แน่ใจว่าจะจัดการกับมันอย่างไร ในโลกเรียบง่ายของฉันการตั้งค่านั้นทำให้ข้อ จำกัด สูญเสียจุดประสงค์ส่วนใหญ่ ตกลงถ้าฐานข้อมูลถูกเข้าถึงจากโฮสต์ที่ไม่มีความรู้ด้านการออกแบบ คุณจะทำอย่างไรในสถานการณ์นี้ …

4
ทำไมไม่ใช้ SQL แทน GraphQL
เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้เกี่ยวกับ GraphQL ซึ่งอ้างว่าเหนือกว่า RESTful อย่างไรก็ตามฉันเริ่มสงสัยว่าทำไมเราไม่ใส่คำสั่ง SQL ลงในคำขอ HTTP GET ตัวอย่างเช่นใน GraphQL ฉันจะเขียน { Movie(id: "cixos5gtq0ogi0126tvekxo27") { id title actors { name } } } ซึ่งไม่ง่ายกว่า SQL แบบเดียวกัน SELECT id, title FROM movies WHERE id = cixos5gtq0ogi0126tvekxo27; SELECT actors.name FROM actors, actors_movies WHERE actors.id == movies.actor_id AND movie.id == …

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

4
วิธีการสร้างรหัส OO ที่ดีขึ้นในแอปพลิเคชันที่ขับเคลื่อนด้วยฐานข้อมูลเชิงสัมพันธ์ซึ่งฐานข้อมูลนั้นได้รับการออกแบบไม่ดี
ฉันกำลังเขียนโปรแกรมเว็บ Java ที่ประกอบด้วยส่วนใหญ่ของหน้าคล้ายกันที่ทุกหน้ามีหลายตารางและตัวกรองที่ใช้กับตารางเหล่านั้น ข้อมูลในตารางเหล่านี้มาจากฐานข้อมูล SQL ฉันใช้ myBatis เป็น ORM ซึ่งอาจไม่ใช่ตัวเลือกที่ดีที่สุดในกรณีของฉันเนื่องจากฐานข้อมูลได้รับการออกแบบไม่ดีและ mybatis เป็นเครื่องมือที่มุ่งเน้นฐานข้อมูลมากขึ้น ฉันพบว่าฉันกำลังเขียนรหัสซ้ำกันมากมายเนื่องจากเนื่องจากการออกแบบที่ไม่ดีของฐานข้อมูลฉันต้องเขียนแบบสอบถามที่แตกต่างกันสำหรับสิ่งที่คล้ายกันเนื่องจากแบบสอบถามเหล่านั้นอาจแตกต่างกันมาก นั่นคือฉันไม่สามารถหาพารามิเตอร์ของแบบสอบถามได้อย่างง่ายดาย สิ่งนี้แพร่กระจายเข้าไปในรหัสของฉันและแทนที่จะเติมแถวในคอลัมน์ในตารางของฉันด้วยการวนรอบแบบง่ายฉันมีรหัสเช่น: ได้รับข้อมูล (p1, ... , ปี่); รับข้อมูลB (p1, ... , pi); รับข้อมูลC (p1, ... , pi); รับข้อมูลD (p1, ... , pi); ... และในไม่ช้านี้จะระเบิดเมื่อเรามีตารางที่แตกต่างกันและมีคอลัมน์ต่างกัน นอกจากนี้ยังเพิ่มความซับซ้อนให้กับความจริงที่ว่าฉันใช้ "ประตู" ซึ่งมีผลต่อการแมปวัตถุกับองค์ประกอบ html ในหน้าเว็บ ดังนั้นโค้ด Java ของฉันจึงกลายเป็นอะแดปเตอร์ระหว่างฐานข้อมูลและส่วนหน้าซึ่งทำให้ฉันสร้างการเดินสายจำนวนมากโค้ดสำเร็จรูปที่มีตรรกะบางอย่างแทรกอยู่ภายใน วิธีการแก้ปัญหาที่ถูกต้องจะห่อหุ้ม mappers ORM ด้วย extralayer …

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

8
จัดการผู้ใช้ที่ถูกลบ - ตารางแยกหรือเดียวกัน
สถานการณ์คือว่าฉันมีกลุ่มผู้ใช้ที่เพิ่มขึ้นและเมื่อเวลาผ่านไปผู้ใช้จะยกเลิกบัญชีของพวกเขาที่เราทำเครื่องหมายว่า 'ลบ' (ด้วยการตั้งค่าสถานะ) ในตารางเดียวกัน หากผู้ใช้ที่มีที่อยู่อีเมลเดียวกัน (นั่นคือวิธีการที่ผู้ใช้ลงชื่อเข้าใช้) ต้องการสร้างบัญชีใหม่พวกเขาสามารถลงทะเบียนอีกครั้ง แต่สร้างบัญชีใหม่ (เรามีรหัสประจำตัวที่ไม่ซ้ำกันสำหรับทุกบัญชีดังนั้นที่อยู่อีเมลจึงสามารถทำซ้ำได้ทั้งแบบสดและถูกลบ) สิ่งที่ฉันได้สังเกตเห็นว่าทั่วทั้งระบบของเราตามปกติของสิ่งที่เราอย่างต่อเนื่องสอบถามตารางการตรวจสอบผู้ใช้ผู้ใช้จะไม่ถูกลบในขณะที่สิ่งที่ฉันคิดคือการที่เราไม่จำเป็นต้องทำอย่างนั้นเลย ... ! [ชี้แจง 1: โดย 'ค้นหาอย่างต่อเนื่อง' ฉันหมายถึงเรามีข้อความค้นหาที่เป็นเช่น: '... จากผู้ใช้ WHERE isdeleted = "0" AND ... ' ตัวอย่างเช่นเราอาจต้องดึงข้อมูลผู้ใช้ทั้งหมดที่ลงทะเบียนสำหรับการประชุมทั้งหมดในวันที่ระบุดังนั้นในการค้นหานั้นเรายังมีผู้ใช้จากที่ไหน WHERE isdeleted = "0" - สิ่งนี้ทำให้ประเด็นของฉันชัดเจนขึ้นหรือไม่] (1) continue keeping deleted users in the 'main' users table (2) keep deleted users in a separate …

5
วิธีที่เหมาะสมในการซิงโครไนซ์ข้อมูลข้าม microservices คืออะไร
ฉันค่อนข้างใหม่กับสถาปัตยกรรมไมโครเซอร์วิส เรามีเว็บแอปพลิเคชันขนาดปานกลางและฉันชั่งน้ำหนักข้อดีและข้อเสียของการแบ่งมันออกเป็น microservices แทนระบบเสาหินที่เราได้ก้าวไปข้างหน้า เท่าที่ฉันเข้าใจพิจารณา microservices AและBแต่ละรายการนั้นอาศัยชุดย่อยของข้อมูลที่อีกฝ่ายมี หากข้อความถูกโพสต์โดยAบอกว่ามีบางอย่างเปลี่ยนแปลงBสามารถใช้ข้อความนั้นและทำซ้ำสำเนาของAข้อมูลในเครื่องและใช้สิ่งนั้นเพื่อทำสิ่งที่Bต้องทำ อย่างไรก็ตามจะเกิดอะไรขึ้นถ้าBลงไป / ล้มเหลวและหลังจากนั้นไม่นานก็กลับมาอีกครั้ง ในช่วงเวลาดังกล่าวAได้เผยแพร่ข้อความอีกสองข้อความ จะBทราบวิธีการอัปเดตAข้อมูลในเครื่องได้อย่างไร? จริงอยู่ถ้าBเป็นผู้บริโภคAคิวเพียงคนเดียวก็สามารถเริ่มอ่านได้เมื่อกลับมาออนไลน์ แต่จะเกิดอะไรขึ้นถ้ามีผู้บริโภครายอื่นของคิวนั้นและข้อความเหล่านั้นถูกบริโภค? เป็นตัวอย่างที่ชัดเจนยิ่งขึ้นถ้าUsersบริการมีการปรับปรุงที่อยู่อีเมลในขณะที่บริการBillingไมโครซอฟต์ล่มหากบริการBillingไมโครซอฟท์กลับมาอีกครั้งจะรู้ได้อย่างไรว่าอีเมลนั้นได้รับการปรับปรุงแล้ว? เมื่อ microservices กลับมารายการออกอากาศจะพูดว่า "เฮ้ฉันสำรองข้อมูลเอาข้อมูลปัจจุบันของคุณทั้งหมดให้ฉันหรือเปล่า" โดยทั่วไปแล้ววิธีปฏิบัติทางอุตสาหกรรมที่ดีที่สุดสำหรับการซิงโครไนซ์ข้อมูลคืออะไร

8
คุณจะออกแบบฐานข้อมูลผู้ใช้ด้วยฟิลด์ที่กำหนดเองได้อย่างไร
คำถามนี้เกี่ยวกับวิธีที่ฉันควรออกแบบฐานข้อมูลมันอาจเป็นฐานข้อมูลเชิงสัมพันธ์ / nosql ขึ้นอยู่กับสิ่งที่จะเป็นทางออกที่ดีกว่า กำหนดข้อกำหนดที่คุณจะต้องสร้างระบบที่จะเกี่ยวข้องกับฐานข้อมูลเพื่อติดตาม "บริษัท " และ "ผู้ใช้" ผู้ใช้คนเดียวเป็นของ บริษัท เดียวเสมอ ผู้ใช้สามารถเป็นของ บริษัท เดียวเท่านั้น บริษัท สามารถมีผู้ใช้หลายคน การออกแบบสำหรับตาราง "บริษัท " ค่อนข้างตรงไปตรงมา บริษัท จะมีคุณสมบัติ / คอลัมน์ต่อไปนี้: (ขอให้ง่าย) ID, COMPANY_NAME, CREATED_ON สถานการณ์แรก เรียบง่ายและตรงไปตรงมาผู้ใช้ทุกคนมีคุณลักษณะเดียวกันดังนั้นสิ่งนี้สามารถทำได้อย่างง่ายดายในลักษณะสัมพันธ์ตารางผู้ใช้: ID, COMPANY_ID, FIRST_NAME, LAST_NAME, EMAIL, CREATED_ON สถานการณ์ที่สอง จะเกิดอะไรขึ้นหาก บริษัท ต่าง ๆ ต้องการจัดเก็บแอตทริบิวต์โปรไฟล์ที่แตกต่างกันสำหรับผู้ใช้ แต่ละ บริษัท จะมีชุดแอตทริบิวต์ที่กำหนดไว้ซึ่งจะใช้กับผู้ใช้ทั้งหมดของ บริษัท นั้น ตัวอย่างเช่น: บริษัท …

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

3
เหตุใดจึงไม่ใช้ฐานข้อมูลเชิงวัตถุมากเท่ากับฐานข้อมูลเชิงสัมพันธ์ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเจอระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) มากมาย แต่เมื่อเร็ว ๆ นี้ฉันใช้โหมดไฮเบอร์เนตทำให้ฉันเริ่มสงสัยว่าทำไมฐานข้อมูล Object Oriented จึงไม่เป็นที่นิยม ถ้าภาษาเชิงวัตถุเช่น Java หรือ C # ได้รับความนิยมดังนั้นทำไมระบบการจัดการฐานข้อมูลเชิงวัตถุ (OODBMS) จึงไม่เป็นที่นิยมเช่นกัน?

10
พ่อของฉันเป็นหมอ เขายืนยันที่จะเขียนฐานข้อมูลเพื่อเก็บข้อมูลผู้ป่วยที่ไม่สำคัญโดยไม่มีพื้นฐานการเขียนโปรแกรม [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ดังนั้นตอนนี้พ่อของฉันกำลังอยู่ในขั้นตอนการ "แฮ็ค" ร่วมกับฐานข้อมูลโดยใช้ FileMaker Pro ซึ่งเป็นเครื่องมือการจัดทำฐานข้อมูลแบบ GUI สำหรับการฝึกซ้อมขนาดเล็ก (แพทย์ 4 คน) ของเขา ฐานข้อมูลจะถูกใช้เพื่อช่วยแบ่งเบาภาระในการรายงานจากเครื่องมือแพทย์ทำให้เพรียวลมเป็นกระบวนการค่อนข้างงุ่มง่าม เขาไม่มีพื้นฐานการเขียนโปรแกรมและดูเหมือนว่าจะทำทุกอย่างในอำนาจของเขาเพื่อเรียนรู้สิ่งต่าง ๆ ไม่ถูกต้อง เขามีชนิดข้อมูลที่ซ้ำกันไม่มีความสัมพันธ์ที่บังคับใช้ฐานข้อมูล (ข้อ จำกัด คีย์หลัก / ต่างประเทศ) และปัญหาอื่น ๆ อีกนับสิบรายการ เขาทำทุกอย่างด้วยมือผ่านเครื่องมือ GUI โดยใช้วิดีโอ Youtube ปัญหาของฉันคือในขณะที่ฉันต้องการให้เขาประสบความสำเร็จ 100% ฉันไม่คิดว่ามันเหมาะสมสำหรับเขาที่จะจัดการกับการตัดสินใจประเภทนี้ ฉันจะโน้มน้าวเขาได้อย่างไรหากไม่มีการศึกษาในหัวข้อเหล่านี้การแก้ปัญหาที่ถูกแฮ็กด้วยกันเป็นแนวคิดที่ไม่ดี? เขาเป็นคนที่ค่อนข้างดื้อและฉันคิดว่าเขาเห็นงานประเภทนี้ในชื่อ "childs play" ฉันควรเข้าใกล้สิ่งนี้อย่างไร แม้แต่ความคิดที่แย่ - หรือฉันคิดถูกว่าเขาควรจ้าง DBA / นักพัฒนาที่เหมาะสมเพื่อจัดการเรื่องนี้เพื่อที่มันจะไม่กลายเป็นฝันร้ายในการบำรุงรักษา? …
18 database 

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