Samar Lulu2 نشر 15 ديسمبر 2021 أرسل تقرير نشر 15 ديسمبر 2021 (معدل) كيفية انشاء شرط الcheck في الsql في حالة أنه لدينا الزائر يمكن أن يحجز أكثر من غرفة في الفندق و الغرفة يمكن حجزها مرة واحدة لليوم تم التعديل في 15 ديسمبر 2021 بواسطة شرف الدين2 توضيح العنوان 2 اقتباس
0 Wael Aljamal نشر 15 ديسمبر 2021 أرسل تقرير نشر 15 ديسمبر 2021 يمكن فهم العلاقة أنه لدينا جدول الزوار guest وجدول الغرف Rooms والعلاقة بينهم نسقطها في جدول الحجوزات reservations مثلا.. حيث لدينا في reservations كل من: رقم الزائر و رقم الغرفة وتاريخ الحجز. عندما نريد عمل استعلام للتأكد أن الغرفة شاغرة في يوم ما، نبحث في جدول الحجوزات عن رقم الغرفة و تاريخ اليوم المطلوب حجزها فيه، يمكن عد ناتج الاستعلام، وفي حال أعاد قيمة 0 هذا يعني أن الغرفة شاغرة، وإن أعاد 1 يعني محجوزة طبعاً 1 كافية لأن حجز الغرفة يتم مرة في اليوم، لا يهمنا من قام بالحجز حالياً.. SELECT COUNT(1) FROM reservations WHERE room_id = 123 AND reservations_day = '2021-12-25'; 1 اقتباس
0 شرف الدين حفني نشر 15 ديسمبر 2021 أرسل تقرير نشر 15 ديسمبر 2021 بما أن النزيل يمكنه حجز العديد من الغرف ولكن على الجانب الأخر لا يمكن للغرفة أن يتم حجزها من قِبل أكثر من نزيل فهذا يعني أن يوجد علاقة واحد إلى كثير (one-to-many) بين النزيل والغرفة لتحقيق تلك العلاقة يمكننا ببساطة أن نجعل جدول الغرفة يحتوي على الid الخاص بالنزيل كforeign key مما يؤدي للسماح بوجود أكثر من صف في جدول الغرف يحتوي كلًا منهم على المُعرف الخاص بالنزيل وبالتالي يتم إعتبارهم مملوكين لنفس النزيل ويمكنك فهم الموضوع أيضًا عبر قراءة المقالة التالية 1 اقتباس
0 Samar Lulu2 نشر 15 ديسمبر 2021 الكاتب أرسل تقرير نشر 15 ديسمبر 2021 بتاريخ منذ ساعة مضت قال Wael Aljamal: يمكن فهم العلاقة أنه لدينا جدول الزوار guest وجدول الغرف Rooms والعلاقة بينهم نسقطها في جدول الحجوزات reservations مثلا.. حيث لدينا في reservations كل من: رقم الزائر و رقم الغرفة وتاريخ الحجز. عندما نريد عمل استعلام للتأكد أن الغرفة شاغرة في يوم ما، نبحث في جدول الحجوزات عن رقم الغرفة و تاريخ اليوم المطلوب حجزها فيه، يمكن عد ناتج الاستعلام، وفي حال أعاد قيمة 0 هذا يعني أن الغرفة شاغرة، وإن أعاد 1 يعني محجوزة طبعاً 1 كافية لأن حجز الغرفة يتم مرة في اليوم، لا يهمنا من قام بالحجز حالياً.. SELECT COUNT(1) FROM reservations WHERE room_id = 123 AND reservations_day = '2021-12-25'; هل يمكن كتابة جملة الcheck عند كتابة الsql بهذه الطريقة ؟ : CHECK (room.guest_ssn = guest_ssn ) بتاريخ منذ ساعة مضت قال شرف الدين2: بما أن النزيل يمكنه حجز العديد من الغرف ولكن على الجانب الأخر لا يمكن للغرفة أن يتم حجزها من قِبل أكثر من نزيل فهذا يعني أن يوجد علاقة واحد إلى كثير (one-to-many) بين النزيل والغرفة لتحقيق تلك العلاقة يمكننا ببساطة أن نجعل جدول الغرفة يحتوي على الid الخاص بالنزيل كforeign key مما يؤدي للسماح بوجود أكثر من صف في جدول الغرف يحتوي كلًا منهم على المُعرف الخاص بالنزيل وبالتالي يتم إعتبارهم مملوكين لنفس النزيل ويمكنك فهم الموضوع أيضًا عبر قراءة المقالة التالية هل يمكن كتابة جملة الcheck عند كتابة الsql بهذه الطريقة ؟ : CHECK (room.guest_ssn = guest_ssn ) اقتباس
0 Wael Aljamal نشر 15 ديسمبر 2021 أرسل تقرير نشر 15 ديسمبر 2021 بتاريخ 17 دقائق مضت قال سمر طاهر: هل يمكن كتابة جملة الcheck عند كتابة الsql بهذه الطريقة ؟ : تستخدم CHECK مثل قيد على الجدول، وليس استعلام SQL هي تحدد مجال قيمة عدد ما ALTER TABLE Persons ADD CHECK (Age>=18); المثال السابق يفرض تخزين قيمة أكبر أو تساوي 18 في جدول الأشخاص. CREATE TABLE Persons ( . ... Age int, CHECK (Age>=18) ); قيد على العمر اقتباس
0 شرف الدين حفني نشر 15 ديسمبر 2021 أرسل تقرير نشر 15 ديسمبر 2021 بتاريخ 17 دقائق مضت قال سمر طاهر: هل يمكن كتابة جملة الcheck عند كتابة الsql بهذه الطريقة ؟ : CHECK (room.guest_ssn = guest_ssn ) هل يمكن كتابة جملة الcheck عند كتابة الsql بهذه الطريقة ؟ : CHECK (room.guest_ssn = guest_ssn ) ﻻ حاجة لكتابة جملة check يكفي فقط تحديد الroom.guest_ssn ك foreign key حتى نضمن وجود نزيل بهذا المُعرف اقتباس
0 Samar Lulu2 نشر 15 ديسمبر 2021 الكاتب أرسل تقرير نشر 15 ديسمبر 2021 بتاريخ 3 دقائق مضت قال شرف الدين2: ﻻ حاجة لكتابة جملة check يكفي فقط تحديد الroom.guest_ssn ك foreign key حتى نضمن وجود نزيل بهذا المُعرف جيد ولكن كيف سنضع شرط لجعل أن الغرفة لا يتم حجزها الا لنزيل واحد في وقت معين أنا لهذا وضعت جملة الشرط بأن يكون ال room.guest_ssn يساوي الguest_ssn كي يجعل الغرفة يأخذها نزيل واحد هل هذا صحيح؟ اقتباس
0 شرف الدين حفني نشر 15 ديسمبر 2021 أرسل تقرير نشر 15 ديسمبر 2021 بتاريخ الآن قال سمر طاهر: جيد ولكن كيف سنضع شرط لجعل أن الغرفة لا يتم حجزها الا لنزيل واحد في وقت معين أنا لهذا وضعت جملة الشرط بأن يكون ال room.guest_ssn يساوي الguest_ssn كي يجعل الغرفة يأخذها نزيل واحد هل هذا صحيح؟ بما أن لا وجود للغرفة إلا في جدول "الغرفة" ولا يمكن تكرار المُعرف الخاص بالغرفة فبالتالي لن يظهر المُعرف الخاص بها أكثر من مرة مما يعني أن لا يمكن حجزها أكثر من مرة على عكس النزيل الذي يظهر المُعرف الخاص به أكثر من مرة على هيئة foreign_key في جدول الغرف مما يعني إ/كانية حجزه لعدد من الغرف اقتباس
0 Wael Aljamal نشر 15 ديسمبر 2021 أرسل تقرير نشر 15 ديسمبر 2021 بتاريخ 36 دقائق مضت قال سمر طاهر: هل يمكن كتابة جملة الcheck عند كتابة الsql بهذه الطريقة ؟ : ممكن عمل unique للثنائية room_id, reservations_day ALTER TABLE reservation ADD CONSTRAINT Room_reservation_check UNIQUE(room_id , reservations_day) 1 اقتباس
0 Samar Lulu2 نشر 15 ديسمبر 2021 الكاتب أرسل تقرير نشر 15 ديسمبر 2021 بتاريخ 1 ساعة قال شرف الدين2: بما أن لا وجود للغرفة إلا في جدول "الغرفة" ولا يمكن تكرار المُعرف الخاص بالغرفة فبالتالي لن يظهر المُعرف الخاص بها أكثر من مرة مما يعني أن لا يمكن حجزها أكثر من مرة على عكس النزيل الذي يظهر المُعرف الخاص به أكثر من مرة على هيئة foreign_key في جدول الغرف مما يعني إ/كانية حجزه لعدد من الغرف اذًا هذه الجملة لا تحتاج لشرط check صحيح؟ بتاريخ منذ ساعة مضت قال Wael Aljamal: ممكن عمل unique للثنائية room_id, reservations_day ALTER TABLE reservation ADD CONSTRAINT Room_reservation_check UNIQUE(room_id , reservations_day) تمام شكرًا لك فكرة رائعة 1 اقتباس
السؤال
Samar Lulu2
كيفية انشاء شرط الcheck في الsql في حالة أنه لدينا الزائر يمكن أن يحجز أكثر من غرفة في الفندق و الغرفة يمكن حجزها مرة واحدة لليوم
تم التعديل في بواسطة شرف الدين2توضيح العنوان
9 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.