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

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

13
เหตุใดจึงต้องใช้ฐานข้อมูลแทนที่จะบันทึกข้อมูลลงดิสก์
แทนที่จะเป็นฐานข้อมูลฉันเพิ่งจัดลำดับข้อมูลของฉันไปยัง JSON บันทึกและโหลดลงดิสก์เมื่อจำเป็น การจัดการข้อมูลทั้งหมดถูกสร้างขึ้นในโปรแกรมซึ่งเร็วกว่าและง่ายกว่าการใช้คิวรี SQL ด้วยเหตุนี้ฉันจึงไม่เคยเข้าใจว่าทำไมฐานข้อมูลจึงมีความจำเป็น ทำไมหนึ่งควรใช้ฐานข้อมูลแทนการบันทึกข้อมูลลงดิสก์
193 database  sql  mysql  nosql 

17
เป็นการดีที่จะมีคีย์หลักจำนวนเต็ม autoincrement เสมอหรือไม่
ในฐานข้อมูลของฉันฉันมักจะติดนิสัยที่จะมีคีย์หลักจำนวนเต็มที่เพิ่มขึ้นอัตโนมัติพร้อมชื่อidสำหรับทุกตารางที่ฉันทำเพื่อที่ฉันจะได้ค้นหาที่ไม่ซ้ำสำหรับแถวใดแถวหนึ่ง นี่ถือว่าเป็นความคิดที่ไม่ดีหรือไม่? มีข้อเสียใด ๆ ในการทำเช่นนี้? บางครั้งฉันก็มีดัชนีหลายอย่างเช่นid, profile_id, subscriptionsที่idเป็นตัวระบุเฉพาะการprofile_idเชื่อมโยงไปยังต่างประเทศidของProfileตาราง ฯลฯ หรือมีสถานการณ์ที่คุณไม่ต้องการเพิ่มเขตข้อมูลดังกล่าวหรือไม่

12
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะเก็บไฟล์ขนาดใหญ่ (10 MB) ไว้ในฐานข้อมูล?
ขณะนี้ฉันกำลังสร้างเว็บแอปพลิเคชันที่อนุญาตให้ผู้ใช้จัดเก็บและแชร์ไฟล์ขนาด 1 MB - 10 MB สำหรับฉันแล้วดูเหมือนว่าการจัดเก็บไฟล์ในฐานข้อมูลจะทำให้การเข้าถึงฐานข้อมูลช้าลงอย่างมาก นี่เป็นข้อกังวลที่ถูกต้องหรือไม่? ควรเก็บไฟล์ไว้ในระบบไฟล์และบันทึกชื่อไฟล์และพา ธ ในฐานข้อมูลหรือไม่? มีแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับการจัดเก็บไฟล์เมื่อทำงานกับฐานข้อมูลหรือไม่? ฉันทำงานใน PHP และ MySQL สำหรับโครงการนี้ แต่เป็นปัญหาเดียวกันสำหรับสภาพแวดล้อมส่วนใหญ่ ( Ruby on Rails , PHP , .NET ) และฐานข้อมูล (MySQL, PostgreSQL )

9
เมื่อใดจะมีคนใช้ MongoDB (หรือคล้ายกัน) ผ่าน DBMS เชิงสัมพันธ์
ฉันสับสนเล็กน้อยเกี่ยวกับสิ่ง NoSQL ทั้งหมดและเช่นนั้น เมื่อใดที่คุณจะเลือกใช้บางสิ่งเช่น MongoDB เหนือสิ่งอื่นเช่น Oracle หรือ MySQL ฉันไม่เข้าใจ "ความแตกต่าง" เท่าที่มีการใช้งานระหว่างพวกเขา จากความเข้าใจของฉันฐานข้อมูลประเภท NoSQL ไม่ได้หมายถึงการแทนที่ RDBMS แต่สิ่งที่พวกเขาตั้งใจทำ?
134 database  nosql  rdms 

17
คุณเก็บ“ วันที่คลุมเครือ” ไว้ในฐานข้อมูลได้อย่างไร
นี่เป็นปัญหาที่ฉันพบเจอในสองสามครั้ง ลองนึกภาพคุณมีบันทึกที่คุณต้องการจัดเก็บลงในตารางฐานข้อมูล ตารางนี้มีคอลัมน์ DateTime ที่ชื่อ "date_created" หนึ่งในเร็กคอร์ดนี้ถูกสร้างขึ้นมานานแล้วและคุณไม่แน่ใจจริงๆเกี่ยวกับวันที่แน่นอน แต่คุณรู้ปีและเดือน บันทึกอื่น ๆ ที่คุณรู้เพียงแค่ปี บันทึกอื่น ๆ ที่คุณรู้ว่าวันเดือนและปี คุณไม่สามารถใช้ฟิลด์ DateTime ได้เนื่องจาก "May 1978" ไม่ใช่วันที่ที่ถูกต้อง หากคุณแบ่งออกเป็นหลายคอลัมน์คุณจะไม่สามารถสืบค้นได้ มีคนอื่นวิ่งเข้าไปในนี้ถ้าเป็นเช่นนั้นคุณจัดการกับมันได้อย่างไร? เพื่อชี้แจงระบบที่ฉันกำลังสร้างมันเป็นระบบที่ติดตามคลังข้อมูล เนื้อหาบางส่วนได้ถูกผลิตมานานแล้วและสิ่งที่เรารู้คือ "พฤษภาคม 1978" ฉันสามารถจัดเก็บเป็นวันที่ 1 พฤษภาคม 1978 แต่มีเพียงวิธีที่จะแสดงว่าวันนี้มีความถูกต้องเฉพาะกับเดือน ด้วยวิธีนี้หลายปีต่อมาเมื่อฉันเรียกคืนไฟล์เก็บถาวรนั้นฉันไม่สับสนเมื่อวันที่ไม่ตรงกัน เพื่อจุดประสงค์ของฉันมันเป็นสิ่งสำคัญที่จะต้องแยก "วันที่ไม่รู้จักในเดือนพฤษภาคม 2521" กับ "1 พฤษภาคม 2521" นอกจากนี้ฉันไม่ต้องการเก็บสิ่งที่ไม่รู้จักเป็น 0 เช่น "0 พฤษภาคม 1978" เพราะระบบฐานข้อมูลส่วนใหญ่จะปฏิเสธว่าเป็นค่าวันที่ที่ไม่ถูกต้อง


9
ฐานข้อมูลควรใช้ตรรกะทางธุรกิจเท่าใด
ฉันทำงานในบางโครงการที่ใช้ตรรกะทางธุรกิจส่วนใหญ่ในฐานข้อมูล (ส่วนใหญ่ผ่านขั้นตอนการจัดเก็บ) ในอีกด้านหนึ่งฉันได้ยินจากเพื่อนโปรแกรมเมอร์บางคนว่านี่เป็นวิธีปฏิบัติที่ไม่ดี ("ฐานข้อมูลอยู่ที่นั่นเพื่อเก็บข้อมูล วิธีใดบ้างที่ดีกว่า ข้อดีของการใช้ตรรกะทางธุรกิจในฐานข้อมูลที่ฉันนึกได้คือ: การรวมศูนย์ของตรรกะทางธุรกิจ ความเป็นอิสระของประเภทแอปพลิเคชันภาษาการเขียนโปรแกรมระบบปฏิบัติการ ฯลฯ ฐานข้อมูลมีแนวโน้มน้อยที่จะโยกย้ายเทคโนโลยีหรือปรับโครงสร้างครั้งใหญ่ (AFAIK); ไม่มีการทำงานซ้ำในการโยกย้ายเทคโนโลยีแอปพลิเคชัน (เช่น. NET เป็น Java, Perl เป็น Python เป็นต้น) ข้อเสีย: SQL นั้นมีประสิทธิผลน้อยกว่าและซับซ้อนกว่าสำหรับการเขียนโปรแกรมตรรกะทางธุรกิจเนื่องจากการขาดไลบรารี่และภาษาสร้างโครงสร้างของภาษาแอพพลิเคชั่นส่วนใหญ่ โค้ดที่ยากขึ้น (ถ้าเป็นไปได้ทั้งหมด) นำมาใช้ซ้ำผ่านไลบรารี IDE ที่มีประสิทธิผลน้อยลง หมายเหตุ: ฐานข้อมูลที่ฉันกำลังพูดถึงนั้นเป็นฐานข้อมูลเชิงสัมพันธ์ฐานข้อมูลยอดนิยมเช่น SQL Server, Oracle, MySql เป็นต้น ขอบคุณ!

3
การสร้างการเชื่อมต่อฐานข้อมูล - ทำเพียงครั้งเดียวหรือแต่ละแบบสอบถาม
ในขณะนี้ฉันสร้างการเชื่อมต่อฐานข้อมูลเมื่อหน้าเว็บของฉันถูกโหลดครั้งแรก จากนั้นฉันจะประมวลผลหน้าเว็บและเรียกใช้แบบสอบถามใด ๆ กับ conection นั้น นี่เป็นวิธีที่ดีที่สุดในการทำหรือฉันควรสร้างการเชื่อมต่อฐานข้อมูลทุกครั้งที่ฉันเรียกใช้แบบสอบถามหรือไม่ ปล. ฉันรู้สึกดีกว่าที่จะสร้างการเชื่อมต่อ 1 ครั้งและใช้งานได้ แต่ฉันไม่รู้ว่าจะทำให้เกิดปัญหาอื่น ๆ หรือไม่ ฉันใช้ C # (ASP.NET) กับ MSSQL
101 c#  database  sql-server 

10
เหตุใด“ เลือก * จากตาราง” จึงถือว่าไม่เหมาะสม
เมื่อวานนี้ฉันกำลังคุยกับโปรแกรมเมอร์ "งานอดิเรก" (ฉันเป็นโปรแกรมเมอร์มืออาชีพ) เราเจองานบางอย่างของเขาและเขาบอกว่าเขามักจะค้นหาคอลัมน์ทั้งหมดในฐานข้อมูลของเขา (แม้ใน / ในเซิร์ฟเวอร์การผลิต / รหัส) ฉันพยายามโน้มน้าวเขาไม่ให้ทำ แต่ก็ยังไม่ประสบความสำเร็จ ในความคิดของฉันโปรแกรมเมอร์ควรถามสิ่งที่จำเป็นจริง ๆ เพื่อประโยชน์ของ "prettiness" ประสิทธิภาพและปริมาณการใช้งาน ฉันเข้าใจผิดกับมุมมองของฉัน?
96 database  sql  mysql  bad-code 

9
เคยใช้รายการในฐานข้อมูลเชิงสัมพันธ์หรือไม่?
ฉันพยายามออกแบบฐานข้อมูลเพื่อให้สอดคล้องกับแนวคิดโครงการและพบกับสิ่งที่ดูเหมือนว่าจะเป็นประเด็นถกเถียงกันอย่างถึงพริกถึงขิง ฉันได้อ่านบทความไม่กี่คำและ Stack Overflow บางคำตอบที่ระบุว่าไม่เคย (หรือเกือบจะไม่เคย) ตกลงในการจัดเก็บรายการ ID หรือสิ่งที่ชอบในฟิลด์ - ข้อมูลทั้งหมดควรมีความสัมพันธ์ ฯลฯ อย่างไรก็ตามปัญหาที่ฉันพบคือฉันกำลังพยายามมอบหมายงาน ผู้คนจะสร้างงานมอบหมายให้คนหลายคนและมันจะบันทึกลงในฐานข้อมูล แน่นอนถ้าฉันบันทึกงานเหล่านี้ทีละรายการใน "บุคคล" ฉันจะต้องมีคอลัมน์ "TaskID" หลอกตานับสิบ ๆ ตัวและจัดการแบบไมโครเพราะจะมีงานมอบหมายให้บุคคลหนึ่งถึง 0 ถึง 100 จากนั้นอีกครั้งถ้าฉันบันทึกงานในตาราง "งาน" ฉันจะต้องมีคอลัมน์ "PersonID" หลอกตานับสิบ ๆ ตัวและจัดการกับมันแบบไมโคร - ปัญหาเช่นเดียวกับเมื่อก่อน สำหรับปัญหาเช่นนี้จะเป็นการดีไหมที่จะบันทึกรายการ ID ที่ใช้รูปแบบเดียวหรืออีกรูปแบบหนึ่งหรือฉันไม่คิดวิธีอื่นที่ทำได้โดยไม่ต้องทำลายหลักการ?

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

2
เหตุใดจึงไม่อนุญาตให้เขียนพร้อมกันในฐานข้อมูล SQLite
ฉันกำลังเขียนโปรแกรมฐานข้อมูลโดยใช้ Java กับ SQLite ฉันพบว่าการเชื่อมต่อครั้งเดียวเท่านั้นไปยังฐานข้อมูลมีความสามารถในการเขียนในขณะที่การเชื่อมต่อหลายครั้งพร้อมกันมีความสามารถในการอ่าน ทำไมสถาปัตยกรรมของ SQLite จึงถูกออกแบบมาเช่นนี้ ตราบใดที่ทั้งสองสิ่งที่กำลังเขียนไม่ได้ถูกเขียนไปยังที่เดียวกันในฐานข้อมูลเหตุใดจึงไม่สามารถเขียนสองรายการได้ในคราวเดียว

12
SQL: สตริงว่างกับค่า NULL
ฉันรู้ว่าหัวข้อนี้ขัดแย้งกันเล็กน้อยและมีบทความ / ความคิดเห็นมากมายลอยอยู่ในอินเทอร์เน็ต โชคไม่ดีที่พวกเขาส่วนใหญ่คิดว่าบุคคลนั้นไม่รู้ว่าความแตกต่างระหว่าง NULL และสตริงว่างคืออะไร ดังนั้นพวกเขาจึงบอกเล่าเรื่องราวเกี่ยวกับผลลัพธ์ที่น่าประหลาดใจด้วยการรวม / สรุปรวมและโดยทั่วไปจะทำบทเรียน SQL ขั้นสูงเพิ่มเติม โดยการทำเช่นนี้พวกเขาพลาดจุดทั้งหมดและไม่มีประโยชน์สำหรับฉัน ดังนั้นหวังว่าคำถามนี้และคำตอบทั้งหมดจะย้ายไปข้างหน้าเล็กน้อย สมมติว่าฉันมีตารางที่มีข้อมูลส่วนบุคคล (ชื่อ, วันเกิด, ฯลฯ ) โดยที่หนึ่งในคอลัมน์คือที่อยู่อีเมลที่มีประเภท varchar เราคิดว่าด้วยเหตุผลบางคนบางคนอาจไม่ต้องการให้ที่อยู่อีเมล เมื่อแทรกข้อมูลดังกล่าว (ไม่มีอีเมล) ลงในตารางมีสองตัวเลือกที่ใช้ได้: ตั้งค่าเซลล์เป็น NULL หรือตั้งค่าเป็นสตริงว่าง ('') สมมติว่าฉันทราบถึงผลกระทบทางเทคนิคทั้งหมดของการเลือกโซลูชันหนึ่งมากกว่าโซลูชันอื่นและฉันสามารถสร้างแบบสอบถาม SQL ที่ถูกต้องสำหรับสถานการณ์ใดสถานการณ์หนึ่ง ปัญหาคือแม้เมื่อค่าทั้งสองแตกต่างกันในระดับเทคนิคพวกเขาจะเหมือนกันในระดับตรรกะ หลังจากดู NULL และ '' ฉันได้ข้อสรุปเดียว: ฉันไม่รู้ที่อยู่อีเมลของผู้ชายคนนั้น ไม่ว่าฉันจะพยายามมากแค่ไหน ฉันไม่สามารถส่งอีเมลโดยใช้ NULL หรือสตริงว่างเปล่าได้ดังนั้นเซิร์ฟเวอร์ SMTP ส่วนใหญ่ก็เห็นด้วยกับเหตุผลของฉัน ดังนั้นฉันมักจะใช้ค่า NULL ที่ฉันไม่ทราบค่าและพิจารณาสตริงว่างเปล่าเป็นสิ่งที่ไม่ดี หลังจากการพูดคุยอย่างเข้มข้นกับเพื่อนร่วมงานฉันมาด้วยคำถามสองข้อ: ฉันถูกสมมติว่าการใช้สตริงว่างเปล่าสำหรับค่าที่ไม่รู้จักทำให้ฐานข้อมูล "โกหก" …
72 design  database  sql  strings  null 

7
นามสกุลของ Null ทำให้เกิดปัญหาในหลายฐานข้อมูลได้อย่างไร
ฉันอ่านบทความเกี่ยวกับ BBC หนึ่งในตัวอย่างที่พวกเขากล่าวคือคนที่มีนามสกุล 'Null' กำลังมีปัญหาในการป้อนรายละเอียดในบางเว็บไซต์ ไม่มีคำอธิบายเกี่ยวกับข้อผิดพลาดที่พวกเขาเผชิญ แต่เท่าที่ฉันรู้สตริง 'Null' และค่า Null จริงนั้นแตกต่างอย่างสิ้นเชิง (จากมุมมองฐานข้อมูล) เหตุใดจึงทำให้เกิดปัญหาในฐานข้อมูล
71 database  null 

8
ทำไมคุณถึงต้องเก็บ Enum ไว้ใน DB
ฉันเคยเห็นคำถามมากมายเช่นนี้เพื่อขอคำแนะนำเกี่ยวกับวิธีการจัดเก็บ enums ในฐานข้อมูล แต่ฉันสงสัยว่าทำไมคุณถึงทำอย่างนั้น สมมุติว่าฉันมีเอนทิตีที่Personมีgenderเขตข้อมูลและGenderenum จากนั้นตารางบุคคลของฉันมีเพศคอลัมน์ นอกจากเหตุผลที่ชัดเจนของการบังคับใช้ความถูกต้องแล้วฉันไม่เห็นว่าทำไมฉันจึงสร้างตารางพิเศษgenderเพื่อทำแผนที่สิ่งที่ฉันมีอยู่ในแอปพลิเคชันของฉัน และฉันไม่ชอบการทำซ้ำที่จริง
69 database  enum 

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