نرمالسازي بانك هاي اطلاعاتي

با سلام خدمت همه عزيزان و دوستداران برنامه نويسي:

اولا مي خواستم از همه مديران انجمن ها و بچه هاي مجيد آنلاين بخاطر زحمتهايي كه براي به اشتراك گذاشتن افكار و ايده هاي خود مي كنند تشكر كنم.

من تو گشتي كه تو انجمن ها مي زدم متوجه شدم كه اصلا توجه زيادي راجه به بحث نرمالسازي ديتابيس ها نشده واسه همون اين تاپيك رو ايجاد كردم كه كساني كه در اين زمينه خبره هستند و كساني كه تا الان اين بحث را نشنيده اند بيان اينجا و از نظرات هم استفاده كنند.

بحث نرمالسازي يكي از بزرگترين و شايد سخت ترين بحث هاي برنامه نويسي است .متاسفانه در ايران اصلا توجهي به اين موضوع نميشه ولي در دنيا هيچ برنامه اي بدون نرمالسازي بيرون داده نميشه.
بعضي از برنامه نويسان و دوستان عزيزمون وقتي مي خوان ديتا بيسي رو طراحي كنند فقط به ايجاد جداول و كليد هاي اصلي و روابط ا كتفا كرده و به نظر خودشون ديتا بيس طراحي مي كنند.

بحث نرمالسازي به رفع آنومالي ها به ما كمك مي كنه. شايد بعضي ها بپرسن آنومالي چيه؟
آنومالي يعني و قتي ما جداول رو با روابط پياده سازي مي كنيم با كمي تفكر به اين نتيجه مي رسيم كه بعضي از اطلاعاتمونو نمي تونيم درج كنيم.يا منجر به حذف نا خواسته اطلاعات ميشيم .
مثال دقيق تر مثلا sql injection هاي برنامه پر طرفدار phpnuke . درسته كه اين سيستم بسيار سيستم قوي از نظر برنامه نويسي است ولي متاسفانه بيشتر خرابكاريها و هك ها بخاطر عدم رعايت نرمالسازي است .
يا مثلا سايت سنجش در زمان كنكور كه شايد سنگين ترين سايت باشه چه از نظر ترافيك و چه از نظر ركورد و هميشه هم دسترسي به اين سايت براي جستجوي شماره داوطلبي آسان نيست .بعضي ها فكر مي كنن ربطي به سرعت اينترنت داره يا سايت بيش از حد شلوغه و جستجوي يك ركورد شايد بيشتر از 5 دقيقه طول بكشه. در صورتيكه سايت گوگل با نزديك به 9 ميليارد صفحه وب و حالا نمي دونم چقدر ركورد در كمتر از يك ثانيه نتيجه رو به شما نشون ميده .

بوسيله نرمالسازي در چند سطح ما ميتونيم به يك ديتا بيس بي عيب و نقص برسيم.

حالا نمي دونم نظر شما عزيزان راجع به اين تاپيك چيه ولي اگه موافق باشين مي تونيم با هم راجع به اين قضيه بحث كنيم .
به اميد ايراني آباد . پيروز و سريلند باشيد.

كسري كاظم پور

Open Source:The Million's Of Open Mind Cant't Be Wrong.
 

aminir

Member
آره منم موافقم نرمال سازي يكي از مهمترين مباحث در طراحي يك ديتابيسه اينه براي شروع بحث بگم كه نرمال سازي 5 سطح داره كه بيشتر تا سطح 3.5 جلو نمي رن يا به عبارتي تا سطح بويس كات و حالا نمي دونم اينجا چطوري مي خواين مطلب بنويسيد مي خوايد روش نرمال سازي رو به بچه ها نشان بدهيد يا نه مي خوايد فقط راجع به مزاياي اون بحث كنيد؟؟
 
من سعي ميكنم با اراپه مثالهاي ساده شروع كنم و طريقه نرمالسازي تا سطح bcnf جلو بريم.
اينم بگم كه نرمالسازي داراي سطح هاي :
1nf-2nf-3nf-bcnf-4nf-5nf هستش معمولا اغلب ديتابيس ها تا سطح bcnf نرمال مي شوند ولي بعضي ها را تا سطوح پيشرفته 4nf,5nf بايد جلو رفت.
 
مرسي عزيز.
فقط من سعي مي كنم تا امروز يه مثالي بزنم كه بتونيم با هم به سطح نرمالش بروسونيم البته من معتقدم بهتره اول توضيحاتي راجع به سطح هاي نرمالسازي بديم.
 

aryana

Member
آره این کار بهتره
چون من تا حالا هر چی شنیده بودم 3 سطح 1nf-2nf-3nf بوده
ضمنا اگه مطالب به صورت مقاله باشه بهتره
فکر کنم این طوری تو تاپیک از بحث اصلی دور بشیم تاپیک باشه برای طرح سوالات

موفق باشین
 

hosting

Member
نرمالسازي رو بهتره از مهندسي uml شروع كرد
من از دو هفته ديگه در خدمتم
در پروژه هاي ssadm هم كاربرد فراواني داره
 
عزيز درسته كه با ssadm كاربرد داه ولي ما فقط با جداول ER سرو كار داريم و فقط بچه ها اگه كمي از رابطه ها سر در بيارن من فكر كنم مشكل آنچناني نخواهيم داشت .
البته من ميخوام كلا وابستگي هاي تابعي رو هم اينجا با هم بررسي كنيم.
 

aminir

Member
اصلا مباحث نرمال سازي ارتباط تنگانگي با وابستگي تابعي داره Funtional dependenci
 
آقا من اينجا ميخوام يك مثالي رو طرح كنم بعد ببينيم آنومالي هاي موجود تو اين محيط عملياتي چيه؟
مثال:
فرض كنيد در يك محيط عملياتي كه در ان تعدادي توليد كننده و تعدادي قطه وجود دارد.
هدف ما ذخيره سازي اطلاعاتي نظير :
شماره - نام - محل سكونت توليد كننده و Status يا وضعيت مربوط به محل سكونت توليد كننده.
همچنين راجه به هر قطعه لازم است اطلاعاتي نظير كد- نام-وزن و رنگ و همچنين كه هر توليد كننده اي از هر قطعه چه تعدادي توليد كرده است را مي خواهيم ذخيره كنيم
آقا بسم الله ! :!:
 
بچه واقعا معذرت ميخوام كه مثال رو زدم ولي فعلا بحث راجع به آنومالي رو آغاز نكردم

من حتما تا پنجشنبه عصر مراحل دقيق را سعي مي كنم با رسم شكل نشون بدم.

عزيزاني كه نظري راجع به اين مثال دارند مطرح كنند.
موفق و سربلند باشيد!
 

ady_constantine

Active Member
kasra_2003 گفت:
آقا من اينجا ميخوام يك مثالي رو طرح كنم بعد ببينيم آنومالي هاي موجود تو اين محيط عملياتي چيه؟
مثال:
فرض كنيد در يك محيط عملياتي كه در ان تعدادي توليد كننده و تعدادي قطه وجود دارد.
هدف ما ذخيره سازي اطلاعاتي نظير :
شماره - نام - محل سكونت توليد كننده و Status يا وضعيت مربوط به محل سكونت توليد كننده.
همچنين راجه به هر قطعه لازم است اطلاعاتي نظير كد- نام-وزن و رنگ و همچنين كه هر توليد كننده اي از هر قطعه چه تعدادي توليد كرده است را مي خواهيم ذخيره كنيم
آقا بسم الله ! :!:
سلام !

منم بازي :D

در مورد مثالی که زدید اگر تمام اطلاعات مزبور را در یک جدول بگذاریم یعنی در سطح 1nf ( نرمال سازی سطح 1 ) یکی از آنامولی ها بوجود آمده در حذف تولید کننده می باشد . باید بگردیم تا در محلهای مختلف آنرا پاک کنیم ( Deletion anamulies )

مسلما Update anamolies و Addition anamolied هم داریم ...
 
سلام آقا ما مخلص همه عزيزان هستيم
اتفاقا خوشحال ميشم كه بشتر راجع به اين موضوع بحث كنيم.

به نظر من اگه همه اين تاپل ها رو در يك جدول بگذاريم دچار آنومالي هاي زيادي خواهيم شد .
من پيشنهاد مي كنم اين طراحي رو با دو جدول شروع كنيم :
جدول First حاوي اطلاعات :
s#
sname
city
status
p#
Qty
كه به ترتيب S# شماره توليد كنندگان- نام توليد كننده- شهر محل سكونت - وضعيت - شماره قطعه - تعداد توليد شده از هر قطعه.
كه كليد اصلي (Primary Key) رو من s#وp# با هم در نظر ميگيرم . حالا اگه واسه يكي سوال پيش اومد كه چرا من كليد اصلي رو دوتا با هم گرفتم اينجا مطرح كنه تا بگم.
جدولSecond هم حاوي اطلاعات:
p#
pname
color
weight
و كليد اصلي رو هم p# در نظر گرفتم.
در نظر مي گيريم.
الان آقا آستين ها رو بالا بزنين و اول مشخص كنين آنومالي ها ي اين مثال رو.
 
همچنين تا يادم نرفته خدمت دوستان عزيزم كه نمي دونن آنومالي چيه عرض كنم:
آنومالي شامل موارد زير هستش:
1-وقتي بخواهيم كاري رو انجام بديم ولي نتوانيم(مثلا بخواهيم ركوردي رو درج كنيم اما ساختار مربوطه چنين اجازه اي به ما نده.
2-حذف يك قلم(اقلام) اطلاعاتي مشخص كه منجر به حذف نا خواسته اطلاعات بشه.
3- ودر بروزرساني دچار بروزرساني منتشر شونده شويم.

من منتظر نظرهاي شما دوستان هستم وكه با هم سر انومالي هاي اين مثال بحث كنيم.
من فكر مي كنم با اين مثال شايد مشكل خيلي از دوستان در طراحي جدوال ديتابيس حل بشه.
پيروز و موفق باشيد.
 

aminir

Member
سلام
به نظر من برای جلوگیری از ورود داده های تکراری جدول First خودش باید به 2 جدول زیر شکسته شه
کد:
First1(s#,p#,Qty) وFirst2(s#,sname,city,status)
:lol:
 
مرسي امين جان .
ولي ما فعلا مي خواهيم قدم به قدم اول آنومالي هاي موجود تو اين رابطه رو مشخص كنيم بعد به سطح نرمال برسونيم.

من الان ميخوام مشخص شه كه آنومالي هاي اين رابطه كي بوجود مي ياد.
 

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

بالا