سوال درباره Data Base

miladmovie

Active Member
برای من هم سوال شده : unique و primary و index
و هر کدوم به چه چیزی توی SQL SERVER مربوط می شن ( یعنی توی اونجا معادل هر کدوم چیه ! )
 

oxygenws

Active Member
تقریبا هیچ کدوم از اینها به هم مربوط نیستند!!

unique بودن که کلا یه چیز دیگست.... یعنی تو اون ستون نمی شه مقدار تکراری داشت، به هر نحوی.... و اگر چنین بشه، بانک ارور بر میگردونه.

index ..... وقتی رو یک ستون ایندکس تعریف میشه، اون ستون راحت تر جستجو میشه. (عموما سرعت insert کم میشه، سرعت update فرقی نمی کنه، سرعت select خیلی زیاد میشه) توجه کنید که یک ستون توی بانک، عموما 1 بار نوشته میشه و هزاران بار خونده میشه.
چند نکته....
1- ایندکس گذاشتن، حجم بانک رو بالا می بره.
2- ایندکس گذاشتن، تا یه حدی سودمند می باشد، اگر زیاد بشه، ضرر خواهد داشت. (البته در 100% مواقع چنین نیست)
3- به طور ساده میشه گفت، در ستون هایی که در قسمت where کوئری های select ارسال میشن، باید ایندکس گذاشت.

primary به کلید اصلی یک جدول گفته میشه (میتونه شامل یک یا چند ستون باشه) این کلید ---قطعا--- یونیک می باشد، اما یک فیلد یونیک، حتما کلید اصلی (primary) نیست.

fulltext هم برای ستون های متنی در MySQL مطرح میشه و نوعی جستجوی پیشرفته در اون ستون رو (مثل کوئری هایی که به گوگل ارسال میشه) روی اون ستون خاص فعال می کنه.
 

miladmovie

Active Member
خب حالا وقتی primary می شه چه امکانی می ده که unique نمی ده !
شاید وقتی جدوامون با innodb باشه مشخص می شه ؟ !
 

oxygenws

Active Member
در منطق پایگاه داده، هر جدول که نیازی به فراخوانی داره (حالا چه توسط یک کاربر یا یک جدول دیگه) باید دارای کلید اصلی باشه، در حقیقت مشخصه هر سطر رو همون کلید اصلی میگن.

حالا اینکه دقیقا در خود بانک MySQL (منظورم همون جداول MYIASAM هست) چه تفاوتی دارند، نمی دونم.

اینو یادم رفت بنویسم.....
البته اون موردی که گفتم..... که کلید اصلی می تونه شامل چندین ستون باشه، در یونیک نداریم!
 

oxygenws

Active Member
من دیگه نمی دونم چطوری توضیح بدم که بفهمی....
فکر کنم اگر با این پیش فرض ها بری دو تا مقاله انگلیسی بخونی، مشکلت حل بشه... :)
موفق باشی...
 

Salman_MP

Member
سلام خدمت دوستان عزيز؛
عرض شود كه تفاوتهايي است مهم مابين كليد (پرايمري) و يكتا (يونيك) و از آنها يكي اينكه هر كليدي حتماْ يكتا است ولي هر يكتايي حتماْ كليد نيست (كه دوستمون هم گفته بود)
و ديگري اينكه براي ايجاد ارتباط مابين دو يا چند جدول و به طور دقيق تر استفاده از كليدهاي خارجي (در جدولهاي ديگر براي اشاره كردن به جدول مورد نظر) بايد فيلد كليد داشته باشيم ولي يونيك بودن فقط يه خاصيت براي يك ستون هست و قابليتي به جدول اضافه نمي كنه.
 

oxygenws

Active Member
مورد دوم رو هم من گفتم، ولی از اونجایی که چنین چیزی در جداول MYISAM در MySQL نداریم، در حقیقت، ---فعلا--- چنین چیزی وجود نداره.
 

Majid

مدیر سایت
عضو کادر مدیریت
فکر کنم تعریف راحتتر اینطوری باشه که :


primary = index + unique

یعنی یک فیلد که Primary باشه هم یکتا هستش و هم index


مجید
 

جدیدترین ارسال ها

بالا