PDA

View Full Version : مشکل در relationship



hhh2000
پنج شنبه 27 بهمن 1390, 21:05 عصر
'Lesson' table saved successfully
'Select' table
- Unable
to create relationship 'FK_Select_Lesson'.
Introducing FOREIGN KEY
constraint 'FK_Select_Lesson' on table 'Select' may cause cycles or multiple
cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify
other FOREIGN KEY constraints.
Could not create constraint. See previous
errors.



82778
من یه جدول دارم به اسم گروه آموزشی و سه جدول دیگه به اسم دانش آموز و استاد و درس که هر سه اینها کلید اصلی گروه آموزشی رو بعنوان کلید خارجی دارند .همچنین قابلیت delete&update rule را روی cascade میذارم.


یه جدول دیگه ساختم به اسم انتخاب که در اون کلید اصلی جدول های دانش /اموز و استاد و درس رو به عنوان کلید خارجی درون خودش داره وقتی میام این ارتباط ها رو قابلیت delete&update rule را روی cascade بذارم این ارور رو میگیره ولی وقتی روی not action میذارم این ارور نمیگیره چطور میتونم کاری کنم که بتونم قابلیت های حذف و آپدیت رو داشته باشم که روی cascade باشه؟
حتی اگر یکی از آپدیت یا حذف رو روی cascade بذارم بازم مشکل میگیره
اصلا چرا این ارور رو میده ؟

بهزادصادقی
شنبه 29 بهمن 1390, 01:42 صبح
میشه بی زحمت لیست همه relation هایی را که همه این پنج جدول در آن دخیل هستند را برای ما درج نمائید؟

hhh2000
شنبه 29 بهمن 1390, 02:00 صبح
این عکس کاملشه من تازه شروع کردم میخوام دانشگاه رو دیتابیس رو درست کنم تو این عکس باید توی جدول Master صفت id رو هم به cheifId در جدول های Department و collage بعنوان کلید خارجی معرفی کنم ولی چون باز همین ارور میداد حذف کردم. به نظر خودم جدولم مشکل نرمال شدن داره فکر کنم.چون گفته میشه استاد میتونه رئیس گروه آموزشی و رئیس دانشکده باشه پس باید یه استاد از جدول master در جدول collage , depatment معرفی بشه از طرفی میگه استاد باید عضو گروه آموزشی باشد که درون جدول master از جدول department کلید خارجی گرفتیم همون departmentid اینطوری مشکل در پر کردن صفت های جدول پیش اومد چون موقعی که میخوایم گروه آموزشی اضافه کنیم میگه باید رئیس هم مشخص بشه ما فعلا استاد نداریم که بخوایم رئیس مشخص کنیم این یه مشکل و مشکل دیگه وقتی استاد را اول بیام مشخص کنیم میگه گروه آموزشیش رو مشخص کن باز هم ما هنوز که نتونستیم گروه آموزشی رو مشخص کنیم چطور استاد رو عضو گروه کنیم که هیچگونه گروه اموزشی موجود نیست .مشکلات قبلی هم توی پست قبل ذکر کردم.
تشکر
82858

Galawij
شنبه 29 بهمن 1390, 08:00 صبح
خطای مربوط به پست اول، همان طور که خودتون هم گفتید مربوط می شه به تحلیل بانک شما، چون ایجاد حلقه کرده و در این صورت به شما امکان همزمان Delete Cascade و Insert Cascade را نمی ده. در بعضی شرایط خاص من از سمت برنامه این نیاز را برطرف می کنم و یا برحسب اهمیت یکی از این موارد را فعال می کنم.
در مورد سوال شما بهتره تحلیل بانک را بهینه تر کنید...

hhh2000
شنبه 29 بهمن 1390, 08:55 صبح
خطای مربوط به پست اول، همان طور که خودتون هم گفتید مربوط می شه به تحلیل بانک شما، چون ایجاد حلقه کرده و در این صورت به شما امکان همزمان Delete Cascade و Insert Cascade را نمی ده. در بعضی شرایط خاص من از سمت برنامه این نیاز را برطرف می کنم و یا برحسب اهمیت یکی از این موارد را فعال می کنم.
در مورد سوال شما بهتره تحلیل بانک را بهینه تر کنید...

توی جدول select و lesson فقط اجازه میده یکی از کلید های خارجی update یا delete رویcascadeبذارم

Galawij
شنبه 29 بهمن 1390, 10:00 صبح
از چه ورژنی استفاده می کنید؟
نیازمندیهاتون را بگید و بانک را بذارید، تا بیشتر بررسی کرد.
(ممکنه تحلیلش هم دستکاری بشه!)

hhh2000
شنبه 29 بهمن 1390, 10:38 صبح
http://www.4shared.com/rar/JnGTjuzX/university.html
من براساس این نکات درست کردم
1-دانشگاه یه استاد به عنوان رئیس داره که جز این نمیتونه پست ریاستی داشته باشه2- دانشگاه دارای چند دانشکده است و هر دانشکده یه استاد به عنوان رئیس داره که جز این نمیتونه پست ریاستی داشته باشه
3- هر دانشکده دارای چندین گروه اموزشی است که یه استاد ها در اون عضو هستن و یه استاد به عنوان رئیس داره و نمیتونه دیگه پست ریاستی داشته باشه
4-هر دانشکده دارای کلاس می باشد و در کلاس دروس طبق ساعت های 8-10و10-12-12-14و14-16و16-18 برگزار شود
5-هر دانشجو درس را با استاد مورد نظر خود در ساعت مخصوص انتخاب میکند
چیزهائی که مهمه تشکیل کلاس و انتخاب درس و مشخص شدن رئیس آنهاس

ورژن 2008

Galawij
شنبه 29 بهمن 1390, 15:15 عصر
سلام،
من دیتابیس شما را دیدم، نکاتی هست که امیدوارم با رعایت کردنشون زودتر به نتیجه برسید:
شما سعی کنید با جداول خالی ارتباط ها را برقرار کنید، یعنی قبل از اینکه داده ای وارد جدول کنید، ارتباط ها را برقرار کرده باشید.

1-دانشگاه یه استاد به عنوان رئیس داره که جز این نمیتونه پست ریاستی داشته باشه2- دانشگاه دارای چند دانشکده است و هر دانشکده یه استاد به عنوان رئیس داره که جز این نمیتونه پست ریاستی داشته باشه
یک جدول که برای مشخصات دانشگاه در نظر گرفتید، یک جدول دیگه برای دانشکده های مختلف در نظر بگیرید که از جدول دانشگاه کلید خارجی می گیرد.
در ارتباطات یک به یکی که بوجود میاد، از استاد به دانشگاه و یا دانشکده ها، چون هر دانشکده فقط یک استاد به عنوان رئیس دارد، به جای اینکه کلید خارجی تعریف کنید فقط نام و نام خانوادگی استاد را به عنوان فیلد نگهداری کنید(نیازی به ارتباط این دو جدول نیست).

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

هر دانشکده دارای کلاس می باشد و در کلاس دروس طبق ساعت های 8-10و10-12-12-14و14-16و16-18 برگزار شود
تایم کلاس ها در جدولی جداگانه داشته باشید، لیست کلاس ها را هم در جدول دیگری نگهداری کنید، بعد در یک جدول مشخص کنید که هر کلاسی در چه تایمی برگزار می شود.
فعلاً برید جلو، داره طولانی می شه...

hhh2000
شنبه 29 بهمن 1390, 22:40 عصر
سلام،
من دیتابیس شما را دیدم، نکاتی هست که امیدوارم با رعایت کردنشون زودتر به نتیجه برسید:
شما سعی کنید با جداول خالی ارتباط ها را برقرار کنید، یعنی قبل از اینکه داده ای وارد جدول کنید، ارتباط ها را برقرار کرده باشید.

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

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

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

ممنون همه کارهائی که گفتی انجام دادم درست شد تنها مشکلی که برام مونده جدول تشکیل و انتخاب هستش

«دانشجو درس ریاضی با استاد زارع در روز شنبه ساعت 10-8 در کلاس 130 با گنجایش 30 نفر انتخاب می کند» . من باید این دو جدول رو طوری درست کنم که بتونم چنین چیزی رو ازش استخراج کنم نمی دونم چطوری باید بینشون ارتباط بدم

Galawij
شنبه 29 بهمن 1390, 22:50 عصر
در مرحله قبلی تا اینجا پیش رفتیم که یک جدول برای تایم کلاس ها درست کردیم، لیست کلاس ها را هم در جدول دیگری نگهداری کردیم، چون شماره کلاس های مربوط به هر دانشکده فرق می کنه، از جدول لیست دانشکده ها یک کلید خارجی به این جدول اضافه می کنیم(مشخص می کنه هر کلاس درسی در چه دانشکده ای برگزار می شود، بعداً در گزارش گیری ها خیلی به شما کمک می کنه). بعد در یک جدول دیگر مشخص کردیم که هر کلاسی در چه تایمی برگزار می شود(اسمش را می ذاریم جدول زمان کلاس ها).

در جدول زمان کلاس ها این فیلدها را اضافه می کنیم (علاوه بر فیلدهای قبلی): حداکثر ظرفیت کلاس، بهتره یک جدول دیگه با نام روزهای هفته داشته باشید و به این جدول ارتباط بدید!، از جدول اساتید هم یک ارتباط بگیرید، و همچنین از جدول درس ...

انتخاب واحدش هم می ذارم....

Galawij
شنبه 29 بهمن 1390, 23:16 عصر
در جدول زمان کلاس ها، فیلد تاریخ شروع کلاس ها را هم اضافه کنید.
برای انتخاب واحد هم به این صورت می تونید اقدام کنید:
یک جدول دیگر برای انتخاب واحد با این فیلدها درست کنید: کد دانشجو را به عنوان کلید خارجی وارد این جدول کنید، از کلید اصلی جدول زمان کلاس ها هم به این جدول یک ارتباط بگیرید، یک فیلد نمره هم به این جدول وارد کنید، تا در ادامه نمرات دانشجو هم نگهداری شود.

موفق و سربلند باشید.

hhh2000
شنبه 29 بهمن 1390, 23:24 عصر
ممنون بابت زحماتت