รถยนต์ประเภทต่าง ๆ เป็นตัวอย่างของปัญหาทั่วไปที่พบบ่อยครั้งในการสร้างแบบจำลองข้อมูล มันถูกเรียกว่า "generalization / specialization" ในการสร้างแบบจำลอง ER และ "superclass / subclass" ในการสร้างแบบจำลองวัตถุ
ตัวจำลองวัตถุใช้คุณสมบัติการสืบทอดที่สร้างไว้ในตัวแบบวัตถุเพื่อแก้ปัญหาได้ค่อนข้างง่าย คลาสย่อยเพียงขยายซูเปอร์คลาส
ผู้สร้างแบบจำลองเชิงสัมพันธ์ต้องเผชิญกับปัญหา วิธีการออกแบบตารางเพื่อเลียนแบบประโยชน์ที่จะได้รับจากการสืบทอด?
เทคนิคที่ง่ายที่สุดที่เรียกว่ามรดกตารางเดียว ข้อมูลเกี่ยวกับรถยนต์ทุกประเภทจัดกลุ่มเป็นตารางเดียวสำหรับรถยนต์ มีคอลัมน์คือ car_type ที่จัดกลุ่มรถยนต์ทุกประเภทเข้าด้วยกัน ไม่มีรถยนต์ใดที่สามารถเป็นของมากกว่าหนึ่งประเภท หากคอลัมน์ไม่เกี่ยวข้องกับการพูดรถยนต์ไฟฟ้าก็จะถูกปล่อยให้เป็นโมฆะในแถวที่เกี่ยวข้องกับรถยนต์ไฟฟ้า
โซลูชันที่เรียบง่ายนี้ทำงานได้ดีสำหรับกรณีขนาดเล็กและเรียบง่าย การมี NULL จำนวนมากเพิ่มเล็กน้อยไปยังโอเวอร์เฮดการจัดเก็บและเล็กน้อยเพื่อดึงโอเวอร์เฮด ผู้พัฒนาอาจต้องเรียนรู้ตรรกะสามค่าของ SQLถ้าทำการทดสอบบูลีนในคอลัมน์ที่ไม่มีค่า สิ่งนี้อาจทำให้งงงันในตอนแรก แต่ก็มีคนคุ้นเคยกับมัน
มีเทคนิคที่เรียกว่าเป็นมรดกโต๊ะระดับ ในการออกแบบนี้มีตารางแยกต่างหากสำหรับ gas_car, electric_car และ hybrid_car นอกเหนือจากตารางรวมรถยนต์สำหรับพวกเขาทั้งหมด เมื่อคุณต้องการข้อมูลทั้งหมดเกี่ยวกับรถยนต์ประเภทใดประเภทหนึ่งคุณสามารถเข้าร่วมตารางรถด้วยตารางเฉพาะที่เหมาะสม มี NULL น้อยลงในการออกแบบนี้ แต่คุณเข้าร่วมได้มากขึ้น เทคนิคนี้ทำงานได้ดีขึ้นในกรณีที่มีขนาดใหญ่และซับซ้อนมากขึ้น
มีเทคนิคที่สามที่เรียกว่าคีย์หลักที่ใช้ร่วมกัน เทคนิคนี้มักใช้ร่วมกับการสืบทอดตารางคลาส ตารางพิเศษสำหรับคลาสย่อยมีสำเนาของคีย์หลักของรายการที่เกี่ยวข้องในตารางรถยนต์ คอลัมน์รหัสนี้สามารถประกาศให้เป็นทั้งคีย์หลักและคีย์ต่างประเทศ
สิ่งนี้เกี่ยวข้องกับการเขียนโปรแกรมเพิ่มเติมเล็กน้อยเมื่อมีการเพิ่มรถยนต์ใหม่ แต่จะทำให้การเข้าร่วมนั้นง่ายง่ายและรวดเร็ว
ซูเปอร์คลาสและคลาสย่อยเกิดขึ้นตลอดเวลาในโลกแห่งความเป็นจริง อย่ากลัว แต่ทดสอบการออกแบบเบื้องต้นเพื่อประสิทธิภาพ หากความพยายามครั้งแรกของคุณเรียบง่ายและมีเสียงคุณจะสามารถปรับแต่งมันเพื่อเร่งความเร็ว