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

การออกแบบฐานข้อมูลเป็นกระบวนการในการระบุโครงสร้างและด้านตรรกะของฐานข้อมูล เป้าหมายของการออกแบบฐานข้อมูลคือการแสดง "จักรวาลแห่งวาทกรรม" - ประเภทของข้อเท็จจริงกฎเกณฑ์ทางธุรกิจและข้อกำหนดอื่น ๆ ที่ฐานข้อมูลมีวัตถุประสงค์เพื่อเป็นแบบจำลอง

11
สตริงตัวแทนผู้ใช้สามารถรับได้ขนาดใหญ่เพียงใด
ถ้าคุณจะเก็บตัวแทนผู้ใช้ไว้ในฐานข้อมูลคุณจะหาที่พักให้ใหญ่แค่ไหน? ฉันพบบทความด้านเทคนิคนี้ซึ่งแนะนำให้รักษา UA ที่ต่ำกว่า 200 ดูเหมือนว่าจะไม่ได้รับการกำหนดไว้ในข้อกำหนด HTTP อย่างน้อยไม่พบ UA ของฉันมีอักขระอยู่ 149 ตัวและดูเหมือนว่า. NET แต่ละเวอร์ชันจะถูกเพิ่มเข้าไป ฉันรู้ว่าฉันสามารถแยกสตริงออกและทำลายมันลง แต่ฉันไม่ต้องการ แก้ไข ตามบล็อกนี้IE9 จะเปลี่ยนเป็นส่งสตริง UA สั้น ๆ นี่คือการเปลี่ยนแปลงที่ดี

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

12
ลบคีย์หลักใน MySQL
ฉันมีตารางคีต่อไปนี้ซึ่งแมป user_customers กับสิทธิ์ในฐานข้อมูล MySQL สด: mysql> describe user_customer_permission; +------------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_customer_id | int(11) | NO | PRI | NULL | | | permission_id …

14
สตริงเป็นคีย์หลักในฐานข้อมูล SQL
ฉันไม่คุ้นเคยกับฐานข้อมูลและทฤษฎีเบื้องหลังการทำงานของพวกเขา มันช้าลงหรือไม่จากจุดยืนประสิทธิภาพ (การแทรก / อัพเดต / การสืบค้น) เพื่อใช้ Strings สำหรับคีย์หลักมากกว่าจำนวนเต็ม?

11
วิธีควบคุมเวอร์ชันของเร็กคอร์ดในฐานข้อมูล
สมมติว่าฉันมีบันทึกในฐานข้อมูลและทั้งผู้ดูแลระบบและผู้ใช้ปกติสามารถทำการอัปเดตได้ ทุกคนสามารถแนะนำวิธีการ / สถาปัตยกรรมที่ดีวิธีควบคุมเวอร์ชันทุกการเปลี่ยนแปลงในตารางนี้เพื่อให้สามารถย้อนกลับระเบียนไปยังการแก้ไขก่อนหน้าได้

19
กุญแจสำรองกับคีย์ธรรมชาติ / ธุรกิจ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ที่นี่เราไปอีกครั้งการโต้แย้งเก่ายังคงเกิดขึ้น ... เราจะมีคีย์ธุรกิจเป็นคีย์หลักหรือเราควรมีรหัสตัวแทน (เช่นข้อมูลประจำตัวของ SQL Server) ด้วยข้อ จำกัด เฉพาะในฟิลด์คีย์ธุรกิจหรือไม่ กรุณาให้ตัวอย่างหรือหลักฐานเพื่อสนับสนุนทฤษฎีของคุณ

10
การเก็บเงินในคอลัมน์ทศนิยม - ความแม่นยำและมาตราส่วนอะไร
ฉันใช้คอลัมน์ทศนิยมเพื่อเก็บค่าเงินไว้ในฐานข้อมูลและวันนี้ฉันสงสัยว่าความแม่นยำและขนาดที่ใช้ เนื่องจากว่าคอลัมน์ถ่านที่มีความกว้างคงที่นั้นมีประสิทธิภาพมากกว่าฉันจึงคิดเหมือนกันว่าอาจเป็นจริงสำหรับคอลัมน์ทศนิยม ใช่ไหม? ฉันควรใช้ความแม่นยำและสเกลใด ฉันคิดแม่นยำ 24/8 overkill นั้นไม่เพียงพอหรือตกลง? นี่คือสิ่งที่ฉันตัดสินใจที่จะทำ: จัดเก็บอัตราการแปลง (เมื่อมี) ในตารางธุรกรรมเองเป็นแบบลอย เก็บสกุลเงินในตารางบัญชี จำนวนการทำธุรกรรมจะเป็น DECIMAL(19,4) การคำนวณทั้งหมดที่ใช้อัตราการแปลงจะได้รับการจัดการโดยแอปพลิเคชันของฉันดังนั้นฉันจึงควบคุมปัญหาการปัดเศษ ฉันไม่คิดว่าการลอยตัวของอัตราการแปลงเป็นปัญหาเนื่องจากเป็นข้อมูลอ้างอิงเป็นส่วนใหญ่และฉันจะแปลงเป็นทศนิยมต่อไป ขอบคุณทุกท่านสำหรับการป้อนข้อมูลที่มีค่าของคุณ

12
การออกแบบฐานข้อมูลสำหรับการติดแท็ก
คุณจะออกแบบฐานข้อมูลเพื่อสนับสนุนคุณสมบัติการแท็กต่อไปนี้ได้อย่างไร: รายการอาจมีแท็กจำนวนมาก ค้นหารายการทั้งหมดที่ติดแท็กด้วยชุดแท็กที่กำหนดจะต้องเป็นแบบด่วน (รายการนั้นต้องมีแท็กทั้งหมดดังนั้นจึงเป็นการค้นหาแบบ AND ไม่ใช่การค้นหาแบบ OR) การสร้าง / การเขียนรายการอาจช้าลงเพื่อเปิดใช้การค้นหา / อ่านอย่างรวดเร็ว ตามหลักการแล้วการค้นหารายการทั้งหมดที่ติดแท็กด้วย (อย่างน้อย) ชุดของแท็กที่กำหนดควรทำโดยใช้คำสั่ง SQL เดี่ยว เนื่องจากไม่ทราบจำนวนแท็กรวมถึงจำนวนแท็กในรายการใด ๆ และอาจสูงดังนั้นการใช้ JOIN จึงเป็นไปไม่ได้ ความคิดใด ๆ ขอบคุณสำหรับคำตอบทั้งหมด อย่างไรก็ตามหากฉันไม่เข้าใจผิดคำตอบที่ระบุจะแสดงวิธีการค้นหาในแท็ก (เลือกรายการทั้งหมดที่มีแท็กหนึ่งรายการขึ้นไป) ฉันกำลังมองหาที่มีประสิทธิภาพและค้นหา (เลือกรายการทั้งหมดที่มีแท็ก n ทั้งหมด - และอาจมากกว่า)

26
เคยมีเวลาบ้างไหมที่ใช้ความสัมพันธ์แบบ 1: 1 กับฐานข้อมูล
ฉันคิดถึงวันธรรมดาในการทำให้เป็นมาตรฐานและมันเกิดขึ้นกับฉันฉันไม่สามารถนึกถึงเวลาที่ควรมีความสัมพันธ์แบบ 1: 1 ในฐานข้อมูล Name:SSN? ฉันต้องการพวกเขาในตารางเดียวกัน PersonID:AddressID? อีกครั้งตารางเดียวกัน ฉันสามารถสร้างตัวอย่างที่มีค่าเป็นล้าน ๆ ได้คือ 1: มากหรือมาก: มาก (พร้อมโต๊ะกลางที่เหมาะสม) แต่ไม่เคยเป็น 1: 1 ฉันขาดอะไรที่ชัดเจนหรือไม่

13
วิธีเก็บข้อมูลทางประวัติศาสตร์
เพื่อนร่วมงานบางคนกับฉันได้ถกเถียงกันถึงวิธีที่ดีที่สุดในการเก็บข้อมูลทางประวัติศาสตร์ ปัจจุบันสำหรับบางระบบฉันใช้ตารางแยกเพื่อเก็บข้อมูลประวัติและฉันเก็บตารางดั้งเดิมสำหรับบันทึกปัจจุบันที่ใช้งานอยู่ สมมุติว่าฉันมีตาราง FOO ภายใต้ระบบของฉันระเบียนที่ใช้งานอยู่ทั้งหมดจะอยู่ใน FOO และระเบียนที่ผ่านมาทั้งหมดจะอยู่ใน FOO_Hist ผู้ใช้สามารถอัปเดตฟิลด์ต่าง ๆ มากมายใน FOO ได้ดังนั้นฉันต้องการรักษาบัญชีที่ถูกต้องของทุกสิ่งที่อัปเดต FOO_Hist เก็บข้อมูลในฟิลด์เดียวกับ FOO ยกเว้นการเพิ่ม HIST_ID โดยอัตโนมัติ เวลา FOO มีการปรับปรุงทุกฉันดำเนินการคำสั่งแทรกเข้าไปใน FOO_Hist insert into FOO_HIST select * from FOO where id = @idคล้ายกับ: เพื่อนร่วมงานของฉันบอกว่านี่คือการออกแบบที่ไม่ดีเพราะฉันไม่ควรมีสำเนาที่แน่นอนของตารางด้วยเหตุผลทางประวัติศาสตร์และควรแทรกระเบียนอื่นลงในตารางที่ใช้งานอยู่ด้วยธงระบุว่ามันมีวัตถุประสงค์เพื่อประวัติศาสตร์ มีมาตรฐานในการจัดการกับการจัดเก็บข้อมูลประวัติ? สำหรับฉันดูเหมือนว่าฉันไม่ต้องการที่จะทำให้ยุ่งเหยิงบันทึกที่ใช้งานของฉันกับบันทึกทางประวัติศาสตร์ทั้งหมดของฉันในตารางเดียวกันโดยพิจารณาว่าอาจมีมากกว่าหนึ่งล้านรายการ (ฉันกำลังคิดในระยะยาว) คุณหรือ บริษัท ของคุณจัดการกับสิ่งนี้อย่างไร ฉันใช้ MS SQL Server 2008 แต่ฉันต้องการที่จะเก็บคำตอบทั่วไปและโดยพลการของ DBMS ใด ๆ

7
การเก็บค่าแฮช SHA1 ใน MySQL
ฉันมีคำถามง่าย ๆ ที่เกิดขึ้นเมื่อฉันต้องการเก็บผลลัพธ์ของการแฮช SHA1 ในฐานข้อมูล MySQL: นานแค่ไหนที่ควรVARCHARข้อมูลจะอยู่ในที่ฉันเก็บผลกัญชาหรือไม่

10
มีเหตุผลที่ดีที่ฉันเห็น VARCHAR (255) ใช้บ่อยไหม (ตรงกันข้ามกับความยาวอื่น)?
ในหลายหลักสูตรหนังสือและงานฉันได้เห็นเขตข้อมูลข้อความที่กำหนดเป็น VARCHAR (255) เป็นค่าเริ่มต้นสำหรับข้อความ "shortish" มีเหตุผลที่ดีหรือไม่ที่มีการเลือกความยาว 255 บ่อยครั้งนอกเหนือจากการเป็นจำนวนรอบที่ดี ? มันเป็นสิ่งที่ค้างไว้บางครั้งในอดีตเมื่อมีเหตุผลที่ดี (ไม่ว่าวันนี้จะมีผลหรือไม่)? แน่นอนฉันรู้ว่าขีด จำกัด ที่แน่นกว่าจะเหมาะกว่าถ้าคุณรู้ว่าความยาวสูงสุดของสตริง แต่ถ้าคุณใช้ VARCHAR (255) ซึ่งอาจบ่งบอกว่าคุณไม่ทราบความยาวสูงสุดเฉพาะว่าเป็นสตริง "shortish" หมายเหตุ: ฉันพบคำถามนี้ ( varchar (255) v tinyblob v tinytext ) ซึ่งบอกว่า VARCHAR ( n ) ต้องการหน่วยเก็บข้อมูล +1 nไบต์สำหรับn <= 255, n +2 ไบต์ของที่เก็บสำหรับn > 255 นี่เป็นเหตุผลเดียวหรือไม่ ดูเหมือนจะเป็นเรื่องที่ไม่มีกฎเกณฑ์เนื่องจากคุณจะประหยัดเพียงสองไบต์เมื่อเปรียบเทียบกับ VARCHAR (256) และคุณสามารถบันทึกอีกสองไบต์ได้อย่างง่ายดายโดยการประกาศ VARCHAR …


14
แบบสอบถามย่อยเข้าร่วม
ฉันปรับโครงสร้างส่วนที่ช้าของแอปพลิเคชันที่เราสืบทอดจาก บริษัท อื่นให้ใช้การเข้าร่วมภายในแทนแบบสอบถามย่อยเช่น: WHERE id IN (SELECT id FROM ...) แบบสอบถามที่มีการปรับโครงสร้างใหม่จะทำงานได้เร็วขึ้นประมาณ 100x (~ 50 วินาทีถึง ~ 0.3) ฉันคาดว่าจะได้รับการปรับปรุง แต่ใคร ๆ ก็สามารถอธิบายได้ว่าทำไมมันถึงรุนแรง คอลัมน์ที่ใช้ในส่วนคำสั่ง where ถูกทำดัชนีทั้งหมด SQL ดำเนินการค้นหาในส่วนคำสั่ง where หนึ่งครั้งต่อแถวหรือบางอย่างหรือไม่? อัปเดต - อธิบายผลลัพธ์: ความแตกต่างอยู่ในส่วนที่สองของแบบสอบถาม "where id in ()" - 2 DEPENDENT SUBQUERY submission_tags ref st_tag_id st_tag_id 4 const 2966 Using where vs …

2
SQL ON DELETE CASCADE การลบเกิดขึ้นแบบไหน?
ถ้าฉันมีสองความสัมพันธ์ในฐานข้อมูลเช่นนี้ CREATE TABLE Courses ( CourseID int NOT NULL PRIMARY KEY, Course VARCHAR(63) NOT NULL UNIQUE, Code CHAR(4) NOT NULL UNIQUE ); CREATE TABLE BookCourses ( EntryID int NOT NULL PRIMARY KEY, BookID int NOT NULL, Course CHAR(4) NOT NULL, CourseNum CHAR(3) NOT NULL, CourseSec CHAR(1) NOT NULL ); และฉันสร้างความสัมพันธ์สำคัญต่างประเทศระหว่างสองเช่นนี้ …

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