تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سؤال بثقنية الربط في قواعد البيانات
#1
السلام عليكم ورحمة الله وبركاته
اين الاكادميين .
ماهي المساؤي او المشاكل التي ممكن ان تحدث بحال الربط بين جدولين عن طريق الاسم ، اسم الموظف مثلا او اسم القسم وما الى ذلك .
طبعا الفائدة فيما بعد ستكون في بساطة الاستعلام الذي لن يحتاج الى الاتصال باكثر من جدول لجلب البيانات وبالتالي في سرعة تنفيذه كذلك
حسب ما قراءت ان هذا من شانه ان يجعل هناك تراكم للبيانات لان الحقل النصي يحجز بايتات اكثر من الحقل الرقمي .
هل هذا هو فقط السبب ...؟
ام ان هناك اسباب أخرى

الرد }}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

ماهي المساؤي او المشاكل التي ممكن ان تحدث

لو كان السؤال ما هو الفرق في قوة الأداء بين الطريقتين لكن أفضل

طبعاً الربط من خلال حقل رقمي INT أفضل بـ 10 مراحل 

إذا تم الربط بواسطة حق نصي , سيتم عمل ( index page ) فهرس بهذا الحقل , مثلاً الحقل النصي يحتوي على 20 حرف هذا يعني الضعف في المساحة يعني يساوي 40 bytes لكل سجل

الحقل الرقمي INT دائماً وأبداً سيأخذ حجم 4 bytes
بينما الحقل النصي , مثلاً (nvarchar(128 سيأخذ 254 bytes الضعف.

كل هذة البيانات سيقوم محرك قاعدة البيانات أين كان SQL Server أو Access بإدارتها.
وإدارة هذة البيانات طبعاً حجم البيانات عامل مؤثر في سرعة معالجتها ,
طبعاً معالجة 4 bytes أسرع بكثير جداً من معالجة 254 bytes.
وأيضاً المقارنة بين 4 bytes وبين 4 bytes أخرى ,,, أسرع بكثير من المقارنة بين 254 bytes وبين 254 bytes أخرى.

عند إجراء الإستعلامات , المقارنة بين رقمين من نوع INT فعال جداً وسريع. 
بينما المقارنة بين حقلين نصيين سيكلف الكثير من الوقت والكثير من الإجراءات على الـ CPU ( وحدة المعالجة المركزية ) , وذلك لأن النصوص تعتمد على الـ ( collations ) , لا أعرف كيف أشرح الـ collations ولكن هي مثل أنواع اللغات أو تعريف هيئة الحروف والرموز , يمكنك أن تفهمها على أنها خريطة تبين السياسة المتبعة من الحروف , عندك الإنجليزي والعربي و الصيني والياباني وجميع لغات العالم تقريباً لها collations خاص , أيظاً حالت الأحرف وحساسيتها واللهجة ( يؤثر في قوت الأداء بشكل عام ).

يعني لو قمت ربط جدول بآخر من خلال حقل نصي ( سيكون مفهرس , وفهرسة الحقول النصية ستأخذ حجم أكبر ) 
لو قمت بعمل إستعلام عن سجل إبن بواسطة الحقل النصي للأب ، سيتم مقارنة الحقل النصي في جميع السجلات في الجدول الإبن والتي تطابق الحقل النصي في السجل الأب.


دائماً نوع البيانات INT ( يفوز  ) في :
1 - Duration : أقل في مدة الإجراء
2 - CPU : أقل إستخدام لوحدة المعالجة المركزية , 
( في قواعد البيانات التي عليها حركة عمل كثيرة ومزدحمة بالإتصالات والإجراءات ) سيكون عامل مهم أن تفكر في التصميم الصحيح حتى لا يكون الـ CPU مشغول كثيراً في معالجة الإجراءات , لأن أي إستعلام يأخذ حيز من قدرة الـ CPU فإذا كانت هناك إستعلامات كثيرة تنفذ في نفس الوقت , الـ CPU سيتأخر في تنفيذ الإستعلامات إذا لم يتم تصميمها بالشكل المناسب, سيكون هناك طابور من الإستعلامات يقوم الـ CPU بتنفيذها واحد تلو الآخر.





في الجداول الضخمة والتي تعتبر فعلاً كبيرة جداً , هنا يتم إعتبار INT الخيار الأفضل ,
لكن في الجداول الصيغرة والمتوسطة , لن يكون هناك فرق كبير , عندها يمكنك أن لا تفكر في قوة الأداء والذهاب إلى ما يسهل عليك العمل بدون التفكير في قوة الأداء


عن نفسي أستخدم INT دائماً , حالات نادرة استخدم CHAR كمفتاح أساسي أو أن يكون مفهرس ,  بشرط لا يكون طويل , ثلاث أحرف مثلاً .
الرد }}
تم الشكر بواسطة: viv , viv , عبد العزيز البسكري
#3
شكرا اخي الدوسري
هذا بالضبط ما كنت بحاجة اليه

اعتقد ال Collection شئ شبيه بهذا








جعل البيانات في شكل عناقد تم البدء في الفرز فيها
الرد }}
تم الشكر بواسطة:
#4
في الطباعة ، يشير التجميع collations إلى طبقات متسلسلة لصفحات وثيقة متعددة الصفحات ، وكتاب ، وكتيب ، وما إلى ذلك في ترتيبها الصحيح والمنجز. يتم إجراء الترتيب أثناء عملية الإنهاء. وغالبًا ما يتبع ذلك ربط الصفحات معًا. وأبسط مثال على المقارنة هو مستند من ثلاث صفحات ، حيث تتبع الصفحة الأولى صفحة 2 ، تليها الصفحة الثالثة. هذا هو نفس التسلسل قراءة الصفحات.




ما هو عكس ترتيب؟





بدلاً من ترتيب الصفحات التي تتبع الصفحة الأولى متبوعة بالصفحة الثانية ، تليها الصفحة الثالثة ، تكون الصفحات بترتيب عكسي. الصفحة الثالثة هي أولا ، تليها الصفحة الثانية ، تليها الصفحة الأولى.



إن خيار طلب مستند متعدد الصفحات دون ترتيب (أي غير مهم) ، يعني ببساطة أن كل صفحة سيتم تسليمها في مجموعات أو حزم منفصلة. ستكون الصفحة الأولى في حزمة واحدة ، أو الصفحة الثانية في مجموعة مكدسة أخرى ، إلخ. 





الرد }}
تم الشكر بواسطة:
#5
Collations في قواعد البيانات تعني شيء متعلق بالترميز
مثلا قاعدة البيانات عندما يكون فيها حقل nvarchar يكون ترميزه unicode ويقبل كل حروف unicode
عكس حقل varchar كذلك في حجم البيانات المخزنة فيه الاخير اقل من الاول

الصحيح في البرامج العربية ان تحدد collation قاعدة البيانات عند انسائها الى arabic collation
بالتالي تقبل الحروف العربية والانجليزية
الغريب ان تكون القاعدة لها collation لاتيني ويجبر المطور على ارفاق حرف N عند التعامل مع البيانات

بالنسبة للوصول السريع الى البيانات فكما تفضل اخي عبدالله ان يكون الفهرس رقمي

ايضا مفهوم الكائنات objects يساعد على سرعة الوصول لكل خصائص الكائن بسرعة
هذا مفهوم البرمجة الكائنية التوجه OOP
أخي viv اعتقد انك تضيع وقتك قبل اللجوء الى لغة Linq

الرد }}
تم الشكر بواسطة: viv
#6
إقتباس : اعتقد انك تضيع وقتك قبل اللجوء الى لغة Linq

لغة Ling اليست في النهاية يتم تحويلها الى جملة استعلام عادية ، فمحرك قاعدة البيانات لا يفهم Ling وانما يتم تحويلها له في جملة Sql عادية

إقتباس :بالنسبة للوصول السريع الى البيانات فكما تفضل اخي عبدالله ان يكون الفهرس رقمي

اجل هذا هو رأس الخيط ، في البرامج الكبيرة أو التي على شبكة كذلك لا غنى عن هذا الخيار
الرد }}
تم الشكر بواسطة: محمد كريّم



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم