PDA

View Full Version : انتخاب اندازه فیلد



sorenaus
پنج شنبه 29 مهر 1389, 12:02 عصر
با سلام

من میخوام یک سایت خبری طراحی کنم، اما نمیدونم واسه فیلدهام از چه DataType ای استفاده کنم،
مثلا واسه شرح گروه خبری ، میدونم باید کلا فیلدهای رشته ایم از نوع NVarChar بزارم
اما چند تا، یعنی NVarChar(....)

میخوام بدونم این تعداد رو از کجا میشه فهمید ، چه حکمتی پشتشه؟
با تشکر

ad.davachi
پنج شنبه 29 مهر 1389, 12:08 عصر
مهمترین Data Type ها در SQLServer عبارتند از :

int : اعداد صحیح را شامل می شود ، مانند Number در Ms-Access است یعنی یک فیلد عددی در اختیار شما قرار می دهد ، فیلد دیگری به نام BigInt نیز وجود دارد که مشابه Int بوده با این تفاوت که اعداد با ارقام بیشتری را در خود جای می دهد

Tinyint : نوع داده عددی است ولی اعداد صحیح مثبت بین 0 تا 255 را قبول می کند ، این نوع داده برای گزینه های چند انتخابی که تعدا انتخاب های وسیع نیست کاربر دارد (مانند فیلدهای رشته تحصیلی ، جنسیت ، وضعیت تاهل و...)

bit : نوع داده 0 یا 1 است ، مشابه Yes/No در Access

DateTime : نوع داده تاریخ و ساعت است

نوع داده char , varchar و همچنین nchar , nvarchar کمی گیج کننده هستند و بسیاری این ها را به جای هم استفاده می کنند که مشکلات بسیار بزرگی در پایگاه داده ایجاد می نماید :

char : این نوع داده برای ذخیره کاراکتر استفاده می شود ، همانطور که ملاحظه می کنید حداکثر تعداد کاراکتر قابل قبول آن در پرانتز جلوی آن نوشته شده (به صورت پیشفرض 10 می باشد) که میتوانید آن را تغییر دهید (زیاد یا کم نمایید) ، درست است که این نوع داده مقادیر رشته ای را در خود ذخیره می کند ولی یک اشکال دارد و آن هم این است که اگر شما حداکثر کاراکتر ها را پر نکنید ما بقی Space گذاشته خواهد شد ، برای روشن شدن مطلب یک مثال می زنم :

فرض کنید نوع داده خود را Char 15 انتخاب کرده باشد ، اکنون در این فیلد کلمه "ali" که 3 کاراکتر می باشد را وارد مینمایید ، سیستم به صورت خود کار 12 کاراکتر Space به آن اضافه می کند یعنی "ali " که این برای ما اصلا جالب نیست .

بنابراین این نوع داده فقط در جایی کاربر دارد که تعدا کاراکتر ها دقیق پر شود ، مثلا کد پستی همیشه 10 رقم است بنابراین میتوانیم از char 10 استفاده کنیم .

nchar : این نوع داده دقیقا مانند char بوده با این تفاوت که از کاراکتر های یونیکد (مانند کاراکتر های زبان فارسی ، عربی ، چینی و...) پشتیبانی می کند، در صورتی که در نوع داده char کاراکتر فارسی وارد کنید به ? تبدیل خواهد شد و شما متن را از دست خواهید داد.

varchar : این نوع داده نیز کاراکترهای رشته ای را مانند char قبول می کند با این تفاوت که اگر شما varchar 50 انتخاب کرده باشید و کلمه "delshad" را در این فیلد وارد کنید بقیه را Space نمی گذارد بلکه به صورت متغیر هم سایز آن کلمه می شود ، بنابراین زمانی که اندازه متن شما از پیش معلوم نیست (مانند اکثر فیلدها : نام ، نام خانوادگی ، ایمیل و...) باید از این نوع داده استفاده شود .

nvarchar : دقیقا مشابه varchar بوده با این تفاوت که از Unicode پشتبانی می کند ، بنابراین اگر در فیلدی قرار است کاراکتر فارسی هم وارد شود و همچنین تعداد کاراکتر ها از پیش تعیین شده نیست حتما از این فیلد استفاده کنید و تعداد آن را بر حسب استفاده تغییر دهید ، مثلا برای فیلد نام nvarchar 20 مناسب است چرا نام کسی بیش از 20 کاراکتر نیست ! ولی برای فیلد عنوان وبلاگ (BlogTitle) کمی باید فضای بیشتری اختصاص بدهیم مثلا nvarchar 100 مناسب تر است . (این نوع داده پر کاربردترین نوع داده می باشد)
text : مانند فیلد Memo در اکسس می باشد ، یعنی حجم زیاد اطلاعات را در خود جای می دهد .
ntext : مشابه text با پشتیبانی از کاراکترهای یونیکد (unicode)
float : اعداد اعشاری را شامل می شود
و...

sorenaus
پنج شنبه 29 مهر 1389, 12:27 عصر
واقعا ممنون خیلی مطالب مفیدی بود اما جواب سوال من توش نبود حالا واسه مثلا فیلد شرح گروه خبری من NVarChar چند بزارم

ad.davachi
پنج شنبه 29 مهر 1389, 12:45 عصر
شما بیشترین مقدار رو بذارید ضرر نمی کنید 256

fghdmhmmd
پنج شنبه 29 مهر 1389, 12:52 عصر
سلام.اگه نياز داشته باشين كه در شرح گروه خبري خود جستجو كنيد فكر ميكنم بايد نوع DataType خود را از نوع ntext بگيريد.چون در نوع داده اي Nvarchar امكان جستجو در داخل يك متن نيست.نوع داده اي Nvarchar بيشتر براي فيلدهايي مانند نام.نام خانوادگي و ... بكار ميروند.

mohsensaghafi
پنج شنبه 29 مهر 1389, 13:40 عصر
سلام.اگه نياز داشته باشين كه در شرح گروه خبري خود جستجو كنيد فكر ميكنم بايد نوع DataType خود را از نوع ntext بگيريد.چون در نوع داده اي Nvarchar امكان جستجو در داخل يك متن نيست.نوع داده اي Nvarchar بيشتر براي فيلدهايي مانند نام.نام خانوادگي و ... بكار ميروند.

سلام دوست عزیز.
nVarChar هم قابل جستجو هست. مشکلی ندارد.
موفق باشید

fghdmhmmd
پنج شنبه 29 مهر 1389, 16:19 عصر
سلام.مرسي آقاي ثقفي.درسته.من در اين مورد اشتباه كرده بودم.