كيف ينبغي تصميم جدول مع مجموعتين من أسماء الأعمدة المكررة تقريبًا؟
-
25-09-2019 - |
سؤال
لدي جدول يحتوي على حوالي 40 عمودًا. الفرق الوحيد في أسماء الأعمدة هو أن العشرين الأخيرة كلها تبدأ بـ "B" قبل اسم العمود. يستخدم هذا الجدول للمقارنة. بمعنى آخر ، قارن البيانات في الأعمدة العشرين الأولى بالبيانات في العشرين الأعمدة الأخيرة.
أعلم أن هذا تصميم سيء للغاية ، فكيف ينبغي إعادة تصميم هذا الجدول ، بحيث لا يوجد سوى 20 عمودًا ، ومع ذلك لا يزال بإمكاننا مقارنة البيانات؟
تحرير: إذا كان ذلك مفيدًا ، فإننا نستخدم هذه البيانات أيضًا للعثور على مجموعة متطابقة
لاحظ أيضًا أن الأداء يثير القلق الرئيسي هنا. من خلال تكرار الأعمدة ، يكون الحصول على البيانات سريعًا للغاية.
شكرًا!
المحلول
اثنين من البنية الممكنة ونصيحة الاستعلام.
1) قم بإنشاء الجدول الخاص بك مع عمود "نوع" ، واستخدم ذلك للإعلام "الأساسي" مقابل "البديل". في حالتك ، قد تكون "A" مقابل "B" مناسبة.
2) بناء قسم عمودي ، جدولين متطابقين (للبيانات الأولية والبديلة) ، والتي تشترك في مفتاح أساسي مشترك. (إذا كان المعرف = 42 في جدول واحد ، فيجب أن يكون في الآخر-ما لم تكن بيانات "بديلة" لا حصرها اختياريًا ، وفي هذه الحالة لا تملأ الجدول الثاني.) أيضًا اختياريًا ، لديك جدول ثالث يتتبع كل ما يتبعه الأساسي المفاتيح ، جنبا إلى جنب مع أي بيانات معروفة دائمًا بأنها شائعة في كلا الجدولين.
نصيحة: اقرأ على SELECT ... باستثناء وحدد ... Intersect. إنها تعمل بسرعة مقلقة ، وهي فكرة لمقارنة جميع الأعمدة والصفوف بين مجموعتين للاختلافات (باستثناء) والمطابقات (المتقاطع). يمكنك استخدام هذا بسهولة إلى حد ما مع أي من الهيكلين ، وسيعمل مع الكود الحالي الخاص بك أيضًا (على الرغم من أنه قد يكون من الأمواج كتابة الاستعلام).