यदि आप हर समय डेटा अखंडता की गारंटी देना चाहते हैं तो इसे डीबी स्तर पर हल किया जा सकता है (और चाहिए)। कई तरीके हैं, एक आंशिक
UNIQUE INDEX
शायद सबसे सरल और सबसे प्रभावी।
CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;
होमपेज चित्रों को संपार्श्विक लाभ के रूप में पुनः प्राप्त करने के लिए प्रश्नों को भी गति देगा।
स्कीमा बदलें
एक अलग तरीका यह होगा कि एक कॉलम homepage_id
add जोड़ा जाए टेबल पर house
, चयनित चित्र की ओर इशारा करते हुए। स्वचालित रूप से, केवल 1 चित्र का चयन किया जा सकता है। आपको picture.homepage
की आवश्यकता नहीं होगी इसके बाद। दोनों दिशाओं में विदेशी कुंजी बाधाओं के कारण रेफ़रेंशियल अखंडता थोड़ी मुश्किल हो सकती है, लेकिन मेरे पास इस तरह के समाधान हैं।