# پایگاه‌های داده > SQL Server > T-SQL > تحلیل و طراحی بانک اطلاعات >  تحلیل سیستم آموزشی دانشگاه!

## Miladsob

سلام دوستان!
من یه جستحو کردم توی انجمن جیزی که می‌خواستم رو پیدا نکردم، اگه شما پیدا کردی لینکش رو بزارید ممنون میشم!

خوب من باید یه پایگاه داده برای سیستم آموزشی دانشگاه درست کنم، ولی اصلا نمی دونم جه جیزهایی نیاز دارم!

یعنی تو مهندسی سیستم مشکل دارم!
البته یه DB کوجولو درست کردم :

یک Table برای دانشحوها:

Student_ID  : smallint
Student_FirstName  : navarchar(50)
Student_LastName : nvarchar(50)
یک Table هم برای اساتید که همین فیلدها رو داره به همرا فیلد Major: nachar(10) 
یک Table دیگه هم برای دروس درست کردم:


پیگه چه چیزهایی نیاز دارم؟
لیست کل دروس با لیست دروس اخذ شده توسط دانشجو فرق داره؟ یعنی یه Table دیگه درست کنم براش؟

----------


## mehran_sh_t

سلام
خیلی خوبه که شما خودتون اول دست به کار شدید، و نتیجه رو برای نظر دادن بقیه گذاشتید، کم پیش میاد در انجمن همچین چیزی (حتی خود من)

بریم سر سوال!

شما اول باید ببینی چه چیز هایی می خوای!

سیستم می تونه حالت های مختلف داشته باشه. آیا هر درس فقط توسط یک استاد ارائه میشه؟ یا ممکنه دو استاد یک درس رو ارائه بدن؟ شماره ترم در جداول شما موجود نیست! پیش نیاز و هم نیاز هم می خواید داشته باشید؟ درس ها باید/نباید به تفکیک دانشکده باشند؟ رشته دانشجو از کجا معلوم میشه؟ آیا در صورت وجود دانشکده، نباید معلوم باشه هر استاد از کدوم دانشکده است؟

بسته به نیاز هاتون این سیستم می تونه ساده و یا خیلی پیچیده تر باشه، این چیزایی که من گفتم به نظرم در حد ابتدایی یک سیستم آموزش باید باشن.

یه چیزی، lessonType چه نقشی داره؟ منظورتون عملی و تئوریه؟ lessonCost چیه؟ منظور تعداد واحد هس؟





> لیست کل دروس با لیست دروس اخذ شده توسط دانشجو فرق داره؟ یعنی یه Table دیگه درست کنم براش؟


این جداولی که شما دارید، جداول کاملی نیست، فکر نمی کنم منظورتون از سوال فقط با وجود همین جداول بوده باشه.

اول به سوال هایی که مطرح کردم فکر کنید، بعد باز اگر کمکی از دستم بر بیاد انجام میدم


موفق باشید

----------


## Miladsob

> خیلی خوبه که شما خودتون اول دست به کار شدید، و نتیجه رو برای نظر دادن بقیه گذاشتید


خواهش میکنم!




> آیا هر درس فقط توسط یک استاد ارائه میشه؟ یا ممکنه دو استاد یک درس رو ارائه بدن؟


هر درسی توسط دو استاد ...(یا بیشتر)




> پیش نیاز و هم نیاز هم می خواید داشته باشید؟


نه فعلا پیش بینی نکردم!!




> درس ها باید/نباید به تفکیک دانشکده باشند؟


نه پروژه در اون حد نیست! :)




> رشته دانشجو از کجا معلوم میشه؟


نکته خوبی گفتی ، این فیلد رو هم اضافه میکنم!




> lessonType چه نقشی داره


آره توع درسه که به *نظری* و *عملی*  تقسیم میشه و بخاطر همون Boolean گرفتم!




> lessonCost چیه؟


هزینه درس! ما دانشگاه آزدای‌ها به این جور چیز‌ها هم فکر میکنیم! :لبخند گشاده!: 


خب درست میگی، این پروژه خیلی بیشتر از اینها Table میخواد! ولی به ذهنم نمیرسه!

----------


## mehran_sh_t

خوب شما باید بک فیلد هم برای تعداد واحد در نظر بگیری (برای هر درس)، برای معدل و تعداد واحد دانشجو در هر ترم

شما با اون چیز هایی که من گفتم و به نظر به کارت اومد و چیزهای دیگه ای که خودت به ذهنت می رسه، یه بار دیگه طراحی کن.

زیاد سخت نیست، ببین به عنوان یه دانشجو چه چیزهایی در رابطه به آموزش داری، و استاد برات چه کارهایی انجام میده، چه امکاناتی داری.

----------


## Galawij

سلام،
در ادامه راهنمایی های دوستان، 
جداولی برای مشخصات دانشجویان(شامل نام، نام خانوادگی، شماره دانشجویی، شماره شناسنامه، آدرس و شماره های تماس و ...)، مشخصات اساتید(زمینه های تخصصی، مدارک دانشگاهی، سابقه های کاری به اضافه فیلدهای بالاو ...)، مشخصات دروس(کد درس، نام درس، تعداد واحد، پیش نیاز، کد ترم، شهریه درس مربوطه، کد رشته تحصیلی)، انواع رشته های ارائه شده در دانشگاه، انواع مقاطع تحصیلی دانشگاهی، انواع دانشکده ها،انواع ترم های تحصیلی، مشخصات پرسنل دانشگاهی به همراه سمت کاری آنها در دانشگاه و .... .
و از همه مهمتر جداولی برای سیستم ثبت نام و انتخاب واحد به صورت جداگانه که از اطلاعات جداول قبلی به عنوان کلید خارجی ارتباط می گیرند.

----------


## mehran_sh_t

> سابقه های کاری


اگر قراره چنین ویژگی برای هر استاد باشه، باید در یک جدول دیگه باشه، چون رابطه اش 0 به بی نهایته (با هر استاد)

همچنین ممکنه یک درس بیش از یک پیش نیاز داشته باشه، پس باید تو یک جدول دیگه باشه، و اینکه شهریه نباید در جدول درس باشه، چون در هر ترم شهریه متفاوت هستش، شهریه باید در جدول درسهای ترم بیاد

----------


## Galawij

> اگر قراره چنین ویژگی برای هر استاد باشه، باید در یک جدول دیگه باشه، چون رابطه اش 0 به بی نهایته (با هر استاد)


درسته، بعضی از آن مشخصات جداول دیگری نیاز داره، مثل شماره های تماس، رشته های تحصیلی، سابقه های کاری و .... .



> همچنین ممکنه یک درس بیش از یک پیش نیاز داشته باشه، پس باید تو یک جدول دیگه باشه،


 بله درسته، من فقط یک اطلاعات کلی دادم.



> و اینکه شهریه نباید در جدول درس باشه، چون در هر ترم شهریه متفاوت هستش، شهریه باید در جدول درسهای ترم بیاد


می تونه شهریه را به همراه کد ترم در جدول درس ها داشته باشه. در کل بسته به تحلیل سیستم و نیاز کاربر این جداول و ارتباط بین آنها می تواند متغییر باشد.

----------


## Miladsob

با توجه به نکته‌‌هایی که یاد آوری کردید  چنین چیزی رو ایجاد کردم!

----------


## baktash.n81@gmail.com

سلام

البته روند طراحی بانک اطلاعاتی واقع با روندی که شما طی می کنید متفاوته ... اول باید ENTITY ها شناسایی بشه بعد صفات مربوط به هر کدوم بعد ارتباطشون ( که خیلی مهمه و تو تغریبا اکثر سیستم هایی که من می بینم در این مورد ضعف وجود داره)

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

به نظر من جدول درس و استاد یک ارتباط یک به چند داره یعنی یک درس حتما توسط یک استاد ارائه می شود اگر هم درسی مثل ریاضی مهندسی با چند استاد ارائه می شود کددرس, محل برگزاری کلاس و ...حتما فرق می کنه ... به نظر من بهتره که فیلد ID استاد رو توی جدول درس باشه .
برای رابطه های چند به چند مثل دانشجو و درس شما باید از یک جدول واسط استفاده کنید که ID درس و ID دانشجو و شماره ترم باشه ... ( پس یه جدول هم برای ترم ها می خواهید) حتی اگه دوست داشتید می تونید نمره کسب شده و سایر اطلاعات رو هم در این جدول قرار بدید ...

توی این تصویری که اینجا گزاشتی که اصلا کلید های خارجی وجود نداره ... پس ارتباط رو چه جوری برقرار کردید.

----------


## mehran_sh_t

باز هم طراحیتون نیاز به توسعه داره.

نمره ها کجان؟ از کجا معلوم میشه دانشجو در هر ترم چه درس هایی رو گرفته؟ پیش نیاز و هم نیاز مجددا در این تحلیل شما مشاهده نمیشه!

من ارتباط بین جدول درس ها و استاد ها رو نفهمیدم! با کدوم فیلد این ارتباط شکل می گیره، اگر می خواید تحلیل اولیه کنید، نیازی به توصیف ویژگی ها نیست، اگر می خواید نرمال سازی کنید، باید همه چیز رو بیارید، این جدول سوم که بر قرار کننده ارتباط بین استاد و درس هست ارائه نمیشه.

یک بازنگری کلی روی جداولتون داشته باشید، ارتباط بین جدول های درس، دانشجو و استاد خیلی جای کار داره. (جداول بیشتری مورد نیاز هست)
مثلا یک جدول می تونید داشته باشید با فیلد های آیدی ترم و نام ترم (نام ترم مثلا 9001)
یک جدول دیگه، *استاد درس*(در ادامه به نام جدول کلاس میشناسیم!)*:* آیدی، آیدی ترم، آیدی استاد، آیدی درس، قیمت درس، تاریخ و روز درس، تاریخ و روز امتحان (اگر قیمت یک درس برای استاد ها متفاوت باشه در این جدول میاد!)
جدول درس فقط شامل آیدی درس، نام درس، تعداد واحد درس، تئوری یا عملی بودن درس، دانشکده درس
جدول دانشجو، کلاس : آیدی دانشجو، آیدی کلاس، نمره

برای پیش نیاز و هم نیاز، دو راه دارید، یا یک جدول جدا برای هر کدوم تعریف کنید، یا فرض کنید مثلا تعداد پیش نیاز ها و هم نیاز های یک درس، فراتر از 2 یا 3 تا نمی شه، که در اینصورت می تونید در خود جدول درس این اطلاعات رو وارد کنید، یعنی علاوه بر فیلد های گفته شده، آیدی پیش نیاز 1، آیدی پیش نیاز 2، آیدی هم نیاز 1، آیدی هم نیاز 2

ولی فکر کنم اگر از جدول جداگانه استفاده کنید، در کار کردن باهاش راحت ترید

----------


## mmd2009

با سلام

میتونید به این لینک برید و یک تحلیل خوب در این مورد ببینید که به نظر من خیلی خوبه واسه شروع یک تحلیل خوب 


موفق باشید

----------


## Miladsob

با تشکر از دوستان بابت راهنمایی‌ها!
من تغییراتی رو در جدول ها دادم و دیاگرام به صورت زیر درآوردم:







 بی زحمت ببینید بازم ایراد داره؟
روابط درست هست؟
بازم نیاز به نرمال سازی دارم؟
مرسی!

----------


## volvo B12

با سلام خدمت دوستان فعال
توجه داشته باشید لینک پست شماره 11 حذف شده
در صورت امکان دوباره آپلود کنید تا سایرین هم بتونن بهرمند شوند
تشکر از مطالب خوبتان

----------


## Miladsob

لینک درسته! ولی به هر حال لینک مستقیم دانلود فایل اینه: 
http://dl.prozhe.com/server2/uploads...tekhabvahed-2-[www.prozhe.com].zip

----------


## omidh2007

Lesson_Class_Day توی T-Classes ، بستگی به تحلیل سیستم ، ممکنه یه صفت چند مقداری باشه . 
اگه یه کلاسی توی یه هفته ، به صورت دو تیکه تشکیل بشه (مثلا 1 ساعت شنبه ها و 1 ساعت یکشنبه ها ) ،
اونوقت دیگه یه مقدار نداره . و نرمال سطح اول نیست (1NF) .

----------

