คำถามติดแท็ก class-table-inheritance

8
คุณจะแสดงการสืบทอดในฐานข้อมูลได้อย่างไร
ฉันคิดเกี่ยวกับวิธีแสดงโครงสร้างที่ซับซ้อนในฐานข้อมูล SQL Server พิจารณาแอปพลิเคชั่นที่ต้องการจัดเก็บรายละเอียดของตระกูลวัตถุที่แชร์คุณสมบัติบางอย่าง แต่มีหลายโปรแกรมที่ไม่เหมือนกัน ตัวอย่างเช่นแพคเกจประกันภัยเชิงพาณิชย์อาจรวมถึงความรับผิด, มอเตอร์, ทรัพย์สินและความคุ้มครองครอบคลุมภายในบันทึกนโยบายเดียวกัน มันเป็นเรื่องเล็กน้อยที่จะนำสิ่งนี้ไปใช้ใน C # และอื่น ๆ เนื่องจากคุณสามารถสร้างนโยบายที่มีการรวบรวมส่วนต่างๆโดยที่ส่วนจะได้รับการถ่ายทอดตามความจำเป็นสำหรับความคุ้มครองประเภทต่างๆ อย่างไรก็ตามฐานข้อมูลเชิงสัมพันธ์ดูเหมือนจะไม่อนุญาตสิ่งนี้ได้อย่างง่ายดาย ฉันเห็นว่ามีสองตัวเลือกหลัก: สร้างตารางนโยบายจากนั้นตารางส่วนที่มีฟิลด์ทั้งหมดที่จำเป็นสำหรับรูปแบบที่เป็นไปได้ทั้งหมดซึ่งส่วนใหญ่จะเป็นโมฆะ สร้างตารางนโยบายและตารางส่วนต่างๆจำนวนมากหนึ่งตารางสำหรับความคุ้มครองแต่ละประเภท ตัวเลือกทั้งสองนี้ดูเหมือนจะไม่เป็นที่น่าพอใจโดยเฉพาะอย่างยิ่งเมื่อจำเป็นต้องเขียนข้อความค้นหาในทุกส่วนซึ่งจะเกี่ยวข้องกับการรวมจำนวนมากหรือการตรวจสอบโมฆะจำนวนมาก แนวปฏิบัติที่ดีที่สุดสำหรับสถานการณ์นี้คืออะไร

6
ไม่สามารถใช้การสร้างคีย์คอลัมน์เอกลักษณ์กับ <union-subclass> (TABLE_PER_CLASS)
com.something.SuperClass: @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public abstract class SuperClass implements Serializable { private static final long serialVersionUID = -695503064509648117L; long confirmationCode; @Id @GeneratedValue(strategy = GenerationType.AUTO) // Causes exception!!! public long getConfirmationCode() { return confirmationCode; } public void setConfirmationCode(long confirmationCode) { this.confirmationCode = confirmationCode; } } com.something.SubClass: @Entity public abstract class …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.