الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ال Primary Key

مغلق
بدأه Aref21 في 4 يونيو 2005 · 10 رد · 1,412 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كم الحد الأقصى لل primary keys في الجدول

إذا زاد عدد المفاتيح الرئيسية فهل الطريقة الأفضل دمج المفاتيح في مفتاح واحد من النوع string ام ان تكون مستقلة الحقول مثل رقم الفرع و رقم النوع و رقم التسلسل و طريقة الدفع و غيرها من الحقول التي يمكن أن تكون كثيرة لأني اريد عمل جدول اضمن فيه الترحيلات من عدة جداول

ليكون الجدول الأخير شاملا لبيانات جداول مختلفة المفاتيح لكل منها

مع خالص شكري

معــــــــ نصــــــ الحيــــــــــاة ــــــنع ــــــا

موقع الاستاذ عمرو خالد

#2

انا لم اتعرض ابدا لموقف اضطررت فيه لاستخدام اكثر من 2 Primary Keys في table واحد و نادرا ماتحتاج اكثر من ذلك

حاول ان تراجع تصميمك فغالبا التصميم به بعض المشاكل

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3

هناك حالات يكون فيها ال PK عد من الحقول مثل

جدول علامات الطلاب

رقم السنة

رقم الفصل

رقم الشعبة

رقم الطالب

و إن كان الجدول لأكثر من مدرسة يكون فيه رقم المدرسة على سبيل المثال

بشكل عام

هناك قواعد بيانات يكون فيها عدد الحقول كثيرة و قد ضربت مثالين

هل الطريقة مثلى عند زياة ال primary keys

معــــــــ نصــــــ الحيــــــــــاة ــــــنع ــــــا

موقع الاستاذ عمرو خالد

#4

الحل هو اختيار الحقول المراد ان تكون برميري كي لديك و اختيار

create primary key من القائمة التي تظهر عن الضغط باليمين

و لكن لاحظ انه لا يمكن ان يكون غير primary key clustered واحد فقط في الجدول و يمكن عمل الباقي no-clustered لغاية 269 حقل

حتقولي ازاي اعمل الباقي non-clusterd

قف على الحقل اللي تريد عمله non-clusterd و اضغط باليمين ثم properties ثم indexes و قم باضافة واحد لاظ انه البريمري الكلاسترد حيكون ال pk و الباقي ix و لا يمكن غير عمل واحد بريمري كلاسترد .

لكن دقق جيدا في اختيار الحقول التي ستكون كلاسترد لانه سيؤثر بشكل بكير في كفاءة القاعدة بالاضافة الى انه في حال الرغبة في التغيير يكون عليك عمل drop للايندكسس و عملها من اول و جديد

سؤال ممتاز على فكرة

تم تعديل هذه المشاركة بواسطة busbar في 4 يونيو 2005 في 14:45

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#5
اقتباس
هل الطريقة مثلى عند زياة ال primary keys

إضافةوتفصيل لما قاله الأخ busbar

اقتباس
لكن دقق جيدا في اختيار الحقول التي ستكون كلاسترد لانه سيؤثر بشكل بكير في كفاءة القاعدة

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

بالإضافة للسبب الآخر المذكور:

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

فكر بطريقة أخرى

#6
Aref21 كتب:
هناك حالات يكون فيها ال PK عد من الحقول مثل

جدول علامات الطلاب

رقم السنة

رقم الفصل

رقم الشعبة

رقم الطالب

و إن كان الجدول لأكثر من مدرسة يكون فيه رقم المدرسة على سبيل المثال

بشكل عام

هناك قواعد بيانات يكون فيها عدد الحقول كثيرة و قد ضربت مثالين

هل الطريقة مثلى عند زياة ال primary keys

هذا المثال لا يحتاج اكثر من primary key واحد فقط و هو رقم الطالب و ان كان رقم الطالب مربوطا بالفصل اذا ضع حقل جديد مثلا اسمه ID او مسلسل و يكون فيه رقم الطالب على مستوى المدرسة كلها و هذا استخدمه كprimary key و بالتالي سيكون افضل بكثير

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#7

هو يقصد أن هذا جدول علامات الطالب وليس جدول الطلاب

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

لأن رقم الطالب قد يتكرر في عامين متواليين

#8

أنا لا أقصد جدول الطلاب بعينه و لكن أي جدول آخر ممكن يحتوي أكثر من حقل لتشكل هذة الحقول المفتاح الرئيسي لهذا الجدول فذكرت الجدول السابق على سبيل المثال

قلت لو نظام المدرسة يحوي جدولا لعلامات الطلاب على سبيل المثال

و كان المحدد لهذا الجدول

رقم الطالب و رقم الفصل ورقم الشعبة و لو كانت أكثر من مدرسة لكان رقم المدرسة ضمن هذه الحقول

فهل الأفضل جعل هذه الخقول كلها ضمن المفتاح الرئيسي ام دمجها في مفتاح واحد

ارجو أن يكون سؤالي الآن مفهوما

معــــــــ نصــــــ الحيــــــــــاة ــــــنع ــــــا

موقع الاستاذ عمرو خالد

#9

احسن شئ ان تبني حقلا جديدا مستقلا و تجعله هو الPrimaryKey

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#10

في عندي جدول فيه رقم السنة و رقم الشهر ورقم الفرع الذي يعمل فيه و رقم القسم ورقم الموظف و عدة حقول أخرى للاحتفاظ بمرتبات الموظفين الشهرية فهل يجب أن تكون الحقول المذكورة مفتاح أم ماذا دلوني؟

معــــــــ نصــــــ الحيــــــــــاة ــــــنع ــــــا

موقع الاستاذ عمرو خالد

#11

هناك عده معايير لاختيار المفاتيح في الجدول

1- هل ستستخدم هذه الحقول في استعلامات select ام لا لو نعم سيكون عليك عملها بريمري

2- لو ستستعمل بعض الحقول في استعلامات select مع inner join او outer join سكون عليك اضافة non-clustered key .

تصميم الداتا بيس عندك normalized ام لا لانه لو normailized فاضافة الكثير من البرميري كي سيؤثر على كفاءة القاعدة.....

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

هذا الموضوع مغلق.

مواضيع مشابهة