PDA

View Full Version : سوال: وجود دور در دیتا بیس


kortol
سه شنبه 02 مهر 1387, 06:49 بعد از ظهر
ایجاد شدن حلقه در یک دیتا بیس چه ایرادی داره ......اصلا مهم است یا نه ..............منظورم همون به وجود اومدن دور در یک دیتا بیس بود ..............لطفا راه نمایی کنید !!!!!!!!!!!!! :گیج: :قلب: :تشویق:

vahid4134
چهارشنبه 03 مهر 1387, 01:36 بعد از ظهر
ایجاد شدن حلقه در یک دیتا بیس چه ایرادی داره ......اصلا مهم است یا نه ..............منظورم همون به وجود اومدن دور در یک دیتا بیس بود ..............لطفا راه نمایی کنید !!!!!!!!!!!!! :گیج: :قلب: :تشویق:
منظورتون رو واضحتر بگید. منظور شما از ایجاد جلظه در یک دیتابیس چی هست؟
فکر کنم با مثال بگید بهتر بشه راهنمایی کرد

DataMaster
جمعه 05 مهر 1387, 01:07 قبل از ظهر
راستش منم قبلا با همچين مشكلي برخورد كردم
فرض كنيد دو تا جدول با همدبگه ارتباط دارن و به صورتCascade Delete , Update ارتباط اونا تنطيم شده ،‌حالا هر كدوم از اين جدولها با جدل سومي ارتباط برقزاز ميكنند يعني يك ارتباط يه صورت حلقه پيش مياد كه شما فقط يكي از اونها رو ميتونيد به صورت Cascade داشته باشيد و اون يكي ديگه SQL Server خطا ميده و اجازه برقراري ارتباط نميده
منم هر چي سعي كردم مشكلي در طراحي پيدا نكردم و فقط با تريگر تونستم مشكل رو برطرف كنم
حالا اگه عزيزان اطلاعات بيشتري دارن راهننمايي كنن

Itist82
پنج شنبه 18 مهر 1387, 07:05 بعد از ظهر
سلام
استاد ما می گفت در بشتر مواقع وجود دور به معنی اشتباه در طراحیه. یا یه ریلیشن اشتباه دارید یا چیزی رو جا انداختید. البته دور دارم تا دور. اگه کلید اصلی هر جودل توی اون یکی باشه، یعنی مثلا اگه با نماد فلش رابطه جدول ها رو نشون بدید، یه سلسله جدولی ایجاد بشه که فلشهاشون درست دنبال همه، حتما طراحیتون غلطه. اما اگه مثلا انتهای دوفلش به یه جدول بخورن به نحوی که دیگه توی دور یه سیکل دنبال هم از فلش ها رو نداشتیم، می تونه درست باشه.

mehdi58
سه شنبه 23 مهر 1387, 05:21 بعد از ظهر
من هم به همين مشكل برخوردم و با تريگر اون رو حل كردم
اما دليل علمي اش چي مي تونه باشه ؟

يه مثال هم مي زنم :
فرض كنين يه جدول داريم كه مشخصات كاربران توي اون ذخيره مي شه . حالا هر كاربر مي تونه واسه ديگران پيغامي رو بفرسته كه اين پيغام مي تونه چندين گيرنده داشته باشه . پس ما يه جدول واسه پيغامهاي ارسالي و يه جدول واسه پيغامهاي دريافتي خواهيم داشت .
ارتباط بين جدول كاربران با جدول پيغامهاي ارسالي : 1:N
ارتباط بين جدول پيغامهاي ارسالي با جدول پيغامهاي دريافتي : 1:N
ارتباط بين جدول كاربران با جدول پيغامهاي دريافتي : 1:N

Itist82
چهارشنبه 24 مهر 1387, 04:24 بعد از ظهر
من هم به همين مشكل برخوردم و با تريگر اون رو حل كردم
اما دليل علمي اش چي مي تونه باشه ؟

يه مثال هم مي زنم :
فرض كنين يه جدول داريم كه مشخصات كاربران توي اون ذخيره مي شه . حالا هر كاربر مي تونه واسه ديگران پيغامي رو بفرسته كه اين پيغام مي تونه چندين گيرنده داشته باشه . پس ما يه جدول واسه پيغامهاي ارسالي و يه جدول واسه پيغامهاي دريافتي خواهيم داشت .
ارتباط بين جدول كاربران با جدول پيغامهاي ارسالي : 1:N
ارتباط بين جدول پيغامهاي ارسالي با جدول پيغامهاي دريافتي : 1:N
ارتباط بين جدول كاربران با جدول پيغامهاي دريافتي : 1:N

من فکر می کنم طراحیتون مشکل داره. چون رابطه کاربر با دریافت چند به چنده و نه یک به چند. من یه جور دیگه برای این مسئله طراحی می کنم:
سه تا جدول داشته باشیم، کاربر، پیغام، ارسال پیغام
کاربر 1 : N ارسال پیغام
پیغام 1:N ارسال پیغام
یعنی جدول ارسال پیغام واسط کاربر و پیغام باشه. فیلد هاش حد اقل شامل کلید خارجی از جدول پیغام، کلید خارجی از جدول کاربر و یه فیلد برای معین کردن اینکه این پیغام از طرف کاربر ارسال شده یا اینکه کاربر اونو دریافت کرده. احتمالا می شه یه جدول دیگه برای تعیین نوع در نظر گرفت که اون وقت با جدول ارسال پیغام رابطه یک به چند داره.
فکر کنم این جوری حل بشه.

database1
شنبه 27 مهر 1387, 10:13 بعد از ظهر
دوست عزیز در این باره یک کتاب جالبی هست که نه تنها شما بلکه افراد دیگر نیز میتوانند استفاده کنن لینک دانلود سه فصل کتاب رو میذارم این جا برین دانلود کنید ضمنا از بلاگ زیر هم میتونید دانلود کنید که همه مفاهیم پایگاه داده رو توضیح داده. از دس ندین

http://database1.blogfa.com

behzad_dr
سه شنبه 21 آبان 1387, 10:26 بعد از ظهر
منظورتون رو واضحتر بگید. منظور شما از ایجاد جلظه در یک دیتابیس چی هست؟
فکر کنم با مثال بگید بهتر بشه راهنمایی کرد



البته دوست عزیز من بدونه که ارتباط به شکل حلقه رو توی شکل زیر می تونی ببینید
http://www.mypardis.com/Storage/23784.83749.bmp
فکر می کنم مفهومش مشخصه ، اما کلید خارجی که در R1 است > اون یه کلید اصلیه درR3 که باعث ایجاد این حلقه میشه ..
و آنچه مشخص است اینه که هیچ مشکلی در کار نیست .