PDA

View Full Version : سوال: درخواست نمونه تابع



masoodlising
سه شنبه 25 خرداد 1389, 04:32 صبح
تابعی که دانشجویانی را که بدون رعایت پیش نیازی دردروسی ثبت نام نموده اند،استخراج کرده ،شماره ونام هردانشجو همراه باشماره ونام درس ثبت شده رانشان دهد؟
تابعی که دانشجویانی را که بدون رعایت هم نیازی دردروسی ثبت نام نموده اند،استخراج کرده ،شماره ونام هردانشجو همراه باشماره ونام درس ثبت شده رانشان دهد؟

محمد سلیم آبادی
سه شنبه 25 خرداد 1389, 17:03 عصر
سوال دانشجویی/دانش آموزی هست؟ اگر نیست پس Table Schema Structur و Samle Data احتیاج هست.

یک اصل در پایگاه داده ها وجود داره به نام "جامعیت داده ها Data Integrity) این پرسش این اصل اساسی در پایگاه داده ها را زیر سوال بده و نقض کرده است!

masoodlising
پنج شنبه 27 خرداد 1389, 03:52 صبح
1-فایل اطلاعات دانشجو(STD) که شامل S# :شماره دانشجویی(کلیداصلی)،Name:نام،F amily:نام فامیل،Field:رشته تحصیلی،Sex:جنسیت،Gpa معدل کل،Address آدرس،CityCode:کدشهر،TelNo:شماره تلفن،Ssno:شماره ملی،birthdate:تاریخ تولد

2-فایل درس(CRS) که شامل C#‎‎:شماره درس(کلیداصلی)،Cname:نام درس،Unite:تعداد واحد درسی،Passgrade:حداقل نمره قبولی،Crstype:نوع درس(عملی یا تئوری)

3-فایل درس دانشجو(STDTRM) که شاملTrmNo(کلیداصلی):شماره ترم،S#:شماره دانشجویی،TrmGpa:معدل ترم دانشجو

4-فایل ثبت نام(REG) که شامل: TrmNo:شماره ترم،S#،C#‎،Grade:نمره دردرس

5-فایل پیش نیاز(PREREQ)که شامل‎‎Cp:شماره درس پیش نیاز،SeqNo:شماره چندمین پیش نیاز یا هم نیاز(کلیداصلی)،C#

6-فایل هم نیاز(COREQ) که شامل Cc#‎‎،C#‎‎:شماره درس هم نیاز،SeqNo(کلیداصلی)

7-فایل کد که شامل(CODEFILE) که شاملField،Type:نوع،Desc:شرح

محمد سلیم آبادی
جمعه 28 خرداد 1389, 15:48 عصر
1-فایل اطلاعات دانشجو(STD) که شامل S# :شماره دانشجویی(کلیداصلی)،Name:نام،F amily:نام فامیل،Field:رشته تحصیلی،Sex:جنسیت،Gpa معدل کل،Address آدرس،CityCode:کدشهر،TelNo:شماره تلفن،Ssno:شماره ملی،birthdate:تاریخ تولد
2-فایل درس(CRS) که شامل C#‎‎‎:شماره درس(کلیداصلی)،Cname:نام درس،Unite:تعداد واحد درسی،Passgrade:حداقل نمره قبولی،Crstype:نوع درس(عملی یا تئوری)
3-فایل درس دانشجو(STDTRM) که شاملTrmNo(کلیداصلی):شماره ترم،S#:شماره دانشجویی(کلیداصلی)،TrmGpa:معد ترم دانشجو
4-فایل ثبت نام(REG) که شامل: TrmNo:شماره ترم(کلیداصلی)،S#(کلیداصلی)،C# ‎‎‎(کلیداصلی)،Grade:نمره دردرس
5-فایل پیش نیازکه شاملC#‎‎‎(کلیداصلی)،Cp#:شما ه درس پیش نیاز(کلیداصلی)،SeqNo:شماره چندمین پیش نیاز یا هم نیاز(کلیداصلی)،
6-فایل هم نیاز(COREQ) که شامل (کلیداصلی)C#‎‎‎،CC#‎‎‎:شما ره درس هم نیاز(کلیداصلی)،SeqNo(کلیداصلی )
7-فایل کد که شامل(CODEFILE) که شاملField(کلیداصلی)،Type:نوع(کل داصلی)،Desc:شرح(کلیداصلی)


این سوال کاملا مشخصه که دانشجویی هست و مطرح کردن اینگونه سوالات در این سایت مشکل داره.

ولی بهتر بود به جای استفاده از اصطلاح "فایل" از "جدول" استفاده می کردین.
هر جدولی یک کلید اصلی بیشتر نمی تونه داشته باشه در صورتی که شما در بیشتر جداولتان چندین ستون را به عنوان کلید اصلی در نظر گرفتین. که کار اشتباهی است، ولی میدانم منظرتون این بود که ترکیب این ستونها به عنوان کلید اصلی در نظر گرفته می شوند.

به نظر من ساختار جداولتان نرمال نیستن و مشکل دارند. یکی اینکه از بیشتر جداول دارای کلیدهای اصلی ترکیبی هست که و دوم اینکه جدول "پیشنیاز" و "همنیاز" مشکل داره.
باید این دو جدول با جدول "دروس" Merge بشن. و از مفهوم self-referencing استفاده بشه. و برای seq هم از recursive cte استفاده بشه.

سوال شما کلا مشکل داره. مثلا بهتر بود میگفتین چه trigger ای ایجاد کنم که به دانشجویان اجازه ندهد که دروسی را انتخاب کند که هنوز پیشنیاز آن را نگذرانده است یا اینکه دروس حتما با همنیاز های خود انتخاب شوند و کلا از این دست سوالات.

موفق باشید.

masoodlising
شنبه 29 خرداد 1389, 02:57 صبح
محمدجان ابتدا ازتو به خاطر راهنمایی هات تشکرمی کنم.من جداول رو اصلاح کردم.کاملاً حرف های تو درسته.اما من می خوام که دانشجو بتونه درسها رو انتخاب کنه ومن بعد بتونم اسامی دانشجویان رو استخراج کنم.اگه بتونی درمورد self-referencing هم توضیح بیشتری بدی ممنون میشم.دوستارتو مسعود

محمد سلیم آبادی
شنبه 29 خرداد 1389, 08:31 صبح
ببینید من نمی تونم بدون دیدن Schema ی واقعی جداول راجب دو جدول "همنیاز" و "پیشنیاز" قضاوت کنم. بایستی دید چه قیدهای کلید خارجی در این جداول ایجاد شدند.
اگر توجه کرده باشین چارت دروس پیشنیاز مثل یک درخت هست.
نکته ای که وجود داره این هست که دروس هم نیاز و یا پیش نیاز هر دو درس هستند.
من دیاگرام ادغام شده ی سه جدول دروس، همنیاز و پیشنیاز را همراه با Schema ی جدول بهتون نشون میدم. فقط فراموش نکنید که همیشه از نام های معنا دار و استاندارد برای ستونها و جداولتان استفاده کنید، #C اشتباه هست!

CREATE TABLE Courses
(Course_nbr INT NOT NULL PRIMARY KEY,
Course_name NVARCHAR(50) NOT NULL,
... ,
Pre_nbr INT NULL
REFERENCES Courses (Course_nbr),
Parallel_nbr INT NULL
REFERENCES Courses (Course_nbr)
);

همانطوری که مشاهده میشه دو ستون کد درس پیشنیاز و کد درس همنیاز کلید های خارجی هستند و به همان جدول ارجاع داده شده اند. و دیاگرامشان هم شبیه به شکل زیر در میاد:
http://www.barnamenevis.org/forum/attachment.php?attachmentid=51419&stc=1&d=1276921861

masoodlising
چهارشنبه 02 تیر 1389, 02:17 صبح
کلید خارجی وارجاع برای جدول پیش نیاز(PREREQ):برای ستون C#‎‎‎‎ و ستونCp# برابرCRS(C#‎‎‎‎).قید برای ستون SeqNo برابرcheck(1<SeqNo<5
کلید خارجی وارجاع برای جدول هم نیاز(COREQ):برای ستون C#‎‎‎‎ و ستون Cc#‎‎‎ برابرCRS(C#‎‎‎‎) .قید برای ستون SeqNo برابرcheck(1<SeqNo<5
محمدجان حالا برام تابع رو می نویسی.