بنام خدا
با سلام
يكي از مشكلات بزرگي كه در برنامه هاي كاربردي مشاهده مي شود باگها و يا غير قابل اطمينان و يا متناقض بودن نتايج عمليات و يا گزارشات سيستم مي باشد كه در بسياري موارد نتيجه طراحي غير اصولي بانك اطلاعاتي برنامه كاربردي بوده و هزينه هاي زماني و ريالي زيادي جهت پشتيباني اينگونه نرم افزارها مورد نياز است در اين سري مقالات سعي يك مثال عملي در خصوص طراحي بانك آورده شده است تا در راستاي مقالات قبلي به فهم بهتر اصول طراحي بانك اطلاعات كمك نمايد.
تذكر : ابتدا قسمت اول و دوم اين مقاله را مطالعه نماييد.
حال نگاهي به نيازمنديها اوليه مي كنيم تا ببينيم طراحي صورت گرفته جوابگوي آنها خواهد بود بطور مثال نيازمندي شماره 1 :
ميزان فروش به تفكيك نوع عصاره ،حجم، نوع ظرف (يكبار مصرف يا گردشي) : اين نيازمندي حالات مختلفي را مي تواند داشته باشد كه به چند نمونه اشاره مي كنيم :
ميزان فروش به تفكيك نوع عصاره : با ايجاد يك پرس و جو (Query) از دو جدول محصول (Producttbl) و فروش (Saletbl) بصورت ذيل مي توان نتيجه مورد نظر را گرفت :
Select Taste,Sum(Num) Num
From Producttbl Inner Join Saletbl On Producttbl.ProductCode=Saletbl.ProductCode
Where Saletbl.Date Between '01/01/87' And '30/12/87'
Group By Taste
|
Num |
Taste |
|
5326 |
پرتغالي |
|
4050 |
كولا |
|
1689 |
ليمويي |
ميزان فروش به تفكيك نوع عصاره و حجم : با ايجاد يك پرس و جو (Query) از 3 جدول محصول (Producttbl) ، ظرف (Containertbl) و فروش (Saletbl) بصورت ذيل مي توان نتيجه مورد نظر را گرفت :
Select Taste,Volume,Sum(Num) Num
From Containertbl Inner Join Producttbl On Containertbl.ContainerCode=Producttbl.ContainerCode Inner Join Saletbl On Producttbl.ProductCode=Saletbl.ProductCode
Where Saletbl.Type=1 And Saletbl.Date Between '01/01/87' And '30/12/87'
Group By Taste,Volume
|
Num |
Volume |
Taste |
|
1306 |
300 |
پرتغالي |
|
4020 |
1500 |
پرتغالي |
|
2010 |
300 |
كولا |
|
1500 |
500 |
كولا |
|
530 |
1500 |
كولا |
|
705 |
300 |
ليمويي |
|
320 |
500 |
ليمويي |
|
664 |
1500 |
ليمويي |
نيازمندي شماره 6 : هر تركيب از 5 حالت فوق
مثال : ميزان فروشي كه يك فروشنده خاص صورت داده است به تفكيك عامل و نوع محصول
گزارش فوق با ايجاد يك پرس و جو (Query) از 3 جدول محصول (Producttbl) ، عامل (Storetbl) و فروش (Saletbl) بدست مي آيد.
Select StoreTitle,ProductName,Sum(Num) Num
From Storetbl Inner Join Saletbl On
Storetbl.StoreCode=Saletbl.StoreCode Inner Join Producttbl On Producttbl.ProductCode=Saletbl.ProductCode
Where Saletbl.Type=1 And Saletbl.Saletbl.SalerCode=10 And Saletbl.Date Between '01/01/87' And '30/01/87'
Group By StoreName,ProductName
|
Num |
ProductName |
ٍStoreTitle |
|
1200 |
نوشابه 300 سي سي كولا |
فروشگاه شهروند مركزي |
|
800 |
نوشابه 500 سي سي كولا |
فروشگاه شهروند مركزي |
|
750 |
نوشابه 500 سي سي ليمويي |
فروشگاه شهروند مركزي |
|
300 |
نوشابه 500 سي سي كولا |
سوپر ستاره |
|
120 |
نوشابه 500 سي سي پرتغالي |
سوپر ستاره |
|
150 |
نوشابه 1500 سي سي كولا |
پيتزا شقايق |
|
150 |
نوشابه 1500 سي سي پرتغالي |
پيتزا شقايق |
|
150 |
نوشابه 1500 سي سي ليمويي |
پيتزا شقايق |
حال اگر بطور مثال ريز فروش صورت گرفته با شرايط مثال فوق را بخواهيم پرس و جوي ذيل را خواهيم داشت :
Select StoreTitle,ProductName, Date , Num
From Storetbl Inner Join Saletbl On
Storetbl.StoreCode=Saletbl.StoreCode Inner Join Producttbl On Producttbl.ProductCode=Saletbl.ProductCode
Where SaleType=1 And Saletbl.Saletbl.SalerCode=10 And Saletbl.Date Between '01/01/87' And '30/01/87'
قسمتي از جواب مطابق با جواب پرس و جوي قبلي (ريز فروش به فروشگاه شهروند مركزي) :
|
Num |
Date |
ProductName |
ٍStoreTitle |
|
400 |
87/01/09 |
نوشابه 300 سي سي كولا |
فروشگاه شهروند مركزي |
|
350 |
87/01/09 |
نوشابه 500 سي سي كولا |
فروشگاه شهروند مركزي |
|
800 |
87/01/19 |
نوشابه 300 سي سي كولا |
فروشگاه شهروند مركزي |
|
450 |
87/01/25 |
نوشابه 500 سي سي كولا |
فروشگاه شهروند مركزي |
|
750 |
87/01/25 |
نوشابه 500 سي سي ليمويي |
فروشگاه شهروند مركزي |
با بررسي ساير نيازمنديها به اين نتيجه مي توان رسيد كه طراحي صورت گرفته در برگيرنده نيازمنديها مي باشد بهتر است سعي نماييد روش استخراج ساير نيازمنديها از جداول را به عنوان تمرين انجام دهيد.
خوب دوستان اينم از اين قسمت – در قسمت هاي بعد ادامه مثال مربوطه را با هم مرور مي كنيم.
اميدوارم از اين مطالب استفاده كنيد و براتون مفيد باشه لطفا نظرات اصلاحي و تكميلي خودتون رو در قسمت نظرات بگيد
و من ا... التوفيق – مدير سايت
درباره من : من مهدی امینی متولد 1352 در حدود 15 سال در زمینه مختلف مرتبط با پروژه های نرم افزاری فعالیت دارم عمده فعالیتهای جاری اینجانب در خصوص مدیریت پروژه های نرم افزاری . طراحی سیستمی و فرایندی فعالیتها و مدیریت تیمهای طراحی و برنامه نویسی می باشد.