PDA

View Full Version : ضرورت استفاده از Auto Namber



hamedinho
شنبه 22 مهر 1385, 14:13 عصر
لطفا دلیل استفاده از Auto Namber رو توضیح بدید و اگر نباشد چه مشکلی پیش میاد.

سنبله کار
دوشنبه 24 مهر 1385, 08:52 صبح
معمولا در ارتباط دهی بین جداول به عنوان فیلد کلیدی استفاده می شه و در حالت عادی با نبودش مشکلی پیش نمیاد و شما می تونید برای ارتباط از فیلدهای کلیدی که خودتون مقدار بهشون می دید استفاده کنید .
اما نکته ظریف اینجاست که ممکنه مقدار فیلدهای دیگه نیاز به تغییر داشته باشن یا ممکنه بعد از مدتی بدلایل مختلف از حالت غیر تکراری در بیان در این شرایط autonumber گزینه بهتر هست .

samaneh_h
دوشنبه 24 مهر 1385, 08:54 صبح
من بیشتر موقعی استفاده می‌کنم که بخوام ساب تیبلم رو با چیزی غیر از فیلد کلیدی با تیبل ارتباط بدم

mohsenna30ri
دوشنبه 24 مهر 1385, 11:47 صبح
به نظر من از نون شب هم واجب تره!!
بالاخره برنامه قابل پیش بینی نیست و در اینده شاید شما باید برنامه را بصورت کاملتری ارتقا دهید اونوقت دیگه ترس ندارید که کلید برنامه را عوض کنید یا لینک تون درست میشه یا نه!
تازه اگر استفاه کنید چیزی از دستتون نرفته!

hamedinho
دوشنبه 24 مهر 1385, 14:11 عصر
با تشکر
یه چنتا از کاربردهای حرفه ایش رو لطفا بگید .

Ali_Fallah
دوشنبه 24 مهر 1385, 19:36 عصر
اگه اجازه بدید من هم نظر خودم رو اعلام کنم
بدلیل اینکه بصورت پیش فرض هر جدولی نیاز به یک فیلد کلید دارد(فیلد اصلی ) لذا موقعی که جدول را طراحی کرده ولی برای آن کلید تعریف نکرده باشیم اکسس موقع ذخیره آن جدول از ما میپرسد که ایا برای جدول یک فیلد کلید در نظر بگیرد یا نه
که برای همه جدولها همان Auto Namber هست (ID) که اعداد رانیز به ترتیب و موقع ایجاد هر رکورد ذخیره می کند که البته این فیلد بعدها ممکنه موجب اشکال در سیستم بشه و همانطور که میدونید بعد از حذف هر رکورد دیگر آن شماره به هیچ رکوردی اختصاص داده نمیشه
بنا براین خودم هیچ موقع از Auto Namber در برنامه هام استفاده نمی کنم و سعی میکنم خودم تعریف کنم.

moustafa
دوشنبه 24 مهر 1385, 20:18 عصر
منم با اقای کامرانی موافقم

sarami
دوشنبه 24 مهر 1385, 20:51 عصر
شدیدا اشتباه!!!!!
در مورد بخشی که فرمودین سیستم دچار اشکال و در صورت حذف اون رکورد به رکورد دیگه ای داده نمیشه رو منظورمه...
قرار هم نیست داده بشه چون هدف از این نوع فیلد تولید کدهای یکتا و منحصر به فرد برای هر رکورده ن هردیف و یا هر چیز دیگر مورد نظر. پس اشکال نیست و نهایتا معنای یونیک بودن جدای معنای تکراری بودن و شرط مهمی این دو رو از هم جدا میکنه.
با بخش دوم سخنتون هم که خودتون این کلید رو ایجاد میکنین بله میشه اینکار رو کرد و بخوبی هم جوابگوست
ولی پیشنهاد همواره از فیلد AutoNumber به همراه فیلد کلیدی خودتون استفاده کنین. در دراز مدت بسیار به دردتون میخوره

Ali_Fallah
دوشنبه 24 مهر 1385, 21:30 عصر
با سلام مجدد

فکر کنم آقای صارمی نوشته های منو با دقت نخونده باشند یا من منظورم را بدرستی نرسونده باشم به هر جهت فکر نکنم برنامه نویسی بخواد فقط در جدولهای خود بتنهایی از فیلد AutoNumber استفاده بکنه بعنوان مثال برنامه سیستم پرسنلی را درنظر بگیرید که جدول ثبت مشخصات کارکنان ، کلید اصلی آن فیلد AutoNumber باشه
اگر در کنار یک یا دو فیلد که کلید هستند بخواهیم برای منظور خاصی (بستگی به برنامه نویس و نوع برنامه) می توانیم از فیلد AutoNumber استفاده کنیم حتی به تنهایی هم میشه و همانطور که اشاره کردید


شدیدا اشتباه!!!!!
با بخش دوم سخنتون هم که خودتون این کلید رو ایجاد میکنین بله میشه اینکار رو کرد و بخوبی هم جوابگوست
ولی پیشنهاد همواره از فیلد AutoNumber به همراه فیلد کلیدی خودتون استفاده کنین. در دراز مدت بسیار به دردتون میخوره
ضمنآ منظور من از اینکه فیلدی ایجاد کنم تا اعداد را به ترتیب ثبت کنه نبود
بلکه ایجاد فیلد کلید آنطوری که من میخوام

sarami
دوشنبه 24 مهر 1385, 21:49 عصر
بزارین با یه مثال روشن تر کنم مسئله رو:
برنامه نویسی برای سیستم بازرسی داره کد های غیر تکراری برای کارت های ساعت زنی ایجاد میکنه و برای این منظور هم از کدهای غیر تکراری که خودش ایجاد میکنه استفاده میکنه همانند دوستان .و ورود و خروج کارکنان رو ثبت میکنه.
برنامه نویس دیگری که معمولا تو سازمانهای ایرانی اینگونه است . بر اساس فهم غیر تکراری بودن رکوردها که شرط درستی هم هست همانند دوستان برنامه حقوق دستمزدی بر اساس ورود و خروج کارکنان بر اساس فیلد کلیدیه بازرسی که همون شماره کارت غیر تکراریه مینویسه .
حال تفاوت یونیک بودن و غیر تکراری بودن.
کارمندی با شماره کارت 40055 به نام مهدی و..... از اداره بازنشست میشه.حال اپراتور برنامه بازرسی این شماره رو حذف میکنه.و به کارمند جدید الستخدام بنام علی میده. بدلیل روی میز ماندن و یا هر دلیل دیگه ای اپراتور برنامه حقوق دستمزد هنوز اون کد رو پاک نکرده و بنام مهدی دارتش در سر ماه فیش حقوقی با نام مهدی و با ورود و خروج علی نتبجه خواهد بود.
ولی در شرایطی که برنامه از فیلد کلیدی AutoNumber در پس پرده استفاده کنه . در صورت چنین موردی بدلیل اینکه خود سیستم بمنظور جلوگیری از چنین مواردی کد حذف شده رو به هیچ رکورد دیگری نخواهد داد اماکن چنین اشتباهی صفر میباشد.
این مثالی کوچک از یک سازمان بود مثال های بزرگتر و نتایج احتمالی بعهده دوستان

Ali_Fallah
دوشنبه 24 مهر 1385, 22:07 عصر
این برنامه ای که شما مثال زدید گرفتم چی میخواهید برسونید
ولی اگه ساختار برنامه آنطوری که شما مثال زدید باشه به نظر من بسیار اشتباه هست چون تا جایی که من میدونم یک شماره کارت یا شماره پرسنلی برای همیشه تاریخ در آن اداره برای همان شخص محفوظ هست حتی اگر آن شخص اخراج یا باز نشست بشه و اون کد به هیچ وجه قابل حذف نیست
چون بارها اتفاق افتاده شخصی بعد از سالها که دیگر در اداره ای کار نمیکرد دنبال سوابق کاری خود در آن اداره بود .
ضمناً در اداره جات هرکس نمیتونه برای خودش شماره ای برای کارمند در نظر بگیره و اون از طریق کارگزینی به تمام قسمتها اعلام میشود.
همانطوریکه که گفتم AutoNumber در صورت بودن درکنار بقیه فیلدهایی که کلید هستند بسیار مناسب خواهد بود و به نظر من به تنهایی شاید خیلی کار ساز نباشه ...
البته هرشخصی نظر خودش را داره ...

sarami
دوشنبه 24 مهر 1385, 22:45 عصر
این نظر شخصی نیست آقای کامرانی عزیز ....
به جمله دقت کنین در سازمانهای ایرانی !!!!!
مطمئن باشین طراحان ماکروسافت اینگونه موراد رو بدرستی درک کرده و راه درستی رو انتخاب نموده اند. در مثال بنده نیز فرض بر شرایط ایده آل و... نمی باشد. و قصد طراحی سیستم بازرسی و حقوق دستمزد را نداشتم.
در اهمیت تولید کدهای یونیک همین بس که سازمانهایی جهانی بر این امر نظارت داشته و دارند برای مثال. IEEE بر یونیک بودن mac Adress مروبط به NIC کارتها نظارت دارد و.....
برای اینکه بدون استرس کد های یونیک تولید کنین و در Join ها تون به منابع قابل اعتماد تری تکیه کنین حتما از AutoNumber برای ایجاد کدهای یکتا استفاده کنین و PK رو اینگونه فیلد ها قرار بدین.
برای اینکه بتونین کدهای اختصاصی خودتون رو هم داشته باشین همراه همانند همون موردی که آقای کامرانی فرمودن البته با اولویت فیلدهای Autonumber در کنار اینگونه فیلدها از فیلدهای اختصاصی خودتو استفاده ئلی بر فیلدهای Autonumber تکیه کنید

shocraneh
شنبه 30 آبان 1388, 00:23 صبح
من یه مشکلی دارم از auto number استفاده کردم خوب تا زمانی که من هنوز دارم کدهامو تست می کنم میام به جداولم رکورد اضافه می کنم و خوب بعدم دستی پاکشون می کنم خوب قائدتا هنوز تا این مرحله لازم نیست که id بالا بره . من الان سه رکورد دارم و id 20 می زنه .من می خام بعد 4 بشه و خوب حالا از به بعد auto number طبق اصول کار کنه
از compact&repair هم استفاده کردم اما جواب نداد

مهدی قربانی
شنبه 30 آبان 1388, 06:59 صبح
سلام
Compact & Repair براي صفر كردن فيلد Auto Number كاربرد داره اونم بشرطي كه همه ركوردها Delete شده باشن و بعد عمليات مذكور اجرا بشه . در ضمن درباره Auto Number‌ مطلب تو اين بخش زياده جستجو كنيد .