خلق لكم البدنية نموذج بيانات

تغيير الجدول OrderItem أضف القيد FK__OrderItem_SalesOrder مفتاح خارجي (SalesOrderID) المراجع SalesOrder (SalesOrderID) على حذف الشلال
  

هذا هو السبب دعا البيان إلى التكامل المرجعي التعريفي القيد؟ لأنها تعلن الجدول المرجعي لسلامة السلوك كجزء من تعريف الجدول نفسه ، بدلا من تنفيذ السلوك مثل قطعة منفصلة من قانون قابل للتنفيذ الكمبيوتر ، ونحن الآن كسر هذا القيد حديد الاختزال المباشر وننظر في كل جملة ما يعني ، بدءا التالية :

تغيير الجدول OrderItem أضف القيد FK__OrderItem_SalesOrder

العبارة السابقة يعدل تعريف الجدول OrderItem الطفل لإضافة قيود الكائن المسمى FK__OrderItem_SalesOrder. هذا الكائن يحتوي على الأسطر الثلاثة المتبقية من رمز ، والتي تشكل تعليمات الفعلية للقيود ، على النحو التالي :

مفتاح خارجي (SalesOrderID) المراجع SalesOrder (SalesOrderID)

هذه العبارة هي لحوم "والبطاطا" للقيود حديد الاختزال المباشر. فإنه ينشئ تقييد بين OrderItem.SalesOrderID المفتاح الخارجي وSalesOrder المفتاح الأساسي. SalesOrderID بحيث ، لكل القيمة المخزنة في OrderItem.SalesOrderID ، وهي تساوي قيمة يجب أن تكون مخزنة في SalesOrder.SalesOrderID مع OrderItem.SalesOrderID التي يمكن أن المباراة. إذا كان أي قيمة أخرى هي محاولة في OrderItem.SalesOrderID ، قاعدة البيانات رميات خطأ وفشل المحاولة. وأخيرا ، في السطر الأخير من القيد حديد الاختزال المباشر على النحو التالي :

على حذف الشلال

هذا الخط يرشد إلى قاعدة البيانات أولا حذف كافة الصفوف OrderItem المتصلة صف SalesOrder الذي هو على وشك أن تحذف. دون أن يكون على حذف بند الشلال في هذا القيد حديد الاختزال المباشر ، في محاولة لحذف صف SalesOrder مع الصفوف OrderItem ذات الصلة من شأنه أن يقود إلى الخطأ ، وأية تغييرات يمكن أن تقدم إلى إما جدول محتويات. الأسطر الأربعة الأولى من رمز القيد هي المعيار حديد الاختزال المباشر في بناء الجملة التي تدعمها معظم منصات قاعدة البيانات. بعض منصات قاعدة البيانات ، مثل مزود الخدمة عام 2000 ، وأوراكل 9i ، ودعم على حذف الشلال التمديد لحديد الاختزال المباشر في بناء الجملة الأساسية لتسهيل هذه يحذف المتتالية. منصات لقاعدة البيانات التي لا تعتمد يحذف المتتالية في الاختزال المباشر القيود ، وحذف متتالية السلوك يجب أن تنفذ باستخدام قطعة منفصلة من التعليمات البرمجية التي تنفذ تلقائيا عندما يحاول مستخدم حذف صف SalesOrder. مثل قطعة من تنفيذ التعليمات البرمجية تلقائيا ويطلق على الزناد. على الرغم من أننا مناقشة شاملة يطلق في وقت لاحق ، نحن بحاجة إلى تغطية أساسيات ما هي وكيف تعمل هنا حتى تتمكن من التباين والمقارنة بينها لحديد الاختزال المباشر القيود. أولا وقبل كل شيء ، لماذا هم دعا مشغلات؟ الجواب هو أن إعدام واحدة هي "تشغيل" من قبل الحدث قاعدة بيانات (إدراج ، تحديث أو حذف). يعتبر المشغل هو تعلق على جدول معين وتعليمات لتنفيذ تلقائيا كلما واحد أو أكثر من الأحداث قاعدة بيانات محددة تجري في هذا الجدول. يمكنك وضع رمز مجرد عن أي مزود التي ترغب في تحريك الدعوى ، بما في ذلك التعليمات البرمجية التي تعديل محتويات أخرى الجداول. خذ على سبيل المثال ، الفقرة التالية :

على حذف الشلال

إذا ما نفذت باعتبارها المشغل ، الفقرة السابقة يصبح البرمجية التالية :

إنشاء تثير tD_SalesOrder عن SalesOrder لحذف مثل بيغن نعلن @ قم بتحديد الصفوف كثافة العمليات الصفوف = @ @ @ @ rowcount المتكامل الصفوف = 0 عودة حذف OrderItem من OrderItem الفصل ، حذف أين ch.SalesOrderID = deleted.SalesOrderID انتهى

الآن لكسر ما يحدث في هذا الرمز. أولا ، تبدأ مع رأس الزناد. هذا الرأس على حد سواء بإنشاء على الزناد وتعلق على جدول معين ويحدد أيضا الحدث أو الأحداث التي حرائق أنه ، على النحو التالي :

إنشاء تثير tD_SalesOrder عن SalesOrder للحذف كما

وبعبارة أخرى ، تقوم بإنشاء مشغل في الجدول SalesOrder اسمه tD_SalesOrder ، وكنت إعطائه تعليمات لتنفيذ كل الوقت الذي حدث حذف يحدث على طاولة المفاوضات SalesOrder. حتى الان جيدة جدا. ننظر الآن في جسد على الزناد ، وهو الجزء الذي ينفذ في الواقع ، على النحو التالي :

ستبدأ نعلن @ قم بتحديد الصفوف كثافة العمليات الصفوف = @ @ @ @ rowcount المتكامل الصفوف = 0 العودة

بدء تشغيل كتلة التعليمات البرمجية مع بيغن وثم مباشرة بتعريف متغير محلي من نوع صحيح اسمه @ الصفوف. هذا المتغير يحمل عدد من الصفوف في الجدول SalesOrder المتضررين من هذا الحدث حذف. المتغير العمومية @ @ rowcount تسيطر عليها خادم قاعدة البيانات ، فهي دائما تحتوي على عدد من الصفوف المتأثرة في الجدول آخرها تعديل بواسطة رمز التنفيذ حاليا ، وهو في هذه الحالة هو الجدول SalesOrder. حتى اختيار الصفوف = @ @ @ أماكن rowcount فرز الصفوف حذف من الجدول SalesOrder في المتغير المحلي الذي قمت للتو المعلنة. إذا كان عدد الصفوف المتأثرة هي الصفر ، رمز الزناد برشاقة مخارج باستخدام العبارة العودة ، وكذلك لا شيء يحدث. إذا كان هذا الاختبار العودة لا وجود لها في قانون الزناد ، وبقية رمز الزناد ينفذ ، وكنت لا تريد أن يحدث ذلك لأنك تريد ان تكون تنفيذ التعليمات البرمجية التي يجب أن تعمل إلا إذا كان هناك ذات الصلة صفوف الأطفال. الآن إلى جانب أن يؤدي فعلا بتنفيذ حذف متتالية ، على النحو التالي :

حذف OrderItem من OrderItem الفصل ، حذف أين ch.SalesOrderID = deleted.SalesOrderID انتهى

هذه العلائقية حذف حذف تلك الصفوف في الجدول OrderItem التي ترتبط جميع الصفوف في المحذوفة pseudotable ، في جوهرها ، وجميع الصفوف OrderItem المتصلة الصفوف SalesOrder حذفها. وأخيرا ، كنت قريبة من جثة على الزناد باستخدام انتهى. مشغلات جدا قدرات مختلفة على منصات قاعدة بيانات مختلفة. على الزناد أننا مجرد مناقشتها ، على سبيل المثال ، تعمل على مزود الخدمة يندوز 2000 ، والذي يحدد هذا الحدث على الصعيد البيان ، مما يعني أن هذا المشغل حرائق مرة واحدة لكل بيان حذف أعدم على طاولة المفاوضات ، مهما كان عدد الصفوف تتأثر ذلك البيان. وعلى سبيل المقارنة ، أوراكل مشغلات يمكن أن تعمل سواء على المستوى البيان ، كما هو الحال في مزود خدمة ، أو على مستوى الصف ، ان مثل هذه التعليمات البرمجية المشغل ينفذ مرة واحدة لكل صف الفرد الذي يتأثر البيان. تمييز آخر بين منصات قاعدة البيانات هو متى يمكن أن يطلق النار. مزود الخدمة حرائق مشغلات بعد وقوع الحدث ، وتجري جميع القيم يتم تعديلها بواسطة البيان (ولكن قبل انهم ملتزمون القرص) ؛ أوراكل تمكنك من تحديد نقطة انطلاق لتنفيذ إما قبل أو بعد هذا الحدث يحدث. المميزات الأخرى موجودة أيضا. حتى عندما تفعل تطبيق التكامل المرجعي باستخدام القيود حديد الاختزال المباشر ومتى يمكنك استخدام مشغلات؟ كذلك ، يشكل قيدا الاختزال المباشر هو دائما تقريبا من أسرع لتنفيذ العملية ما يعادل تنفيذها في المشغل ، وأنها بالتأكيد هي رمز للبساطة ، ولكنك قد تحتاج في بعض الأحيان أكثر تعقيدا من المنطق أن تشارك ، وعلى ذلك ، تحتاج إلى استخدام مشغلات.

مرات كثيرة كنت تريد تلقائيا العرض القيم الافتراضية لصفوف إدراجها في الجدول ، على سبيل المثال ، والتاريخ والوقت الحالي للبيع ، أو قيمة الوضع الذي يمثل بعض نقطة بداية في العملية التجارية. هذا السلوك هو تطبيق باستخدام افتراضات الافتراضيات يتم تعريفها على أعمدة الجدول محددة ، ويقولون قاعدة البيانات الخاصة بك ، "وإذا كان هذا العمود هو لم تدرج في البيان لإدراج هذا الجدول ، والمضي قدما وتلقائيا تدخل هذه القيمة الافتراضية. إذا كان البيان لا تتضمن ادخال هذا العمود ، واستخدام كل ما تم توريده قيمة لها ". إليك كيف إعلانا الافتراضي يبحث في تعريف الجدول :

إنشاء جدول SalesOrder (SalesOrderID الهوية كثافة العمليات (1،1) ، CustomerNumber varchar (12) فارغة ، SaleDate التاريخ والوقت GetDate الافتراضي () غير فارغة ،  القيد PK_SalesOrder مفتاح أساسي NONCLUSTERED (SalesOrderID))

ستلاحظ من خلال هذه المقالة أننا أحيانا بحروف بارزة أجزاء من رمز. هذا هو آلية بسيطة لكنها فعالة لمساعدتك على "ترى لأشجار الغابات" ونحن نناقش هذا الموضوع. على سبيل المثال ، تسليط الضوء على جملة الافتراضية في كتلة من التعليمات البرمجية أثناء مناقشة الافتراضات يساعدك بسرعة الحصول على الجزء الأكبر من القانون المطبق دون ان يصرف من الراحة أثناء المناقشة ، وهذا الإعلان الافتراضي يضع تلقائيا نتيجة لمزود الخدمة في GetDate () وظيفة ، والتاريخ والوقت الحالي ، في العمود SaleDate طالما العمود SaleDate ليست جزءا من البيان إدراج. إذا كان العمود SaleDate هو جزء من ادخال البيان ، سيتم استخدام القيمة التي قدمتها البيان.

مقال مقدم من ليندا هاستينغز


تنويه :موقعنا على الانترنت ليست مسؤولة عن محتوى هذه المادة. Webarticles هو حر للمعلومات.
المهم : هذا المقال "إنشاء النموذج الخاص بك البيانات المادية" ترجم من قبل البرمجيات التلقائي. نشعر بالاسف من اجل أي الأخطاء الإملائية التي قد حدث. شكرا لتفهمكم.


Online: 240 users browsing the articles directory   


  

|