View Full Version : ابهام درباره طراحی جداول برنامه
veniz2008
چهارشنبه 19 بهمن 1390, 12:51 عصر
سلام دوستان،من 3 تا جدول دارم؛دانشجو(کلید: شماره دانشجویی)، درس( کلید: کد درس،سال درس و ترم درس) و اخذ درس(کلید: شماره دانشجویی،کد درس،سال درس و ترم درس)،وقتی دانشجو درس رو میگیره علاوه بر مقادیر کلید که الزاما باید ثبت بشن من جزئیات درس رو هم ذخیره میکنم،یعنی همون فیلدهای مربوط به جدول درس رو داخل جدول اخذ هم درنظر گرفتم(البته نه همشون ولی بیشترشون رو در نظر گرفتم مثلا نام درس و تعداد واحد)،آیا این کار اشتباست؟،آیا این کار خلاف بحث Normal کردن هستش و نباید تا حد امکان فیلد تکراری بین دو جدول داشته باشم؟،آیا بهتره که در جدول اخذ فقط کلیدها رو داشته باشم؟ و برای پیدا کردن و نمایش یک درس اخذ شده توسط دانشجو، از این کلیدها استفاده کنم و نتیجه رو از جدول درس بیرون بکشم؟یک عکس از دیتابیسم میذارم تا کامل متوجه منظورم بشید:
82234
baktash.n81@gmail.com
چهارشنبه 19 بهمن 1390, 14:26 عصر
سلام
آره حتما باید فیلدهایی رو که از کلید اصلی می تونی بدست بیاری از جدول فرعی حذف کنی ... یعنی فقط کلید دانشجو و کلید درس ...
از نظر من برای جدول درس یک کلید در نظر بگیر و با اون کار کن ... مثلا یک فیلد Identity و فقط همونو ببر تو جدول اخذ ...
یه درس ممکنه هم تئوری و هم عملی باشه ؟؟؟
... بهتره برای درس و ترم و استاد و دانشجو هر کدوم یه جدول داشته باشیم ... بعد برای ارتباط اینها هم جدول داشته باشیم ...
veniz2008
چهارشنبه 19 بهمن 1390, 21:30 عصر
از نظر من برای جدول درس یک کلید در نظر بگیر و با اون کار کن ... مثلا یک فیلد Identity و فقط همونو ببر تو جدول اخذ ...
یه درس ممکنه هم تئوری و هم عملی باشه ؟؟؟
... بهتره برای درس و ترم و استاد و دانشجو هر کدوم یه جدول داشته باشیم ... بعد برای ارتباط اینها هم جدول داشته باشیم ...
دلیل اینکه کلید جدول درس رو ترکیبی گرفتم اینه که ممکنه برای ترم بعد دوباره بخوایم از همون مشخصه های ترم قبلی استفاده کنیم(همون چیزی که الان در سیستم آموزشی دانشگاه ها داریم)،بله دوست عزیز یه درس ممکنه هم تئوری باشه هم عملی،مثلا الان خیلی از درس های 3 واحدی بصورت 2 واحد تئوری و یک واحد عملی ارائه میشن(تو سیستم دانشگاه آزاد،دانشگاه دولتی رو نمیدونم)
veniz2008
پنج شنبه 20 بهمن 1390, 05:44 صبح
من درباره قرار دادن فقط کلیدها درون جدول اخذ(کلید جدول دانشجو و کلید جدول درس)خیلی فکر کردم ولی به یک مشکل برخوردم،فرض کنید دانشجوی با شماره دانشجویی a میاد و 3 تا درس با کدهای 100 و 101 و 102 رو برمیداره، حالا اگه فقط کلیدها رو داخل جدول اخذ ذخیره کرده باشم چطوری میتونم تمام درس های اخذ شده دانشجو رو نمایش بدم؟،لطفا اگه کسی راهکاری داره دستور select مورد نظر رو برام بنویسه؟،من که هرچی فکر کردم چیزی به ذهنم نیومد.
Galawij
پنج شنبه 20 بهمن 1390, 08:53 صبح
فرض کنید دانشجوی با شماره دانشجویی a میاد و 3 تا درس با کدهای 100 و 101 و 102 رو برمیداره، حالا اگه فقط کلیدها رو داخل جدول اخذ ذخیره کرده باشم چطوری میتونم تمام درس های اخذ شده دانشجو رو نمایش بدم؟،لطفا اگه کسی راهکاری داره دستور select مورد نظر رو برام بنویسه؟،من که هرچی فکر کردم چیزی به ذهنم نیومد.
دوست عزیز، شما به ازای هر بار گرفتن درس توسط دانشجو، کد دانشجویی را نیز در این جدول تکرار می کنید.
Select lessonName From Tblesson Inner Join TbStudentGetlesson ON TbLesson.LessonID=TbStudentGetLesson.Lesson_ID Where TbStudentGetLesson.Student_ID='XXXXX'
baktash.n81@gmail.com
یک شنبه 23 بهمن 1390, 08:46 صبح
فرض کن ... این ترم درسی بامد 100 ارائه می شه ... و دانشجوی A اونو بر می داره ... ترم بعد همین درس ارائه می شه ... و کدش می شه 200 ...چون تاریخش عوض شده ... این کد درس یونیک می شه ...
computer _ student
یک شنبه 23 بهمن 1390, 11:51 صبح
فرض کن ... این ترم درسی بامد 100 ارائه می شه ... و دانشجوی A اونو بر می داره ... ترم بعد همین درس ارائه می شه ... و کدش می شه 200 ...چون تاریخش عوض شده ... این کد درس یونیک می شه ...
سلام
شما یک مشکل کوچک در طراحی جداولتون دارید. با جداولی که شما تعریف کردید حرف شما در مورد کوئری کاملا درسته اما....
شما نباید در جدول درس فیلدی با نام "ترم درس" و "سال درس" داشته باشید در نتیجه کد درس ها در ترم های مختلف هیچ تغییری نمی کند
فیلد ترم تنها در جدول اخذ استفاده می شود زمانی که دانشجوی خاصی یک درس خاص را در یک ترم خاص می گیرد ( و هر سه این فیلد ها در جدوا اخذ کلید هستند چرا که دانشجو ممکن است این درس را در چند ترم بگیرد)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.