كم هي جميلة أنواع البيانات المعرفة من قبل المستخدم في SQL Server?[مغلقة]

StackOverflow https://stackoverflow.com/questions/657568

سؤال

هي أنواع البيانات المعرفة من قبل المستخدم في SQL Server شيء المتوسطة SQL المستخدم يجب أن تستخدم ؟

ما هي إيجابيات وسلبيات استخدام UDTs?

هل كانت مفيدة؟

المحلول

ابدأ استخدامها نصيحتي.كنت في عالم من الألم إذا كان لديك أي وقت مضى إلى تغيير التعريف.ولعل هذا قد تحسن منذ SQL Server 2000 شخص مع المزيد من الألفة مع الإصدارات الأحدث يمكن أن أقول لكم ما إذا كان الآن آمنة في الحصول على المياه ، ولكن حتى كان تأكيد هذا و قد تأكدت منه بنفسي مع اختبار, لن أضع على بلدي نظام الإنتاج.

تحقق من هذا السؤال لمزيد من التفاصيل:كيفية تغيير نوع قاعدة من UDT في Sql Server 2005?

نصائح أخرى

أنا لا لا استخدام التعليمات البرمجية المستندة إلى UDTs لأنني لا أعتقد أن تعقيد إضافي أوامر المزايا.أنا هل استخدام T-SQL UDTs لأن هناك القليل جدا من تعقيد إضافي بحيث مزايا تستحق الجهد.(شكرا Marc_s بالنسبة مشيرا إلى أن منصبي الأصلي كان ناقصة!)

بخصوص رمز القائمة على UDTs

التفكير في الأمر بهذه الطريقة:إذا كان المشروع يحتوي على التعليمات البرمجية المدارة العنصر (التطبيق) و مكونات قاعدة البيانات (SQL Server) ما هي الميزة الحقيقية لا تكسب من تحديد التعليمات البرمجية المدارة في قاعدة البيانات ؟ في التجربة ؟ لا شيء.

نشر أكثر صعوبة لأنه سيكون لديك لإضافة الجمعيات DB الخاص بك ونشر تغيير هذه الجمعيات ، إضافة الملفات الخ.في SQL Server.سيكون لديك أيضا إلى تشغيل في SQL Server CLR (لا صفقة كبيرة ولكن لا أحد يثبت لي أن هذا لن يكون الأداء/الذاكرة جزاء).في النهاية, سوف يكون بالضبط ما كنت قد كان إذا كان يمكنك ببساطة صمم هذا في كود التطبيق.قد يكون هناك بعض تحسين الأداء لكن في الحقيقة يبدو لي حالة من السابق لأوانه الأمثل خصوصا أنا لا أعرف إذا كان عموما أداء يعاني بسبب وجود CLR في مقابل إيقاف.

ملاحظة:أنا على افتراض أن كنت تستخدم SQL Server CLR إلى تحديد أنواع.HLGEM يتحدث عن SQL Server 2000 ولكن أنا لست على دراية 2000 و اعتقد انه كان فقط UDFs وليس UDTs في الخارج-تعريف dll (ولكن لا اقتبس لي...أنا حقا لست على دراية به!).

فيما يتعلق T-SQL UDTs

T_SQL UDTs يمكن تعريفها في SQL وحده (اذهب إلى "البرمجة | أنواع | المستخدم-تعريف أنواع البيانات" في SQL Server إدارة Studio).القياسية UDTs أنا أن في الواقع نوصي أن يمكنك السيطرة عليها.فهي سهلة جدا و يمكن أن تجعل النظام الخاص بك DDL أكثر الذاتي توثيق فرض قيود التكامل.على سبيل المثال أنا تعريف "GenderType" (char(1), لا nullable ، وعقد "M" أو "F") أن يضمن أن فقط البيانات المناسبة هو مسموح به في الجنسين المجال.

UDTs هي سهلة جدا ولكن عموما هذه المادة يعطي مثال جيد كيف أن أعتبر إلى المستوى التالي من خلال تحديد المادة لتقييد البيانات المسموح بها في UDT.

تم الإجابة على هذا السؤال أنا ثابت على فكرة معقدة ، رمز-تعريف أنواع (صفعات النخيل على الجبين).لذا شكرا مارك.

برو المعرفة من قبل المستخدم أنواع موجهة بشكل جيد جدا أليكس Papadimoulis.سلبيات قد ذكر هنا.

كما أود أن أشير إلى أن sp_bindrule وظيفة تم إيقافها, كما أشار أليكس بعد.لست متأكدا عندما كان مستنكر ولكن هو الآن.في الواقع, القواعد إهمال ككل.

كنت ترغب في إنشاء نوع مع التقييد ، أود النظر في استخدام المعرفة من قبل المستخدم نوع الجدول مع تحقق القيد في العمود المناسب(ق).هذا أيضا يعطيني طريقة بناء مجمع نوع البيانات.

لا أستطيع حقا أن يوصي استخدام أي sql تنفيذ الميزات المحددة التي تجعل من الصعب عندما كنت تنمو من mssql و يهاجرون إلى آخر dbms.لدينا dwh dbs بدأنا في mssql, هاجر إلى أوراكل منذ العام الماضي تخرج إلى hp vertica.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top