ไม่ว่าคุณจะมีพื้นที่ฐานข้อมูลขนาดเล็กหรือเว็บไซต์อีคอมเมิร์ซขนาดใหญ่ จำเป็นอย่างยิ่งที่ฐานข้อมูลจะต้องออกแบบโครงสร้างตารางอย่างสมเหตุสมผลและใช้ประโยชน์จากพื้นที่อย่างเต็มที่ สิ่งนี้ทำให้เราต้องมีความเข้าใจอย่างสมบูรณ์และการประยุกต์ใช้ประเภทข้อมูลทั่วไปในระบบฐานข้อมูลอย่างสมเหตุสมผล ด้านล่างนี้เราจะแนะนำประสบการณ์และประสบการณ์บางอย่างแก่คุณโดยหวังว่าจะช่วยให้คุณคิดอย่างมีเหตุผลมากขึ้นเมื่อสร้างฐานข้อมูล
1. ประเภทตัวเลข
ประเภทตัวเลขแบ่งออกเป็นสามประเภทตามวิธีการจำแนกของฉัน: ประเภทจำนวนเต็ม ประเภททศนิยม และประเภทตัวเลข
สิ่งที่ฉันเรียกว่า "คลาสตัวเลข" หมายถึง DECIMAL และ NUMERIC ซึ่งเป็นประเภทเดียวกัน ไม่ใช่ประเภทตัวเลขอย่างเคร่งครัด เนื่องจากจริงๆ แล้วเก็บตัวเลขในรูปแบบของสตริง แต่ละหลักของค่า (รวมถึงจุดทศนิยม) ใช้พื้นที่เก็บข้อมูลหนึ่งไบต์ ดังนั้นประเภทนี้จึงใช้พื้นที่ในการเปรียบเทียบขนาดใหญ่ อย่างไรก็ตาม ข้อดีที่โดดเด่นประการหนึ่งคือตัวเลขทศนิยมคงที่และจะไม่ "บิดเบี้ยว" ในระหว่างการดำเนินการ ดังนั้นจึงเหมาะสำหรับช่องต่างๆ เช่น "ราคา" และ "จำนวน" ที่ไม่ต้องการความแม่นยำสูงแต่ต้องการสูงมากมากกว่า ความแม่นยำ.
ประเภททศนิยม ซึ่งก็คือประเภทตัวเลขทศนิยมนั้นมีสองประเภทคือ FLOAT และ DOUBLE ขึ้นอยู่กับความแม่นยำ ข้อได้เปรียบของพวกเขาคือความแม่นยำ FLOAT สามารถแสดงทศนิยมที่มีค่าสัมบูรณ์น้อยมากโดยมีค่าน้อยที่สุดประมาณ 1.17E-38 (0.000...0117 มีศูนย์ 37 ตัวหลังจุดทศนิยม) ในขณะที่ DOUBLE สามารถแสดงค่าสัมบูรณ์ได้น้อย ประมาณ 2.22E-308 (0.000...0222, 307 ศูนย์หลังจุดทศนิยม) เป็นทศนิยม พื้นที่เก็บข้อมูลที่ใช้โดยประเภท FLOAT และประเภท DOUBLE คือ 4 ไบต์และ 8 ไบต์ตามลำดับ หากคุณต้องการใช้ช่องทศนิยมและความแม่นยำไม่สูง แน่นอนให้ใช้ FLOAT แต่บอกตามตรงว่าข้อมูล "พลเรือน" ของเราต้องการความแม่นยำสูงขนาดนี้ได้อย่างไร ฉันยังไม่เคยใช้ทั้งสองประเภทนี้เลย - ฉันไม่พบกรณีใดที่เหมาะกับการใช้งานเลย
ประเภทที่ใช้มากที่สุดและคุ้มค่าที่สุดในการคำนวณอย่างรอบคอบคือประเภทจำนวนเต็ม จาก TINYINT ซึ่งใช้พื้นที่จัดเก็บเพียง 1 ไบต์ ไปจนถึง BIGINT ซึ่งใช้พื้นที่ 8 ไบต์ ควรพิจารณาเลือกประเภทที่ "เพียงพอ" และใช้พื้นที่จัดเก็บที่เล็กที่สุดเมื่อออกแบบฐานข้อมูล TINYINT, SMALLINT, MEDIUMINT, INT และ BIGINT ใช้พื้นที่เก็บข้อมูล 1 ไบต์, 2 ไบต์, 3 ไบต์, 4 ไบต์ และ 8 ไบต์ ตามลำดับ สำหรับจำนวนเต็มที่ไม่ได้ลงนาม จำนวนเต็มสูงสุดที่ประเภทเหล่านี้สามารถแสดงได้ตามลำดับคือ 255, 65535, 16777215 , 4294967295 และ 18446744073709551615. หากใช้เพื่อบันทึกอายุของผู้ใช้ (เช่น ไม่แนะนำให้บันทึกอายุในฐานข้อมูล) TINYINT ก็เพียงพอแล้ว ใน "Zongheng" ของ Jiucheng SMALLINT ก็เพียงพอแล้วสำหรับค่าทักษะแต่ละอย่าง ฟิลด์ IDENTIFY ของ AUTO_INCREMENT ในตารางที่จะไม่เกิน 16,000,000 แถวแน่นอน ใช้ MEDIUMINT แทน INT ลองนึกภาพแต่ละแถวจะบันทึกหนึ่งไบต์ 16,000,000 แถวสามารถบันทึกได้มากกว่า 10 เมกะไบต์