PDA

View Full Version : سوال: با توجه به تجارب شما؛ آیا فیلدهای بانک اطلاعاتی رو خوب در نظر گرفتم؟(از نظر اعمال فرمولها در آینده)



sahel65
یک شنبه 13 مرداد 1392, 18:09 عصر
سلام دوستان عزیزم؛
خسته نباشین.
من یک جدول بانک اطلاعاتی برای مشخصات پرسنل ایجاد کردم؛ میخواستم ببینم با توجه به اینکه بعدا اگه بخوام روی این فیلدها فرمولهایی اعمال کنم و همچنین از نظر هدر ندادن حجم حافظه؛ آیا نوع و مقدار فیلدها رو خوب در نظر گرفتم؟
و حالا این شکل رو ببینید:

108502




توضیح فیلدها به این شکل هستند:
1- کد پرسنلی که این رو Primary key در نظر گرفتم(طولش حداکثر 5 رقمه). آیا وقتی Priamary در نظر می گیریم ، به نوعی Index هم میشن دیگه درسته؟ نمیخواد قبل از این فیلد یه فیلد ردیف هم بذارم؟ اصلا فیلد ردیف نیازم میشه یا نه؟

2 و 3و 4- که به ترتیب نام، نام خانوادگی و نام پدر هستند.
5- تاریخ تولد. فکر کنم قبلا که فروم رو می دیدم دوستا میگفتن که اگه فیلد تاریخ رو text انتخاب کنیم می تونیم تو محاسبات شرکتشون بدیم! آیا درست میگم یا اشتباهه؟ محاسبات روی این فیلد زمانی بدرد میخوره که بخوایم به طرف هر چند سال یه گروه بدیم و مستقیما با این فیلد جهت محاسبات در ارتباطیم.
6- محل تولد.
7- (NoIdsn): شماره شناسنامه، که از نوع گرفتمش ولی فکر کنم زیاد باشه.
8- (NoNatnl) : کد ملی که int گرفتمش.
9- (EduLast) :آخرین مدرک تحصیلی.
10-(EduType): رشته تحصیلی.
11-(NoInsrnc): شماره بیمه.
12-(Address):آدرس .
13-(Tel_num):شماره تلفن.
حالا در اینجا چند تا سوال برام پیش اومده:

آیا کد ملی رو نباید text یا char در نظر بگیرم؟ الان تلفن رو هم همین نوع در نظر گرفتم تا صفر اول موبایل رو حذف نکنه؛ خب کد ملی ها هم که همش اولش صفر داره دیگه؟ اگه بخوایم حذف نشه باید از text بگیریم یا نه؟

برای وضعیت نظام وظیفه و همچنین مدرک تحصیلی بنظرتون از چه نوع بگیرم؟ مثلا زیر پنجم ابتدایی رو بذارم یک ، بعدش سیکل رو بذارم دو و الی آخر؟

برای وظیفه عمومی چی؟ این رو هم بصورت کد برم جلو؟ یعنی 1 انجام داده و 2 معاف و 3 معافیت پزشکی.



ب) همچنین میشه بگید برای فیلدهای جزئی از یک حقوق که اعدادش بالای 100هزارتومن هستن، همون int آیا خوبه؟

ممنون میشم اگه جوابمو بدین؛ آخه حتما شماها تو تجربیاتتون از این موارد داشتین و باهاش برخورد کردین. البته بیشتر هدفم تو این سوال همون فیلد تاریخ و محاسبات روی این فیلد هستش و همچنین اینکه فیلد کلید اصلی رو خوب در نظر گرفتم یا نه؟

Direlap
یک شنبه 13 مرداد 1392, 18:51 عصر
چرا نام و نام خانوادگی رو allow null قرار دادید ؟ هدف خاصی دارید ؟

به نظرم بهتره فیلد آدرس رو چون فارسی هست و متغیر از نوع nvarchar از نوع max استفاده کنید.

شماره تلفن باید char و تعداد 11 باشد نه 12.

Mahmoud Zaad
یک شنبه 13 مرداد 1392, 19:17 عصر
سلام
به نظر من باید یک جدول جدا برای مدارک تحصیلی داشته باشید چون معمولاً به مدارک مختلف و نه فقط آخرین مدرک نیاز هست که میشه دیپلم، لیسانس، فوق و ... رو توی هر ردیف برای هر فرد ثبت کرد.
شماره شناسنامه بعضی از افراد همون کد ملی شون هست (متولدین 68 به بعد) چون مثلاً برای تهرانی ها با 0 شروع میشه و int هم صفر رو قبول نمی کنه پس بهتره نوعش varchar(10) باشه
برای کد ملی هم توضیحات بالا صدق می کنه
برای نظام وظیفه که ممکنه چند حالتی باشند بهتر جدول جداگانه داشته باشید و id ردیف مربوطه رو اینجا ثبت کنید.

ordebehesht
یک شنبه 13 مرداد 1392, 19:37 عصر
اینکه جدول رو باید بشکنی توش شکی نیست اما فیلدها رو می گم برای آدرس چرا تکس گرفتی مگه کل آدرس چند خط همون nvarchar خوبه برای تاریخ تولی deta‌ نگرفتی به نظر من بهتره شماره تلفن رو از نوع nvarchat f'dvd چرا که روش عنلیات ریاضی که قرار نیست انجام بدی و در ضمن بتونی توش کارکترهای دیگه بتونی وارد کنی

Arash_janusV3
یک شنبه 13 مرداد 1392, 21:43 عصر
بیشتر اشکالات جداول و یا پایگاه داده زمانی مشخص می شه که در اون اطلاعاتی به طور تست ولی واقعی وارد بشه
البته در تیمهای بزرگ برنامه نویسی کارشناسی در خصوص شناسایی فیلدها و داده وجود داره
و قطعأ همه جوانب رو در نظر می گیرند و بعد اقدام به طراحی می کنند
ولی باز هم به نکات غیر قابل پیش بینی برخورد می کنند

sohil_ww
یک شنبه 13 مرداد 1392, 22:03 عصر
اول از همه allownull ها باید درست کنی شما که نمی تونی 1 کد پرسنلی بدون نام داشته باشی

2.به نظر من جدولت و به چند جدول دیگه تقسیم کن

3.identity فیلد int برابر yes قرار بده تا خودش مقدار بده و ترتیب داشته باشه

4.در ضمن وضعیت تاهل و تعداد فرزند یکی از مهم ترین فیلد ها برای کارمندان (برای محاسبه حقوق )

5.اگه با کد ملی کاری ندارید تو برنامه (منظورم محاسباتیه) پس بهتر از نوع متنی بگیریدش همچنین ش.ش

6.بهتر فیلد شماره بیمه هم از نوع unique تعریف کنی تا مقدار تکراری نگیره

7.فیلد برای شماره اضطراری قرار بده

و 8 ان شاالله موفق باشی ! فهمدیم اون 2 ماه دیگه که تو سئوال اضافه کردن عکس به استیمول می گفتی کی هست ! ! ! :قهقهه:

sahel65
دوشنبه 14 مرداد 1392, 09:25 صبح
چرا نام و نام خانوادگی رو allow null قرار دادید ؟ هدف خاصی دارید ؟ممنونم عزیزم؛ نه همینجوری گذاشتم که شاید به نظر شما کار درستی نباشه؛ اصلاح شد به Not Allow .

به نظرم بهتره فیلد آدرس رو چون فارسی هست و متغیر از نوع nvarchar از نوع max استفاده کنید.اصلاح شد.

شماره تلفن باید char و تعداد 11 باشد نه 12. اصلاح شد.

شماره شناسنامه بعضی از افراد همون کد ملی شون هست (متولدین 68 به بعد) چون مثلاً برای تهرانی ها با 0 شروع میشه و int هم صفر رو قبول نمی کنه پس بهتره نوعش varchar(10) باشهاصلاح شد.

برای آدرس چرا تکس گرفتی مگه کل آدرس چند خط همون nvarchar خوبهچشم؛ اصلاحش کردم.

برای تاریخ تولد deta‌ نگرفتیاز نوع Datetime گرفتم.

بیشتر اشکالات جداول و یا پایگاه داده زمانی مشخص می شه که در اون اطلاعاتی به طور تست ولی واقعی وارد بشه
البته در تیمهای بزرگ برنامه نویسی کارشناسی در خصوص شناسایی فیلدها و داده وجود داره
و قطعأ همه جوانب رو در نظر می گیرند و بعد اقدام به طراحی می کنند
ولی باز هم به نکات غیر قابل پیش بینی برخورد می کنند ممنونم آرش جان؛ از اینکه نظر استادانه ت رو دادی؛ آره عزیزم حق کاملا با شماست ولی چون دیدم فعلا این پروژه کوچیک هستش و آنچنان فیلدهای خاصی نداره گفتم از دوستان نظرخواهی کنم تا این پروژه رو از ابتدا استاندارد طراحیش کنم. اگه انشاءالله بخوبی تموم شد میخوام بذارمش روی سایت برای دوستان.


اول از همه allownull ها باید درست کنی شما که نمی تونی 1 کد پرسنلی بدون نام داشته باشیممنونم ؛ چشم ؛ اصلاح شدن.


identity فیلد int برابر yes قرار بده تا خودش مقدار بده و ترتیب داشته باشه اتفاقا میخواستم همین کار رو بکنم ولی چون شماره پرسنل از 20000 شروع میشن بنظرت چیکار کنم؟ انجامش بدم؟ یا یه شماره ردیف به فیلدهام اضافه کنم؟

بهتر فیلد شماره بیمه هم از نوع unique تعریف کنی تا مقدار تکراری نگیره چشم ؛ نکته خوبی رو اشاره کردی.

فیلد برای شماره اضطراری قرار بده منظورت یه فیلد برای اضافه کردن یه تلفن دیگه قرار بدم؟


و 8 ان شاالله موفق باشی ! فهمدیم اون 2 ماه دیگه که تو سئوال اضافه کردن عکس به استیمول می گفتی کی هست ! ! ! :قهقهه: واقعا احسنت به هوش و ذکاوتت ؛ واقعا فکر نمی کردم یادت باشه اون موضوع رو ؛ بامزه گفتی؛ مرسی.:تشویق::گریه::گریه:
دوستان شکل جدید بانک رو مشاهده کنید:


108541

در خصوص شکستن جدول؛ فقط فیلد نظام وظیفه و مدرک رو جدا کنم؟ و بعدش باهمدیگه Join ؟ درسته؟
لطفا اگه توضیح دیگه ای در این زمینه هست ؛ بفرمایین.

sohil_ww
دوشنبه 14 مرداد 1392, 10:05 صبح
اتفاقا میخواستم همین کار رو بکنم ولی چون شماره پرسنل از 20000 شروع میشن بنظرت چیکار کنم؟ انجامش بدم؟ یا یه شماره ردیف به فیلدهام اضافه کنم؟

الان منم باید با رنگ قرمز جواب بدم !؟
اره میشه شما میتونی بگی که فیلد از 20000 شروع بشه و یکی یکی اضافه بشه


منظورت یه فیلد برای اضافه کردن یه تلفن دیگه قرار بدم؟

بله دقیقا


واقعا احسنت به هوش و ذکاوتت ؛ واقعا فکر نمی کردم یادت باشه اون موضوع رو ؛ بامزه گفتی؛ مرسی.
دوستان شکل جدید بانک رو مشاهده کنید

سپاسگذارم

و حالا بانک جدیدت

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

تاریخ تولدم همین قضیه پیروی می کنه

و قسمت های دیگه هم که همه می تونن خالی باشن ؟!

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

به نظر من جدول بیمه هم باید جدا باشه چون تو بیمه 1 سری فیلد ها هست که نیازن با نام در ارتباط باشه (البته شاید تو شرکت که برنامه طراحی می کنی کارمندا بیمه نباشن )


در خصوص شکستن جدول؛ فقط فیلد نظام وظیفه و مدرک رو جدا کنم؟ و بعدش باهمدیگه Join ؟ درسته؟
دقیقا درسته من استقلالیم آبی می نویسم



لطفا اگه توضیح دیگه ای در این زمینه هست ؛ بفرمایین.

چشم ! ! !

arash201
دوشنبه 14 مرداد 1392, 11:12 صبح
سلام به نظرم اگه کد پرسنلی رو bigint بزاری بهتره یا حتی تمام اونایی که int هستن bigint بشه بهتره و nvarchar ها هم از نوع max.و آدرس هم nvarchar(max) باشه چون varchar(max) کل فضا رو اختصاص می ده درصورتی که nvarchar(max) می تواند تعداد کاراکترهای زیادی را قبول کند و در ضمن به اندازه تعداد کاراکترهای استفاده شده و وارد شده فضا گرفته می شود.

veniz2008
دوشنبه 14 مرداد 1392, 12:08 عصر
از نوع Datetime گرفتم.

سلام.
بر روی فیلد تاریخ تولد چه کاری میخواید انجام بدید؟
اگر قصد انجام عملیات های ریاضی (مثل اضافه کردن 5 روز به تاریخ و ...) رو ندارید، بذارید (10)char یا (10)varchar باشه.اگر از نوع char یا varchar استفاده کردید حتما تمام تاریخ ها رو با یک فرمت واحد ذخیره کنید (مثلا همه روزها دو رقمی باشه مثلا 1 رو بصورت 01 ذخیره کنید).


سلام به نظرم اگه کد پرسنلی رو bigint بزاری بهتره یا حتی تمام اونایی که int هستن bigint بشه بهتره و nvarchar ها هم از نوع max.و آدرس هم nvarchar(max) باشه چون varchar(max) کل فضا رو اختصاص می ده درصورتی که nvarchar(max) می تواند تعداد کاراکترهای زیادی را قبول کند و در ضمن به اندازه تعداد کاراکترهای استفاده شده و وارد شده فضا گرفته می شود.
در طراحی سعی کنید کوچکترین واحد ممکن رو در نظر بگیرید.
یه متغیر int دارای 32 بیت هست که میتونه عدد مثبت 2,147,483,647 (2 میلیارد و 147 میلیون و 483 هزار و 647) رو برای شما ذخیره کنه.
درباره اشخاص این دغدغه وجود نداره فقط در مورد مبالغ مالی بزرگ هست که ممکنه با توجه به نوع پروژه از نوع های بزرگ تر (یا اعشاری مثل double) نیاز باشه استفاده کرد.
در مورد varchar و nvarchar تنها تفاوت اینه که نوع nvarchar از کاراکترهای فارسی (و کلا یونیکد) پشتیبانی میکنه و برای متن های فارسی باید از این نوع استفاده کرد. مورد بعدی اینه که نوع nvarchar دو برابر یک varchar فضا اشغال میکنه. پس بیهوده و بی دلیل نوع nvarchar رو انتخاب نکنید مگر اینکه با کاراکتر فارسی سر و کار داشته باشید.
در هر دو مورد varchar و nvarchar به میزانی که کاراکتر ذخیره میشه فضا هم گرفته میشه و مابقی فضا (در صورت باقی موندن) پس داده میشه.
موفق باشید.

sahel65
دوشنبه 14 مرداد 1392, 18:55 عصر
veniz عزیز ممنونم که تو این پست بهم پاسخ دادین. دوست داشتم نظر شما رو هم علاوه بر دوستان بدونم که خدا رو شکر نظرتون رو گذاشتین.
ببینید:

بر روی فیلد تاریخ تولد چه کاری میخواید انجام بدید؟
راستش رو بخواین فکر نکنم کار خاصی رو بخوام انجام بدم، آخه کاری نداره به استخدام و از این جور حرفها! ولی کلا یک سوال برام هست؛ در هر دو صورت چه بخوایم و چه نخوایم عملیات روی تاریخ انجام بدیم بهتره که به ترتیب از چه انواعی انتخاب بشن؟
مثلا سال استخدام خیلی مهمه چون هر 4 سال یک گروه بهشون تعلق می گیره، خب الان این رو من از نوع Datetime بگیرمش؟ چون میخوام تو محاسباتم ازش استفاده کنم.

.اگر از نوع char یا varchar استفاده کردید حتما تمام تاریخ ها رو با یک فرمت واحد ذخیره کنید (مثلا همه روزها دو رقمی باشه مثلا 1 رو بصورت 01 ذخیره کنید).
خیلی ممنونم از پیشنهادتون . خب الان یک سوال پیش میاد! اگه بخوایم کاربر نفهمه که ما دو تا فیلد تاریخ رو با انواع جداگانه در نظر گرفتیم بنظرتون راه خوبش همینکه فرمت دهی کنیم؟ یعنی چه از نوع char گرفتیم و چه از نوع Datetime طبق فرمتی که خودمون براش تعیین می کنیم بذاریم تاریخ رو وارد کنه؟ یعنی مثلا اینجوری:
##/##/####
نمیدونم منظورم رو درست رسوندم یا نه! منظورم ذخیره تمام تاریخ ها با یک فرمت واحد ولی نوع متفاوت! آیا اشکالی نداره اینجوری! خب قاعدتا فیلد تولد نباید تو محاسبات خاصی شرکت داده بشه دیگه درسته؟
بازهم ازتون ممنون و متشکرم.

veniz2008
دوشنبه 14 مرداد 1392, 19:41 عصر
راستش رو بخواین فکر نکنم کار خاصی رو بخوام انجام بدم، آخه کاری نداره به استخدام و از این جور حرفها! ولی کلا یک سوال برام هست؛ در هر دو صورت چه بخوایم و چه نخوایم عملیات روی تاریخ انجام بدیم بهتره که به ترتیب از چه انواعی انتخاب بشن؟
مثلا سال استخدام خیلی مهمه چون هر 4 سال یک گروه بهشون تعلق می گیره، خب الان این رو من از نوع Datetime بگیرمش؟ چون میخوام تو محاسباتم ازش استفاده کنم.

برای ما ایرانی ها که با تاریخ شمسی کار میکنیم شما در نهایت مجبورید که تاریخی رو که به کاربر نمایش می دید بصورت شمسی باشه. پس حتی اگه datetime هم بگیرید باز هم در نهایت باید به شمسی برگردونید و به کاربر نمایش بدید. پس اولویت اول رو بزارید به اینصورت که بصورت فارسی (رشته ای باشه نه datetime).
با توجه به حرف شما، نوع داده (10)cahr یا (10)varchar کاملا مناسبه و هیچ مشکلی رو در جستجوها نخواهید داشت. شما اگر بصورت 10 کاراکتری ذخیره کنید (مثلا 1392/05/14) هیچ مشکلی در جستجوها نخواهید داشت ولی اگر فرمت 10 کاراکتری رو رعایت نکنید مثلا اینطور 1392/5/14 ذخیره کنید موقع جستجو به مشکل برمیخورید. تاریخ رو چه کاربر خودش تایپ کنه چه از سیستم بخونید حتما باید به همین شکل ذخیره بشه.

اگه بخوایم کاربر نفهمه که ما دو تا فیلد تاریخ رو با انواع جداگانه در نظر گرفتیم بنظرتون راه خوبش همینکه فرمت دهی کنیم؟ یعنی چه از نوع char گرفتیم و چه از نوع Datetime طبق فرمتی که خودمون براش تعیین می کنیم بذاریم تاریخ رو وارد کنه؟ یعنی مثلا اینجوری:
##/##/####
نمیدونم منظورم رو درست رسوندم یا نه! منظورم ذخیره تمام تاریخ ها با یک فرمت واحد ولی نوع متفاوت! آیا اشکالی نداره اینجوری! خب قاعدتا فیلد تولد نباید تو محاسبات خاصی شرکت داده بشه دیگه درسته؟
بازهم ازتون ممنون و متشکرم.
فرمتی رو که عرض کردم مختص به نوع (10)char یا (10)varchar بود.
نوع داده ای datetime ، فرمت مخصوص به خوش رو داره (تاریخ میلادی + زمان).
اصلا دنبال این نباشید که دو نوع فیلد تاریخ داشته باشید. یک نوع فیلد برای شما کفایت میکنه.

sahel65
پنج شنبه 17 مرداد 1392, 11:08 صبح
پس اولویت اول رو بزارید به اینصورت که بصورت فارسی (رشته ای باشه نه datetime).
چشم ونیز عزیز، ممنونم از راهنمایی خوبت.
دوستان سعی کردم آخرین تغییرات و جداول رو براتون بیارم ؛ آیا درست کار کردم؟ میشه یکبار دیگه نگاه کنین؟
ببینید این ساختار جدول من پس از راهنمایی دوستان و اعمال کلیه تغییرات مورد نظر هستش:


108741

تقریبا ساختار فوق درسته و فعلا با همون میرم جلو.
اما بعضی دوستان گفتند که جدول رو بشکنم به چند تا جدول دیگه؛ این کار رو کردم ببینید آیا درست انجامش دادم یا نه؟ ضمنا بعد از اینکه شکستمش باید فیلدهای مربوطه رو از جدول بالا حذف کنم دیگه درسته؟ (بعدش join و مراحل مرتبط) چون الان از جدول بالا حذف نکردمشون.

ب) این هم ساختار جدول نظام وظیفه:

108743




و اینهم اطلاعاتی که داخلش ریختم و فعلا از نظر وضعیتها کافیه:




108739




ج) این هم جدول آخرین مدرک تحصیلی یا همون تحصیلات :


108740


و اینهم اطلاعاتی که داخلش گذاشتم:


108742

خب حالا مجددا سوالم رو مطرح می کنم؛ بیام و فیلدهای مورد نظر رو که براشون جدول ایجاد کردم، از جدول پرسنل (اولی) حذف کنم. درسته؟
ممنون میشم راهنماییم کنید تا اگه بتونم امروز بشینم و اطلاعات کارمندا رو وارد کنم.


http://barnamenevis.org/images/misc/pencil.png

sohil_ww
پنج شنبه 17 مرداد 1392, 11:27 صبح
ب) این هم ساختار جدول نظام وظیفه:

کار مندا فقط تک جنسیتی هستن ؟! خودت که می دونی خانم ها از سربازی معافن اونم از نوع پزشکیش (:قهقهه:)شوخی می کنم قصد توهین به کسی نیست پس شما باید یک تدبیرم برای این موضوع بسنجی


ج) این هم جدول آخرین مدرک تحصیلی یا همون تحصیلات :
خیلی خوبه


بیام و فیلدهای مورد نظر رو که براشون جدول ایجاد کردم، از جدول پرسنل (اولی) حذف کنم. درسته
شما بیا فیلد جدول نظام وضیفتونو برابر شناسه اون جدول کنید و همین کارم برای بیمه و مدرک تحصیلی انجام بدید


حالا منم 1 سئوال دارم من چیکار کنم رنگ ستاره هام عوض نشه ؟! ؟! ؟!

RIG000
پنج شنبه 17 مرداد 1392, 18:49 عصر
Gender - True/false for employee Type is boolean

veniz2008
پنج شنبه 17 مرداد 1392, 21:47 عصر
چشم ونیز عزیز، ممنونم از راهنمایی خوبت.
دوستان سعی کردم آخرین تغییرات و جداول رو براتون بیارم ؛ آیا درست کار کردم؟ میشه یکبار دیگه نگاه کنین؟
ببینید این ساختار جدول من پس از راهنمایی دوستان و اعمال کلیه تغییرات مورد نظر هستش:


108741

تقریبا ساختار فوق درسته و فعلا با همون میرم جلو.
اما بعضی دوستان گفتند که جدول رو بشکنم به چند تا جدول دیگه؛ این کار رو کردم ببینید آیا درست انجامش دادم یا نه؟ ضمنا بعد از اینکه شکستمش باید فیلدهای مربوطه رو از جدول بالا حذف کنم دیگه درسته؟ (بعدش join و مراحل مرتبط) چون الان از جدول بالا حذف نکردمشون.

ب) این هم ساختار جدول نظام وظیفه:

108743




و اینهم اطلاعاتی که داخلش ریختم و فعلا از نظر وضعیتها کافیه:




108739




ج) این هم جدول آخرین مدرک تحصیلی یا همون تحصیلات :


108740


و اینهم اطلاعاتی که داخلش گذاشتم:


108742

خب حالا مجددا سوالم رو مطرح می کنم؛ بیام و فیلدهای مورد نظر رو که براشون جدول ایجاد کردم، از جدول پرسنل (اولی) حذف کنم. درسته؟
ممنون میشم راهنماییم کنید تا اگه بتونم امروز بشینم و اطلاعات کارمندا رو وارد کنم.



این کار به صلاح نیست که جدول اصلی رو در این مورد بشکونید و زیر جدول براش ایجاد کنید. با این کار فقط تعداد join ها رو زیادتر میکنید. در همین حد که الان طراحی کردی خوبه. یعنی یه جدول برای نظام وظیفه داری. حالا باید کد وضعیت نظام وظیفه رو در جدول اصلی قرار بدی (حواست باشه متن رو قرار ندی مثلا ننویسی"معاف" بلکه کدش رو یعنی 2 رو قرار بدی). پس بزار همه موارد داخل همون جدول اصلی باقی بمونه ولی کدها رو داخلش درج کن نه متن.
در مورد مدرک تحصیلی، میخوای به چه صورتی ذخیره کنی؟ فقط بگی مثلا "کارشناسی" ؟ یا "کارشناسی ارشد" ؟ یا میخوای رشته و گرایش هر شخص رو هم مشخص کنی؟
اگر میخوای علاوه بر مدرک، رشته و گرایش هم داشته باشی نیاز داری که برای این 3 مورد 3 جدول داشته باشی.