PDA

View Full Version : مشکل در ایجاد view



javad3151
شنبه 08 مرداد 1384, 11:14 صبح
سلام
من یه دیتابیس دارم که 32 تا تیبل داره یکی از اونها اطلاعات شخصی افراد رو ذخیره می کنه و بقیه همه به این جدول لینک هستند(مثل جداول فعالیتها ، میزان تحصیلات، دوستان و آشنایان و... ) وقتی رابطه بین اینها رو (در یک دیاگرام )تعریف می کنم و می خواهم از اینها گزارش بگیرم تعداد بسیاز زیادی رکورد برمی گردونه و سرعت فوق العاده پایین میاد (مثلا برای یک نفر حدود 100 هزار رکورد)
و هر چه اطلاعات مربوط به این نفر زیاد بشه تعداد رکورد ها هم بالاتر میره !!!!
اگر میشه اشکال کارم رو بگید و راهنمایی کنید.
(راستی یادم رفت بگم وقتی می خوام یک ویوو بسازم خودش کلی رابطه الکی ایجاد می کنه که پاکش می کنم)

MToloo
شنبه 08 مرداد 1384, 11:56 صبح
خوب وقتی که برای یک نفر توی یک جدول دیگه بیشتر از یک رکورد داشته باشی, اسم اون نفر به ازای هر رکورد تو جدول دیگه تکرار میشه. باید طوری باشه که برای هر نفر توی هر جدول حداکثر یک رکورد داشته باشی. اصلا اگه بیشتر از یک رکورد داشته باشی، مثلا تعداد 5 نفر از آشنایانش تو یک جدول دیگه باشه، با یک رکورد چطوری میشه اطلاعات اون شخص و 5 آشناش و نشون بده. مجبوره که اسم شخص و 5 بار بیاره و جلوی هر کدوم یکی از آشناهاش و نشون بده. حالا با در مورد مثلا فعالیتها. اگه 4 تا فعالیت داشته باشه، برای هر کدوم از این 5 تا رکورد، باید 4 تا رکورد درست کنه. یعنی میشه 20 تا. همین طوری بگیر برو بالا.
برای رفع این مشکل می تونی همه اطلاعات و یکجا نشون ندی. توی یک صفحه لیست فقط اشخاص و بیاری. حالا کاربر اگه خواست لیست آشنایان همون یک نفر و می بینه. یا لیست فعالیتهای فقط همون یک نفر.

javad3151
شنبه 08 مرداد 1384, 12:52 عصر
از راهنمایی شما تشکر می کنم
من این بانک رو(sql server) با استفاده از اکسس می خونم اگر بخوام یه ریپورت کلی از این افراد بدم چیکار باید بکنم ؟؟

AminSobati
شنبه 08 مرداد 1384, 22:24 عصر
جواد جان،
وجود تعداد رکورد زیاد عیب نیست، ضعف در ایندکسها اشکال محسوب میشه. در ضمن اگر Queryهای شما شرایط لازم رو داشته باشند(این شرایط در BOL تشریح شده) میتونین Indexed View ایجاد کنین که به شکل جالب توجهی سرعت Queryهای شما رو افزایش میده.
مهم نیست که کلاینت شما Access باشه یا VB یا هر چیز دیگه ای. چون موتور SQL Server وظیفه آماده کردن Query رو به عهده داره.