ورود

View Full Version : انتخاب کلید اصلی از نوع Identity



karimh
دوشنبه 02 خرداد 1384, 22:35 عصر
سلام..........
میشه یکی جوابه این سوال من رو بده؟
مزیت و معایب انتخاب فیلد identity به عنوان کلید اصلی چیه؟
مثلا فرض کنید جدول شناسنام کالا را داشته باشیم ...با توجه به این که فیلد کد کالا
نمیتواند تکراری باشد و مقادیر null هم نمی گیرد بهتر است کلید این جدول کد کالا باشد یا یک فیلد identity?



مرسی :sunglass:

Microsoft.net
دوشنبه 02 خرداد 1384, 22:59 عصر
بستگی داره که کاربر بخواد کد کالاشو انتخاب کنه یا نه . که تا جایی که من می دونم اکثر حسابدارا کد کالاشونو دوست دارن خودشون انتخاب کنن :oops:

karimh
دوشنبه 02 خرداد 1384, 23:09 عصر
بستگی داره که کاربر بخواد کد کالاشو انتخاب کنه یا نه . که تا جایی که من می دونم اکثر حسابدارا کد کالاشونو دوست دارن خودشون انتخاب کنن :oops:
تا اون جایی که من میدوونم تمام رسید و حواله ها در انبار...............فاکتور ها در فروش ...درخواست ها در تدارکات بر اساس انتخاب کد کالا صورت می گیرد...........

مگه این موضوع فرقی تو طراحی بانک داره؟ :strange:

hmm
سه شنبه 03 خرداد 1384, 10:56 صبح
کریم جان
وقتی فیلدی از نوع انتخاب بشه دیگه کاربر نمیتونه این فیلدروتغییر بده و بصورت خودکار مقدار دهی میشه
اگه جدولتون فیلدی از نوع not null و دارای مقادیر یکتا داره دیگه نیازی به این فیلد نداری و میتونی همونفیلد رو بعنوان کلید اصلی معرفی کنی البته در طراحی بانک اطلاعاتی شاید چند فیلد روداشته باشی که این خاصیت رو داشته باشند ولی یکی از اونها میتونه pk باشه و تشخیص اون هم برعهده طراح بانکه

karimh
چهارشنبه 04 خرداد 1384, 21:34 عصر
البته می دانیم که فیلد کد کالا با جدول های زیادی ارتباط دارد و با توجه به اینکه اکثر جستجو ها بر روی کد کالا انجام می شود و طبیعتا ایندکس C نیز بر روی این فیلد ساخته میشود؛ چه دلایلی برای انتخاب فیلد Identity به عنوان کلید اصلی می تواند وجود داشته باشد .؟؟؟
:confy2:

AminSobati
شنبه 07 خرداد 1384, 21:35 عصر
کریم جان داشتن Identity فقط این حسن رو داره که شما نگرانیی در مورد Unique بودن اون فیلد ندارین. اما اعداد داخلش به طور اتوماتیک تولید میشن و شما کنترلی بر روی اون ندارین. اگر کنترل نیاز نیست، Identity انتخاب خوبیه.
موفق باشید

karimh
یک شنبه 08 خرداد 1384, 15:36 عصر
امین خان سلام
خسته نباشی

بابت جوابت ممنون

دلیل اصلی پرسیدن این سوال اینه که در بانک اطلاعاتی شرکت ما کلید اصلی جدول کالا یه فیلد از نوع Identity هست و در بانک نزدیک ترین رقیب ما کلید همین جدول فیلد کد کالا هستش .این دو تا شرکت تقریبا بیشترین سهم بازار رودارند.

می خواستم بدونم انتخاب کدوم طراح بانک بهتر بوده ... با توجه به اینکه کارکرد های این جدول تقریبا در هردو بانک اطلاعاتی یکسانه چون زمینه کاری این دو تا شرکت یکیه...............

ممنون از پاسختون :sunglass:

kamyar_kimiyabeigi
دوشنبه 09 خرداد 1384, 18:22 عصر
درود
اگر کلید اصلی table را از نوع identity انتخاب کنی هم برای نمایش interface به کاربر باید دائم connection را refresh کنی و هم اگه کاربر recordi را حذف کنه یه gap بین recordat می افته.
در اصل برای کلید اصلی هایی که کاربر با آنها کار نداره خوبه ولی برعکسش نه
بدرود

karimh
دوشنبه 09 خرداد 1384, 18:39 عصر
سلام
تموم حرفاتون درست...................

اما من میخوام بدونم وقتی کارکرد این جدول در هر دو تا بانک یکسانه چرا یه جا کلید اصلی کد کالا انتخاب شده و یه جا Identity و کدوم انتخاب بهتر بوده .........؟

majid_afra222
دوشنبه 09 خرداد 1384, 19:14 عصر
سلام
همونطور که دوستان در مورد کلیدهای Identity گفتن٬‌حسن اصلی اون در اینه که نیاز به مدیریت مقادیر نداره.
در ضمن طراحی یک سیستم فقط به بانک اطلاعاتی اون محدود نمیشه٬ و باید بقیه موارد رو هم مثل پیاده سازی و تست و .... هم در نظر بگیری.
بهتره دلیلش رو از طراح سیستم خودتون و طراح سیستم اونها بپرسی٬‌ والا نمیشه دلیل قطعی انتخابها رو گفت.

AminSobati
سه شنبه 10 خرداد 1384, 00:05 صبح
دلیل اصلی پرسیدن این سوال اینه که در بانک اطلاعاتی شرکت ما کلید اصلی جدول کالا یه فیلد از نوع Identity هست و در بانک نزدیک ترین رقیب ما کلید همین جدول فیلد کد کالا هستش
این برمیگرده به طراحی. باید دید اونیکی شرکت به چه صورت کد کالا رو تولید کرده که به عنوان PK ازش استفاده میکنه. شاید روش اونها صحیح نباشه. ندیده مشکله قضاوت کردن..

اگه کاربر recordi را حذف کنه یه gap بین recordat می افته
البته این Gap هیچ مشکلی ایجاد نمیکنه مگر زمانیکه از این فیلد به عنوان شماره ردیف استفاده کرده باشیم(یک اشتباه بزرگ!)
به طور کلی استفاده از Identity کار خوبیه مگر زمانیکه میبایست کدهای معنی دار استفاده بشن که از Identity ساخته نیست. ولی جمعا برای Unique کردن رکوردها Identity بسیار مناسبه.