PDA

View Full Version : ارتباط بین دو جدول مرخصی و کارمند



reza4359
سه شنبه 28 آبان 1392, 18:06 عصر
سلام دوستان میخواستم بپرسم که ما یک سیستم ثبت مرخصی داریم حالا سوال اینه که اولا در وهله اول بهتره برای ثبت مرخص یک جدول داشته باشیم و مشخصات کارمند به همراه فیلدهای ثبت مرخصی در اون ثبت بشه یا اینکه دو جدول مشخصات کارمند و جدول مرخصی جداگانه داشته باشیم و این دو رو به هم ارتباط بدیم
و اینکه ارتباط بین این دو جدول چطوریه؟اگر ممکنه مثال عملی بزنید ممنون میشم

aghayex
سه شنبه 28 آبان 1392, 22:14 عصر
دوست عزیز شما باید یه جدول برا ذخیره مشخصات کارمندان داشته باشی و یه جدول هم برا ذخیره مرخصی های اونها نحوه ارتباطشون هم یک به چند میشه یعنی به ازای هر رکورد کارمند شما می تونید چندین رکورد مرخصی داشته باشی .
به وسیله ی کلیدی که در جدول کارمند هست ( اون کلید می تونه کد پرسنلی کارمند باشه یا یه ستون ای دی که خودش اتوماتیک شماره بندازه باشه ) به جدول مرخصی ها وصل بشه

reza4359
چهارشنبه 29 آبان 1392, 00:04 صبح
ممنون دوست عزیز از پاسخگویی خوبتون حالا کلیدی که درجدول کارمند قرارمیگیره مثلا (id) باید کلید اصلی باشه و کلیدیکه در جدول مرخصی هست باید کلید خارجی باشه؟
و اینکه من چطوری اطلاعات هر مرخصی که یک کارمند میگیره رو به همون کارمند در جدول کارمند اختصاص بدم با توجه به کدملی اون؟ (یعنی میخوام هر مرخصی در جدول مرخصی ها ثبت بشه به اسم اون کارمند) یعنی داخل کدنویسی دستور سلکتش(select) به چه صورت باید باشه چون من تا حالا با ارتباط بین جداول و کدنویسی اونها برنخوردم

ممنون.

aghayex
چهارشنبه 29 آبان 1392, 06:57 صبح
نگاه کنید شما ستون ای دی که در جدول کارمند هست رو کلید در نظر می گیری و در جدول مرخصی هم همین ستون رو ایجاد می کنی اما اینبار نباید کلید در نظر بگیری.
در مورد نحوه ایجاد ارتباط هم اگه در محیط اس کیو ال داری دیتابیس ایجاد می کنی که باید یه دیاگرام درست کنی و تیبل ها تو فراخوانی کنی و در اونجا با هم ارتباطشون بدی . اما اگه در محیط ef می خواهی کار کنی که در این مدل در روش model first تقریبا شبیه به ساخت دیتابیس در اس کیو ال هست ولی در روش code first قضیه فرق می کنه .

در مورد سوال دوم , شما در جدول مرخصی یه ستون دارید به نام ای دی که کد اون کارمند در اون ذخیره میشه و موقع سلکت شما باید دو جدول ارمند و مرخصی رو با هم جوین کنید تا بتونید رکودهایی داشته باشید که نام و بقیه مشخصات کارمند رو در کنار اطلاعات مرخصی اونها در یک جا داشته باشید .

reza4359
چهارشنبه 29 آبان 1392, 12:31 عصر
ممنون دوست عزیز از پیگیری شما
حالا پس موقع ثبت مرخصی به صورت عادی باید اطلاعات مرخصی در جدول مرخصی insert بشه به همراه کد ملی کارمند؟در این صورت با توجه به کد ملی که در جدول کارمند و جدول مرخصی مشترک هست و در جدول کارمند کلید اصلی هست و در جدول مرخصی کلید نیست باید هنگام ثبت مرخصی کارمند در جدول مرخصی کد ملی اون هم در این جدول به همراه دیگر فیلدهای مربوط به مرخصی ثبت بشه؟
و اینکه موقع جستجو و select سوابق مرخصی های کارمند باید دو تا جدول مرخصی و کارمند رو به هم جوین کنیم؟
اگه ممکنه یک نمونه از کد جوین رو در همین رابطه برام بزارید خیلی ممنون میشم
با تشکر

aghayex
چهارشنبه 29 آبان 1392, 19:15 عصر
SELECT karmand.name,karmand.last,morakhsi.date,morakhsinu mber
FROM karmand
INNER JOIN morakhsi
ON karmand.meli=morakhsi.meli;


این تقریبا چیزی هست که شما مد نظرتونه
چون من با ان تی تی کار می کنم ممکنه کمی اینور اونور شده باشه.
لینک زیر مثال های خوبی هست
http://www.w3schools.com/sql/sql_join_inner.asp

mahan.2002
یک شنبه 03 آذر 1392, 02:38 صبح
با سلام
با این روش هم بنظرم میتونی تمام مرخصی های یک کارمند خاص رو دربیاری
البته من تست نکردم بصورت کلیه و از همون کد دوستمون استفاده کردم.
و فکرم نمیکنم در کوئری نیاز به کد ملی باشه همون ایدی کارمند کافیه.


SELECT karmand.name,karmand.last,morakhsi.date,morakhsi.t ime
FROM karmand
INNER JOIN morakhsi
ON karmand.id = morakhsi.idkarmand
where karmand.id = کد کارمند;