यहां कम से कम 2 व्यावसायिक प्रक्रियाएं शामिल हैं।
उपलब्ध सीटें दिखाएं।
एक चयनित सीट बुक करें।
चूँकि ये प्रक्रियाएँ एक दूसरे को अनैतिक रूप से पालन नहीं करती हैं, और चूंकि 2 लोग उसी सीट का चयन कर सकते हैं जो समवर्ती समस्या उत्पन्न होती है।
यदि आपके डेटाबेस का डिज़ाइन सही विशिष्टता अवरोध प्रदान करता है, ताकि निम्नलिखित का संयोजन हो:
-TheaterID
-SeatID
-EventID
अद्वितीय हैं, फिर डेटाबेस डुप्लिकेट को रोक देगा।
निम्नांकित परिदृश्य भी संभव है लेकिन उपर्युक्त क्रियान्वयन द्वारा ध्यान रखा जाएगा:
किसी दिए गए थिएटर के लिए उपलब्ध ग्रिड दृश्य और दिए गए कार्यक्रम को प्रदर्शित किया जा सकता है:
- उपयोगकर्ता 1 उपलब्ध सीटों को प्रदर्शित करता है (और सीटें 1 और 2 प्राप्त करता है)
- उपयोगकर्ता 2 उपलब्ध सीटों को प्रदर्शित करता है (और सीटें 1 और 2 प्राप्त करता है)
- User1 फोन पर ग्राहक के साथ थोड़ी बातचीत करता है
- User2 जाता है और किताबें अपने ग्राहक के लिए सीट 2
- User1 अपने ग्राहक के लिए सीट 2 बुक करने की कोशिश करता है (क्योंकि यह उसकी स्क्रीन पर उपलब्ध है)
- यूनिक इंडेक्स स्टेप 5 को डेटा को कम्यूट करने से रोकता है।
तो आपको जो कुछ करने की ज़रूरत है वह कुछ और सही डेटाबेस डिज़ाइन और बाधाओं पर उचित विकल्प नहीं हो सकता है।
लेन-देन कतारों का उपयोग करते हुए यदि आप चाहते हैं, तो अन्य अधिक जटिल दृष्टिकोण संभव हैं। इस मामले में, अनुरोध पहले एक कतार में लिखे जाते हैं, फिर हर n सेकंड में एक प्रक्रिया निकालते हैं लेकिन यह आपके मामले में शायद ही आवश्यक या व्यावहारिक है।
वास्तव में दिलचस्प हिस्सा यह है कि उपयोगकर्ता 1 शो के लिए सूची ग्रिड क्या होना चाहिए?