PDA

View Full Version : سوال: گزارش گیری از چند جدول



طبیب دل
دوشنبه 10 مرداد 1390, 14:19 عصر
با سلام
من در بانکم چند جدول دارم که به هم مرتبطند و عکسش رو ضمیمه کردم وقتی از این جداول گزارش میگیرم با هم ترکیب میش چطوری میتونم از این کار جلوگیری کنم؟

Esmail Solhkhah
دوشنبه 10 مرداد 1390, 14:36 عصر
رو ریلیشنها کلیک کرده دیلیت کنید

البته تو قسمت Query Designer

بعد خودتون شرایط رو مشخص کنید.

موفق باشید.

طبیب دل
دوشنبه 10 مرداد 1390, 15:24 عصر
ببینید دوستان مشخصات شخص در tbMotaham قرار داره و در صورتی که شغل آزاد داشته باشه در tbJobAzad و شغل دولتی در tbJobDovlati و شغل خصوصی وابسته به شرکت در tbjobKhososi که با جدول رابط tbReMJKhososi با جدول tbMotaham در ارتباط هست
حالا ممکنه برای یک متهم تمام این فیلد ها پر شود و برای دیگری فقط یک مورد ثبت شود چطور میتونم گزارش بگیرم که رکورد ها رو با هم ترکیب نکند؟

Kubuntu
دوشنبه 10 مرداد 1390, 16:02 عصر
اشتباهات طراحی:
[1] رابطه n به یک رو برعکس تعریف کردید!
[2] انتخاب کلید در جدول هم اشتباست چون طراحی رو بهینه و نرمالسازی نکرده!

Kubuntu
دوشنبه 10 مرداد 1390, 16:23 عصر
توضیح بیشتر در رابطه با نرمالسازی:
شما برای چی جداول tbJobAzad، tbJobDovlati،tbReMJKhososi ، tbjobKhososiرا ایجاد کردید؟؟؟ برای اینکه از تکرار جلوگیری کنید! مثلا tbJobAzad برای این ایجاد شده که لیست تمام شغلهای آزاد در آن نگهداری شود تا اگر چند متهم در یک شغل فعالیت می کردند تنها نام آن شغل یکبار در جدول tbJobAzadدرج شود.
بنابراین در جدول tbJobAzadبا توجه به کلیدی که شما انتخاب کردید، رکورد جدول tbJobAzadمی شود:
شماره ملی 12 - idcase 13- پوشاک
شماره ملی 14 - idcase 13- پوشاک
همانطور که مشاهده می کنید تکرار id و نام شغل وجود دارد.

برای بهینه کردن کافیست در جدول tbJobAzad
فیلد ملی را حذف کنید چون اضافه است بجای آن یک فیلد idcaseAzad در جدول tbMotaham ایجاد کنید و امکان null گرفتن را به این فیلد جدید بدهید؛ تنها idcase را کلید اصلی قرار دهید. بهتر است idcase آتونامبر باشد و کاربر نتواند آنرا تغییر دهد.
ریلیشن بین جدول tbMotahamو tbJobAzad :
از idcase در جدول tbJobAzad گرفته و آنرا به فیلد idcaseAzad در tbMotaham وصل کنید تا رابطه یک به چند از جدول tbJobAzadبه tbMotaham برقرار شود.

مفهوم برای بقیه جداول هم همینه!
موفق باشی

طبیب دل
سه شنبه 11 مرداد 1390, 10:34 صبح
دوستان مشکلم حل شد
با کمی تغییر در طراحی و استفاده از left outer join مشکل برطرف شد
با تشکر از همه دوستان