View Full Version : يونيک کردن فيلد از نوع uniqueidentifier
bftarane
پنج شنبه 04 آبان 1391, 13:56 عصر
سلام دوستان
آيا اينکه يک فيلد از نوع uniqueidentifier را يونيک کنيم (يعني کليک راست روي فيلد
انتخاب Indexes/keys
Add
IsUnique yes
Type Unique Key
با توجه به اينکه گويا احتمال تکرار فيلد از اين نوع گرچه بسيار کم است ولي صفر نيست
کار درستيه؟
ممنون
bftarane
پنج شنبه 11 آبان 1391, 08:25 صبح
لطفاً نظر بديد عيب نداره اگه مطمئن هم نباشيد. حداقل مي فهمم به نظر بقيه هم آيا اين کار غيرعادي هست يا نه؟
Felony
پنج شنبه 11 آبان 1391, 18:05 عصر
UniqueIdentifier ها همون GUID ها هستن ، این اعداد به صورت یک مقدار باینری 16 بایتی ذخیره میشن ، بر خلاف یک فیلد از نوع Identity فیلدهای UniqueIdentifier به صورت خودکار مقدار دهی نمیشن و برای مقدار دهی اون ها یا باید خاصیت Default مربوط به فیلد رو با تابع NewID مقدار بدید یا در اسکریپتتون به صورت زیر عمل کنید :
DECLARE @GUID uniqueidentifier
SET @GUID = NEWID()
INSERT Item VALUES (@GUID,'Yak Hoof')
از نظر یکتا بودن مقادیر تولید شده میشه مطمئن بود چون پروسه تولید این اعداد با استفاده از تاریخ و زمان فعلی سیستم و یکسری مشخصات سخت افزاری یکتا در سیستم و الگوریتم بسیار خاصی انجام میشه ولی در کارهای عادی بهتره از همون فیلد Identity استفاده بشه تا مدیریت و خطایابی و ... راحت تر باشه ، از GUID ها بیشتر در مواردی که قصد همسان سازی چند پایگاه با هم و ... وجود داره استفاده میشه ، اینطوری هر رکورد در هر جدول مربوط به بانک اطلاعاتی هر سیستمی با توجه به مشخصات یکتا اون سیستم مقدار یکتایی در فیلد GUID خودش داره و موقع Merge کردن داده های جداول مشکل یکسان بودن کلید یا ... پیش نمیاد .
توجه داشته باشید که GUID ها یکی از حجیم ترین Data Type های تعریف شده در SQL Server هستن ، حجم هر GUID همونطور که گفتم 16 بایت هست که در ایندکس گذاری و Performance میتونه تاثیر چشم گیری داشته باشه در صورتی که حجم Identity ها 4 بایت هست و در Index گذاری بسیار به صرفه تر ، با توجه به این مورد اگر برای استفاده از GUID ها دلیل قانع کننده ای نداشته باشید و بشه کارتون رو با همون فیلدهای Identity راه انداخت استفاده از UniqueIdentifier ها اشتباه محض هست .
شب خوش .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.