بنام خدا

با سلام

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

 

تذكر : ابتدا قسمت اول و دوم اين مقاله را مطالعه نماييد.

 

حال نگاهي به نيازمنديها اوليه مي كنيم تا ببينيم طراحي صورت گرفته جوابگوي آنها خواهد بود بطور مثال نيازمندي شماره 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 سي سي ليمويي

فروشگاه شهروند مركزي

 

 

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

 

خوب دوستان اينم از اين قسمت – در قسمت هاي بعد ادامه مثال مربوطه را با هم مرور مي كنيم.

اميدوارم از اين مطالب استفاده كنيد و براتون مفيد باشه لطفا نظرات اصلاحي و تكميلي خودتون رو در قسمت نظرات بگيد

و من ا... التوفيق – مدير سايت