MySQL มีการสนับสนุนประเภทข้อมูลที่กำหนดเองหรือไม่? ตัวอย่างเช่นอาจมีการจัดเก็บรหัสไปรษณีย์ในvarchar(10)เขตข้อมูล แต่สามารถย่อเป็นได้intโดยมีตัวเลือกว่างเปล่าและตั้งค่าสถานะว่าเป็นรหัสไปรษณีย์ 5 หลักหรือ 5 + 4 หลัก
มีวิธีติดตั้งชนิดข้อมูลที่ไร้รอยต่อสำหรับสิ่งต่าง ๆ หรือไม่? เท่าที่แอปพลิเคชันเกี่ยวข้องมันจะเป็นประเภทสตริงจะมีการตัดทอนข้อมูล (โดยมีหรือไม่มีการเตือน) หากแอปพลิเคชันผ่านข้อมูลที่ไม่ถูกต้อง
สามารถใช้ฟังก์ชั่นที่กำหนดเองได้ (ตัวอย่างเช่นมีฟังก์ชั่นINET_ATONบิวด์อินสำหรับที่อยู่ IPv4 แต่ไม่อนุญาตให้ทำสิ่งต่าง ๆzip LIKE '12345%'ที่ควรทำดัชนีอย่างเหมาะสมการสนับสนุนที่เขียนอย่างดีสำหรับประเภทข้อมูลที่กำหนดเองจะอนุญาตให้ทำเครื่องหมายชนิดข้อมูล เป็นจัดเรียง. ดังนั้นขนาดกะทัดรัดเมื่อเรียงลำดับจะเรียงลำดับเช่นเดียวกับถ้ามันเป็นzip intzip varchar(10)
สิ่งนี้จะทำให้คอลัมน์มีความกว้างคงที่มันจะอนุญาตให้มีการลดขนาดหน่วยเก็บข้อมูลตัวแปร 6 หรือ 10 ไบต์ลงเหลือ 4 ไบต์ของความกว้างคงที่
มีการใช้งานที่เกี่ยวข้องหลายอย่าง
- รหัสไปรษณีย์
- ที่อยู่ IPv6
- ฟิลด์การประทับเวลาที่กำหนดเองที่มีความแม่นยำระดับนาทีและความจุเกินกว่าที่
2038มีการใช้พื้นที่เก็บข้อมูลน้อยกว่าdatetimeแต่ไม่จำเป็นต้องสนับสนุนวันที่ก่อนปีของการนำไปใช้ (กล่าวว่า min อาจเป็น 2007 หากเป็นวันที่เก่าที่สุดในระบบ) - การประทับเวลาที่ใช้ DST (ซึ่งไม่มีอยู่จริง )
- รัฐสองตัวอักษรของสหรัฐอเมริกาสามารถจัดเก็บในไบต์เดียว
- ความยาว
ENUMสามารถแยกออกเป็นประเภทข้อมูลที่กำหนดเองเพื่อให้DESCRIBEผลลัพธ์ที่ได้จะไม่ยุ่งเหยิงเมื่อมองด้วยการห่อทั้งหมด
ฉันคาดว่าตัวจัดการชนิดข้อมูลจะถูกจัดเก็บคล้ายกับวิธีการจัดเก็บฟังก์ชัน
มีอะไรในระยะไกลเช่นนี้ในเครื่องมือฐานข้อมูลใด ๆ ฉันส่วนใหญ่ใช้ MySQL แต่ฉันอยากรู้ว่าสิ่งนี้เคยถูกนำไปใช้หรือไม่ทำให้แอปพลิเคชันเรียกใช้ฟังก์ชันเช่นINET_ATONฟังก์ชัน
MS SQL ดูเหมือนจะมีบางอย่างในลักษณะนั้น แต่ฉันอยากจะรู้ว่ามันเป็นมากกว่าคำพ้อง (ตัวอย่างเช่นbooleanอาจจะเป็นคำพ้องหาtinyint(1)หรือpostal_codeอย่างใดอย่างหนึ่งcharหรือvarchar (5หรือ9หรือ10)) พ้องจะไม่ได้สิ่งที่ฉันถามเกี่ยวกับที่นี่
IPv6a binary(16)หรือ จำกัด เฉพาะ aliasing (ซึ่งสามารถใช้สำหรับการstateเป็นenums)
intจะไม่ทำงานฐานข้อมูลสำหรับสากล - แคนาดายกตัวอย่างเช่นการใช้รูปแบบของ 'A9A A9A ฯ การสร้างประเภทข้อมูลที่กำหนดเองสำหรับรหัสไปรษณีย์น่าจะเป็นความคิดที่ดี อย่างไรก็ตามคุณอาจต้องการตรวจสอบอีกครั้งว่าคุณวางแผนที่จะจัดการกับสิ่งเหล่านั้นอย่างไร (การจัดเก็บสถานะในเขตข้อมูลไบต์เดียวมีปัญหา 'อื่น ๆ ' ที่อาจเกิดขึ้นได้) และอย่าดำเนินการประเภทข้อมูลวันที่ / เวลาอีกครั้งเว้นแต่ว่าข้อมูลที่ให้นั้นจะไม่เพียงพอ (ขนาดไม่นับ) คุณจะสร้างความสับสนให้กับผู้คน