PDA

View Full Version : استفاده از count بعنوان کلید



galesh
چهارشنبه 05 مهر 1391, 16:33 عصر
سلام . من جدولی دارم که شامل نام،تلفن و آدرس میشه و همونطور که میدونید هیچکدوم اینا برای استفاده بعنوان کلید مناسب نیستند. راهی که بنظرم رسیده اینه که از خاصیت count برای کلید استفاده کنم . اما اولا نمیدونم چطور اینکارو انجام بدم و ثانیا آیا شما راه بهتری سراغ دارید یا خیر ؟ ممنون میشم اگه کمکم کنید . تشکر.

Farshid007
چهارشنبه 05 مهر 1391, 18:17 عصر
اولا خاصیت کانت چیه دیگه؟
اگه منظورت Auto Increment هست
می تونی اول از همهی اونها فیلد ID رو هم بسازی و خاصیت Identity رو فعال کنی

uniqueboy_ara
چهارشنبه 05 مهر 1391, 18:22 عصر
شما سوالتم مشکل داره!
کی گفته که هیچ کدوم از اون مواردی که شما گفت، نمیتونه کلید باشه؟؟؟
درسته که نام و آدرس ممکنه تکراری باشه و یا به هر دلیل دیگه ای نشه ازشون استفاده کرد، ولی شماره تلفن، یه مقدار Unique هستش و هیچوقت تکراری در نمیاد! و به راحتی میشه به عنوان کلید ازش استفاده کرد

uniqueboy_ara
چهارشنبه 05 مهر 1391, 18:36 عصر
وقتی 3تا خاصیت بیشتر وجود نداره، میشه قبلی رو پاک کرد و کاربر جدید رو با تلفن جدید ذخیره کرد!

Mahmoud.Afrad
چهارشنبه 05 مهر 1391, 18:44 عصر
خوب اینطوری ممکنه در جداول دیگری سوابقی از این شخص وجود داشته باشه(تلفن به عنوان کلید خارجی) که با تغییر کلید اصلی(تلفن) دیگه به اون سوابق دسترسی نداریم.

حتی بالاتر از اون ، یک دانشجو رو فرض کنید. اگر بخواهید کلید اصلی در نظر بگیرید احتمالا انتخاب شما شماره داشجویی هست در صورتی که شماره داشجویی هم نباید کلید اصلی باشه چون ممکنه تغییر کنه (نمونش دانشگاه پیام نور چند سال پیش شماره دانشجویی را تغییر داد). پس فیلد دیگری باید به عنوان کلید در نظر گرفته بشه.

uniqueboy_ara
چهارشنبه 05 مهر 1391, 19:07 عصر
آقااااا نگاه کلان نکن به قضیه
یه سوال کوچولو پرسیدن، تو سوال هم یه جدول بیشتر نیست!
منم طبق شرایط سوال جواب دادم!

galesh
چهارشنبه 05 مهر 1391, 19:18 عصر
اتفاقا چند تا جدوله و من میخوام از فیلد کلید این جدول بعنوان کلید خارجی برای ارتباط با جداول دیگه استفاده کنم. البته کاری که من تا الان کردم اینه که فیلد ID هم به جدول اضافه کردم که همون مقدار شماره تلفن رو میگیره و همین فیلد ID رو بعنوان کلید در نظر گرفتم . اینطوری امکان تغییر شماره تلفن هم وجود داره .
در ضمن اگه از همین فیلد identiy بعنوان کلید استفاده کنم ، مطمئن هست؟

samadblaj
چهارشنبه 05 مهر 1391, 21:40 عصر
به نظر من توی جدولت فیلد ID رو درج کن و Identity رو فعال کن...

Mahmoud.Afrad
پنج شنبه 06 مهر 1391, 01:56 صبح
اتفاقا چند تا جدوله و من میخوام از فیلد کلید این جدول بعنوان کلید خارجی برای ارتباط با جداول دیگه استفاده کنم. البته کاری که من تا الان کردم اینه که فیلد ID هم به جدول اضافه کردم که همون مقدار شماره تلفن رو میگیره و همین فیلد ID رو بعنوان کلید در نظر گرفتم . اینطوری امکان تغییر شماره تلفن هم وجود داره .
در ضمن اگه از همین فیلد identiy بعنوان کلید استفاده کنم ، مطمئن هست؟

من که میگم این id هم مشکل داره. (1 درصد)فرض کن یک نفر با یک شماره تلفن ثبت بشه(شخص 1). بعد از چند وقت شماره تلفن رو به کس دیگه ای(شخص 2) واگذار کنه پس شماره تلفن تغییر میکنه ولی کلید همون قبلیه. حالا فرض کن شخص2 را بخواهید در سیستم ثبت کنید(کاره دیگه خدا رو چه دیدی). برای ثبت شخص2 مشکل بوجود میاد چون قبلا شخصی(شخص1) با این id ثبت شده و conflict primary key روی میده.

پس کلید، فیلدی جدا و مقدارش هم برای هر شخص منحصر به فرد باید باشه و در طول زمان نباید نیازی به تغییرش باشه. میتونید با توجه به تعداد رکوردی که ثبت میکنید یک نوع مناسب برای فیلد کلید در نظر بگیرید (int , bigint , uniqueidentifier و ...)

samadblaj
پنج شنبه 06 مهر 1391, 10:02 صبح
منم نظر اینه شماره تلفن کلید نمیتونه بشه. کد ملی مشکل نداره یکتا باشه قابل جایگزینه نباشه یا فیلد ID

ashe405
پنج شنبه 06 مهر 1391, 10:55 صبح
سلام میتونین واسه ای دی یه فیلد دیگه اضافه کنین و به صورت ترکیبی ار فیلدهای جدول یه کد خاص ایجاد کنین یه تابع واسه ایجاد اون کد هم میشه نوشت