PDA

View Full Version : سوال: unique كردن تركيبي با نام+نام خوانوادگي+نام پدر



ali_abbasi22145
چهارشنبه 27 آبان 1388, 12:47 عصر
سلام
من براي unique كردن بانكي كه شماره ملي ندارند و شماره كارمندي هم ندارن نام+نام خوانوادگي+نام پدر مي گيرم و فاصله هاي خالي را حذف كرده و در يك فيلد ذخيره مي كنم و بانكم را با آن unique مي كنم.
آيا اين روش در 99% موارد درست است و آيا پيشنهاد بهتري داريد؟

Reza.ariyan
چهارشنبه 27 آبان 1388, 15:55 عصر
شما ویتوانید نام+نام خوانوادگي+نام رو فقط در جدول اصلی Unique Index بگذارید
نیازی به این نیست که در فیلد دیگه بگذارید و Unique کنید

ali_abbasi22145
چهارشنبه 27 آبان 1388, 16:59 عصر
سلام
راه حل شما جالبتر از روش من است لطفا مراحلش را توضيح بيشتر مي دهيد؟

Reza.ariyan
چهارشنبه 27 آبان 1388, 17:13 عصر
فیلدهای جدول رو بذار تو پست

Reza.ariyan
چهارشنبه 27 آبان 1388, 18:02 عصر
بری جدول خودت راست کلیک کن
Index Keys رو انتخاب کن تا پنجره Index Keys باز بشه
از قسمت Type گزینه Unique Key رو انتخاب کن
روی قسمت Column کلیک کن و دکمه ... رو انتخاب کن تا پنجره Index Columns باز بشه
به ترتیب1.FirstName و LastName و FatherName رو با Sort order → Ascending ایندکس کن

به این ترتیب هیچ وقت نمیگزاره که یک نفر با اطلاعات مختلف چند بار ثبت بشه

ali_abbasi22145
یک شنبه 01 آذر 1388, 12:57 عصر
بری جدول خودت راست کلیک کن
Index Keys رو انتخاب کن تا پنجره Index Keys باز بشه
از قسمت Type گزینه Unique Key رو انتخاب کن
روی قسمت Column کلیک کن و دکمه ... رو انتخاب کن تا پنجره Index Columns باز بشه
به ترتیب1.FirstName و LastName و FatherName رو با Sort order → Ascending ایندکس کن

به این ترتیب هیچ وقت نمیگزاره که یک نفر با اطلاعات مختلف چند بار ثبت بشه

سلام
من SQL SERVER 2000 دارم و روش شما تست كردم unique مي كند برحسب نام يعني يك بار "علي" تايپ كريم ديگر "علي" نمي توان تايپ كرد و همينطور براي نام خانوادگي و نام پدر\ واين چيزي نيست كه من مي خواهم.

من شخصي با نام "علي" و نام خانوادگي "حسني" و نام پدر "حسين" را تبديل مي كنم به "عليحسنيحسين" و در فيلد ديگري ذخيره مي كنم وديگر اين نام و نام خانوادگي و نام پدر را نمي گيرد و من شكلي در SQL مي خواهم uniqe كنم!

Reza.ariyan
یک شنبه 01 آذر 1388, 14:24 عصر
شرمنده
من SQLSERVER 2008 استفاده میکنم ، الان امتحانش کردم جواب داد
نمیدونم که 2000 باید چیکار کرد !!!

shima_85
دوشنبه 02 آذر 1388, 10:34 صبح
شما ویتوانید نام+نام خوانوادگي+نام رو فقط در جدول اصلی Unique Index بگذارید
نیازی به این نیست که در فیلد دیگه بگذارید و Unique کنید

چرا اون سه تا فیلدو با هم کلید نمیکنید به جای اینکه ایندکس کنید؟
فرقشون چیه؟

Reza.ariyan
دوشنبه 02 آذر 1388, 13:59 عصر
چرا اون سه تا فیلدو با هم کلید نمیکنید به جای اینکه ایندکس کنید؟
فرقشون چیه؟
آخه تو اصول نرمال سازی هیچ وقت نباید بیشتر از 1 فیلد کلید داشته باشیم

ali_abbasi22145
چهارشنبه 04 آذر 1388, 10:01 صبح
شرمنده
من SQLSERVER 2008 استفاده میکنم ، الان امتحانش کردم جواب داد
نمیدونم که 2000 باید چیکار کرد !!!

سلام
باشد من حرفتان را قبول دارم در SQL SERVER 2000 روش کار را کسی بفرماید و اگر در SQL SERVER 2000 این امکان وجود ندارد هم کسی به من بگوید

rakh_vaf
سه شنبه 01 دی 1388, 14:33 عصر
اگر در SQL SERVER 2000 این امکان وجود ندارد هم کسی به من بگوید

سلام
من با SQL 2000 امتحان کردم و جواب میده
رایت کلیک روی جدول->all tasks
manage indexes->new
تیک زدن هر سه فیلد نام،نام خانوادگی، نام پدر
انتخاب Unique values