PDA

View Full Version : مهندسی فایل-قسمت دوم



حسن صفوی
چهارشنبه 05 اسفند 1383, 17:04 عصر
به قسمت دوم این مقاله رسیدیم .همان طوری که قبلا اشاره کردیم ما دراین مقاله به بررسی سیستم و ساختار فایل با نگرش مهندسی و رویکرد تحلیلی می پردازیم معمولا در عنوان ساختار فایل فقط به بررسی و ویژگی های ساختار های موجود پرداخته می شود اما در مهندسی فایل به تحلیل و طراحی ساختار جدید بوسیله تکنیک هایی که بررسی خواهیم کرد پرداخته می شود .
مفاهیم مقدماتی را که در قسمت اول بررسی کردیم , در واقع سعی کردم که از تعاریف استانداردی که در منابع معتبر مختلف ذکر شدند , استفاده کنم چون هر نویسنده هر چیز را می تواند از اندوخته ها و تجربیات خود بگوید ولی نمی تواند از چیزی (مثل تعریف فیلد) که قبلا تعریف شده و به ثبت رسیده بیاید از خود تعریف جدیدی ارئه دهد.مهندسی فایل ها یکی از شاخه های مهندسی داده ها است وبعضی از دیگر شاخه ها را ذکر میکنم :
1- پایگاه شناخت
2- پایگاه داده
3- ساختار داده
4- تاریخ داده داری و داده پردازی
5- انبارش داده ها
6- مهندسی فایل
و....
ما در این مقاله به بررسی مهندسی فایل می پردازیم .
در قسمت قبل به تعریف رکورد و فیلد پرداختیم. الآن به ساختار فیلد یا روش های ساختن فیلد در رکورد می پردازیم.
اگر با پایگاه داده ها آشنا باشید می دانید که می توانیم طول هر رکورد را از قبل (قبل از مقدار دهی ) تعیین کرد . در اینجا هم در واقع یکی از راه ها همین است.مثلا برای فیلد "نام" 12 بایت و برای فیلد" نام خا نوادگی " 15 بایت را مشخص کنیم . خب این روش هم ایراداتی دارد مثلا اگر فیلد پر نشود مثلا نام خا نوادگی "رضایی " 5 بایت را مصرف می کند اما چون طول فیلد از قبل مشخص شده قابل تغییر نیست و به ناچار فضای باقیمانده فیلد خالی می ماند که باعث حجیم شدن فایل می شودد.و همچنین ممکن است مقداری بزرگتر از طول فیلد (برای فیلد هایی که تنوع طولی دارند مثل نام وآدرس) وارد فیلد شود که نا مناسب است ولی برای فیلد هایی که ثابتند و تنوع طولی ندارند (مانند معدل ) بسیار مناسب است.

روش دیگر نحوه قرار گیری فیلد در رکورد آن است که بیاییم فقط مقدار های صفت خاصه را (مقدار فیلد ها نه اسم فیلد) را بطور سری در رکورد بنویسیم که البته برای مجزا کردن آنها میتوانیم از یک جدا کننده استفاده کنیم مثل :
Ali,Ahmadi,man,Tehran
و همچنین راه دیگری برای مجزا کردن هم وجود دارد مثلا ذکر طول فیلد در اول مقدار صفت خاصه مثل :
03man05Tehra 03Ali05Ahmadi
در روش های بالا فیلد ها جابجایی پذیر نیستند برای حل این مشکل می توانیم علاوه بر مقدار صفت خاصه از اسم آن (اسم فیلد ) قبل از آن استفاده کنیم که قابلیت جابجایی هم وجود داشته باشد مثل : Name=ali,Family=ahmadi,city=Tehran
توجه داشته باشید که میزان حافظه در اختیار گرفته شده برای هر فیلد برابر است با اسم صفت و مقدار صفت و 2 بایت (جهت علامت مساوی و علامت جدا کننده ) مثلا اولین فیلد بالا
(فیلد نام) 4 بایت بابت اسم فیلدیا صفت خاصه (name) 3 بایت هم برای مقدار فیلد (ali ) و 2 بایت هم برای علامت های مساوی و ویرگول هر فیلد فضا اشغال میکند که جمعا این فیلد 9 بایت فضا اشغال می کند که نسبت به روش های قبل خیلی بیشتر است و همین یکی از معا یب استفاده از این روش می باشد.همچنین مزیت دیگر این روش این است که مقادیربعضی از فیلد ها در صورت عدم وجود, ذخیره نمی شود.

ساختارهای رکورد :
بعضی از روش های سازماندهی رکورد ها به شرح زیر است.
اول باید مشخص شود که رکوردهای یک فایل دارای طول ثابت است یا نه اگر ثابت باشد مشکلی پیش نمی آید یعنی با یک بار مشخص شدن طول رکورد برای فایل ,قادر خواهد بود که تا آخر رکورد ها را تفکیک کند ولی اگر طول رکورد متغیر باشد روش های مختلفی برای سازماندهی وجود دارد ولی اول باید بدانید که دلایل متغیر شدن طول رکورد چه مواردی می تواند باشد .
طول نمونه های مختلف یک نوع رکورد به سه دلیل می تواند متغیر باشد :
1- طول فیلد های درون آن رکورد متغیر باشد مثل فیلد نام و نام خوانوادگی و... که باعث متغیر شدن طول رکورد هم می شود(اگر طول فیلد از قبل مشخص و ثابت باشد این مشکل پیش نمی آید ).
2- تعداد صفات خاصه مورد نیاز برای یک موجودیت متفاوت باشد یعنی رکوردی دارای 3 فیلد و رکورد دیگر دارای 5 فیلد باشدوالی آخر.
مثلا در یک اداره تعداد فیلد های (صفات خاصه ) رئیس از یک کار مند آن جا ممکن هست بیشتر یا کمتر باشد.
3- هنگامی که به ازاء یک صفت خاصه 2 یا چند مقدار صفت داشته باشیم. همانطور که قبلا هم ذکر کردم در اینجا از فیلد مرکب استفاده می شود. معمولا در این حالت می گوییم صفت خاصه مرکب تکرار شوند داریم .

خب دلایل متغیر شدن طول رکورد هم بررسی شد حالا چطور سازماندهی کنیم .روش های مختلفی وجود دارد .
الف - اگر تعداد فیلد ها در رکورد ها با هم برابر باشد می توانیم برای فایل تعریف کنیم مثلا اگر در تمام رکورد ها هر کدام 4 فیلد وجود داشته باشد و برای فایل هم تعریف شود در این صورت فایل به ازاء هر 4 فیلد یک رکورد تلقی می کند که هیچ مشکلی پیش نمی آید.(هر چند که طول فیلد ها و رکورد ها هم متفاوت باشد )
ب- ذخیره طول هر رکورد در اول هر رکورد :می توانیم طول هر رکورد را در فیلدی در ابتدای همان رکورد قرار دهیم و زمانی که اشاره گر فایل به این فیلد می رسد اطلا عی از طول رکورد بدست می آورد. البته توجه داشته باشید که این فیلد جزء بخش غیر داده ای این رکورد می باشد.
ج- استفاده از اندیس : در این روش از یک فایل دیگری استفاده می شود جهت نگهداری اندیس ها . اندیس ها شامل آدرس های افست رکورد ها هستند برای روشن تر شدن موضوع به مثال زیر توجه کنید:
,... Ali,Ahmadi,Tehran,Javad,Rezai,Shiraz
38,... 1,19,
همانطور که می بینید آدرس اولین حرف رکورد اول و آدرس اولین حرف رکورد دوم و بعدی هرکدام به شکل متوالی بشکل اندیس در فایل دیگری ذخیره می شود به فایل حاوی رکورد ها را فایل داده و به فایل حاوی اندیس را فایل اندیس گویند.
معمولا اندیس ها هم بوسیله کاراکتر جداکننده (ویرگول) از هم مجزا می شوند.
د- ذخیره یک علامت ویژه در انتهای هر رکورد کبه محضی که اشاره گر فایل به این علامت می رسند می داند که رکورد تمام شده و رکورد بعدی شروع شده است .
بطور کلی دو ساختار کلی جهت پیاده سازی رکورد ها وجود دارد :
1- رکورد با قالب و ثابت مکانی که تعداد ,مکان و طول رکورد ها ثابت است .
2- رکورد با قالب غیر ثابت و غیر مکانی که در آن فیلد ها بشکل کامل (همراه با اسم و مقدار صفت خاصه ) ذخیره می شوند.

خب ساختار های رکورد و فیلد ها هم بررسی شدند.

کلید: به صفت خاصه یا مجموعه ای از صفات خاصه که تا آخر فایل مقدار یکتایی (غیر تکراری و غیر خالی ) داشته باشد را کلید گویند.در واقع کلید شناسه یک موجودیت یا رکورد است که با دیگر نمونه ها متمیز می شود.(کلید عامل تمیز بین دو موجودیت است ).
مثلا در لیست دانشجویان ممکن است نام دو دانشجو برابر باشد ولی شماره دانشجویی آن فرق دارد که می تواند کلید باشد.

فایل چیست :
در تعریف کلی می توان گفت به مجموعه ای از چند رکورد تشکیل فایل می دهد.

فایل مجموعه ای نامدار است که معمولا دارای ساختار درونی است و بسته به نوع رکورد بکار رفته در فایل می توان فایل های تک نوعی و چند نوعی داشته باشیم.(نوع رکورد در فیلدی در بخش غیر داده ای همان رکورد ذخیره می شود )

توجه داشته باشید که فیل حتما مجموعه ای از چند رکورد نیست و می تواند دنباله ای بی ساختار از بایت ها باشد ولی در این مقاله منظور ما همان فایل دارای ساختار است. بنابر این می توان گفت که فایل یک ساختمان داده ی خارجی است چون در رسانه ذخیره سازی خارجی ,ذخیره می شود.

نکته : فایل ها در واقع مجموعه ای از رکورد ها است که این رکورد ها معمولا بلاک بندی شده .یعنی بلاک شامل یک یا چند رکورد است که این بلاک ها در جاهای مختلف دیسک ذخیره می شوند ولی بوسیله نشانه رو ها در ارتبا طند و در واقع کاربر فکر می کند که تمام اطلا عات در یک فایل بطور متوالی در دیسک ذخیره شده که چنین نیست.(هر چند می تواند چنین هم باشد )

خب در این قسمت ساختار های رکورد و فیلد و کلید رکورد همچنین تعریف فایل بررسی شدند در قسمت های آینده به ساختار فایل ها و سیستم فایل می پردازیم.

حسن صفوی
جمعه 28 اسفند 1383, 13:14 عصر
فکر این رو کردم که اگر در آینده نزدیک تمام قسمت ها را در قالب PDF بنویسم بهتر باشد پس منتظر باشید.