تا ۹۰٪ تخفیف در جشنواره زمستانه توسنیسو! تا ۹۰٪ تخفیف در جشنواره زمستانه توسنیسو!
مانده تا پایان تخفیف
مشاهده دوره ها
0

طراحی دیتابیس

سلام

می خوام ی دیتابیس برای نگه داری اطلاعات کارمندان شرکت طراحی کنم. تو دیتابیس باید تعداد روزهایی که یک کارمند حضور دارد ذخیره شود.

مثلا کارمند شماره یک روز های شنبه و یکشنبه حضور دارد.

جدول کارمندان و بقیه جداول رو طراحی کردم فقط همین قسمت مونده ممنون میشم راهنمایی کنید که این قسمت چجوری باشه

مرسی

پرسیده شده در 1395/09/10 توسط

6 پاسخ

0

در مطالب بالا يادم رفت بگم كه دو جدول به relation دارن يك به چند توسط فيلد شماره پرونده

پاسخ در 1397/04/17 توسط
0

سلام

من در SQL دو جدول دارم در جدول شماره 1 مشخصات اصلي مثل :

شماره پرونده كه يك فيلد كليد اصلي هست و autonumber هم هست

نام و نام خانوادگي شماره تلفن و ...

در جدول شماره 2 مشخصات خدماتي كه به اين فرد داده مي شود مثل : پركردن دندان - جرم گيري و ...

ثبت مي شود

سوال من :

من ميخواهم در جدول شماره يك كد ملي افراد رو هم نگهداري كنم به طوريكه اگه شماره كد ملي تكراري وارد بشود سيستم ايراد بگيرد شماره ملي تكراري را ثبت نكند چه بايد بكنم ؟

آيادر SQL‌ بايد فعاليتي انجام بدم يا در برنامه نويسي؟؟؟

ممنونم از راهنمايي

اگر محبت كنيد راهنمايي بفرماييد ممنون مي شوم آدرس ايميل :‌ eydi.farhad@gmail.com

پاسخ در 1397/04/17 توسط
0

ممنون

دقیقا منم بین این دو روش مونده بودم که کدوم روش بهتره، پس آنچنان تفاوتی نداره

خیلی ممنون از پاسختون

پاسخ در 1395/09/10 توسط
0

ممنون از پاسختون ولی فک کنم منظورم رو بد رسوندم

ببینید چیزی ک قراره من طراحی کنم مقادیر ثابتی هست، یعنی می خوام روزهایی ک یه کارمند در شرکت حضور داره رو ذخیره کنم ک این روزها ثابت هستند، یعنی کارمند اول فقط روزهای شنبه و یکشنبه تو شرکت حضور داره و یا کامند دوم فقط روزهای شنبه و سه شنبه

این مقادیر ثابت هستند و حالت حضور و غیاب نیس.

سه روش زیر به ذهنم رسیده

روش اول : ID کارمند در یک ستون و در ستون بعدی هم روزهای هفته کنارهم نوشته شود. یعنی برای هر کارمند فقط یک ردیف ساخته می شود.

روش دوم: مثل روش اول با این تفاوت که به جای اینکه روزهای هفته نوشته شود،یک جدول شامل روزهای هفته ساخته شود و برای هر کارمند ID روزهای هفته نوشته شود.

روش سوم : به جای اینکه برای هرکارمند فقط ردیف وجود داشته باشد، به ازای تعداد روزهایی که کارمند وجود دارد در این جدول رکورد درج شود و در هر ردیف ID کارمند و یکی از روزهای حضورش نوشته شود

روش اول و دوم فک میکنم ک قواعد نرمال سازی رعایت نشده و روش سوم فک میکنم ک اطلاعات تکراری زیادی وجود دارد.

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

خیلی ممنون

پاسخ در 1395/09/10 توسط
4

سلام دوست عزیز، این موضوع بستگی داره که سیستم ذخیره سازی شما به چه صورت باید باشه، اگر نیاز دارید که ساعت ورود و ساعت خروج رو هم داشته باشید، بهتره یک جدول طراحی کنید به صورت زیر:

CREATE TABLE EmployeeTimesheets
(
    [Id] INT IDENTITY NOT NULL PRIMARY KEY,
    [EmployeeId] INT NOT NULL REFERENCES [Employees]([Id]),
    [InTime] DATETIME,
    [OutTime] DATETIME,
);
GO

اما اگر فقط روز های هفته مد نظرتون هست یه جدول خیلی ساده به صورت زیر درست کنید:

CREATE TABLE EmployeesTimes
(
    [EmployeeId] INT NOT NULL REFERENCES [Employees]([Id]),
    [Date] DATE NOT NULL,
    PRIMARY KEY([EmpolyeeId],[Date]),
);
GO

تو این جدول قسمت Date فقط تاریخ میگیره، مثلاً 11//30//2016 که بر اساس تاریخ می تونید تشخیص بدید که هر کارمند چه روزی رو حضور دشته.

پاسخ در 1395/09/10 توسط
2

سلام

دوست عزیز درکل میشه به روش زیر عمل کرد.

1. کلید خارجی ( یعنی ID جدول کارمند) و شماره روزهای هفته ای که کاربر حضور داره رو در جدول جدید بزاری که این کار درسته و ناقض رابطه HAS-A در جداول بانک اطلاعاتی نیست.

مثلا اگر کارمند با شماره 123 روزهای شنبه و 3 شنبه قرار باشه حضور داشته باشه. در جدول دو رکورد براش ثبت خواهد شد.

123 0

123 3

2. میشه سمنتیکال هم عمل کرد. یعنی اگر در مورد مصرف حافظه قرار سخت گیرانه عمل بشه برای هر کارمند یه رکورد ثبت بشه اونوقت حالت معنایی یعنی اینکه ترکیب روزهای حضور معنادار باشند. مثل شماره دانشجویی:

مثلا 123 03 ====> یعنی داده های مثال قبلی

موفق باشی

پاسخ در 1395/09/10 توسط

پاسخ شما