تا آ
تا آن زمان که نظریه ی relational database توسط Dr.Codd(محقق در IBM ،1960)مطرح بشه، برای ذخیره، Update و Delete کردن data مشکلات زیادی وجود داشت.
هدف Dr.Codd این بود که مدلی داشته باشد که در آن data ها بهم مرتبط باشند، تا آن زمان همه ی data های ذخیره شده، مشکلات اساسی داشتند.
برای مثال قبل از این نظریه برای Update کردن یک data در جدول زیر(مثلا آدرسBioInformatics ) با مشکل مواجه می شویم، و باید آدرس ردیف اول و سوم رو تغییر دهیم.
خب، به فرض بجای 2 ردیف، 100 ردیف داشتیم که department_name آنها BioInformatics بود. پس برای تغییر یک data، کلی وقت صرف می شد. و احتیاج به یک برنامه بود که همه ی dep_address ها رو تغییر دهد.
یا مثلا برای Delete کردن یک ردیف که contact_title آن employee است، همه ی ردیفهایی که employee هستند، delete می شوند.
برای

برای رفع این مشکلات، باید روشهایی رو برای پیدا کردن و حذف کردن آنها پیدا کنیم، این پروسه normalization نام دارد و فهمیدن آن، برای کار با relational database ضروری است.
پروسه normalization 3 قسمت دارد.
1- 1st Normal Form:
قرار دادن data در این قسمت، بسیار راحت است. Data باید در ساختار یک table و طبق موارد زیر قرار بگیرد.
Cell -1 هر ستون شامل شده از یک هسته، این به آن معناست که در هر cell جدول یک value قرار می گیرد.(برای مثال، نباید از array استفاده کرد.)
2- هر ستون باید اسم خاص خودش رو داشته باشه.(نباید مشابه باشند.)
3- هر table باید یک سری value داشته باشه که به صورت منحصر به فرد، ردیف رو تعیین می کند.(این value،به عنوان primary key شناخته می شود.)
4- هیچ دو ردیفی نباید یکسان باشند.
5- هیچ data ای نباید تکراری باشد.
خب، برای مثال، در table زیر، مشخصات contact (id, name, tell, email) باید از مشخصات department جدا باشه. به همین دلیل، این table رو به 2 table تقسیم می کنیم.

حالا، برای مشخص کردن primary key برای 2 تا table، باید در نظر داشته باشیم که value هایی را انتخاب کنیم که unique باشند.(بهتر است که primary key، ID هر table باشد.)
قسمت بعد، در مورد 2nd,3rd Normal Form و relationship ها توضیح می دهیم.
ادامه مطلب : http://www.tju.ir/ace

Access Modifiers :
ما می تونیم با اضافه کردن Modifier ها به ابتدای تعریف یک Class یا Member ، نوع دسترسی به اون رو تعیین کنیم ، انواع Modifier ها در C# عبارتند از :
1 – Public : به نهادهای خارج از namespace اجازه می دهد که به member های Class دسترسی پیدا کنند.
2 – Private : Method ها و متغیرها فقط در داخل همان Class در دسترس هستند.
3 – Protected : Code رو فقط در همان Class و Subclass هایی که ازش مشتق شده اند قابل دیدن می کند.
4 – Internal : قابل دسترسی برای فایل های اسمبلی
5 – Protected Internal : قابل دسترسی برای فایل های اسمبلی و SubClass های کلاس
Instantiating Classes :
راحت ترین راه برای فهمیدن اینکه چجوری Class را در کدمان استفاده کنیم ، اینه که Class رو به عنوان نوع جدیدی از متغیرها تصور کنیم. ما قبلا با Variable Type های از پیش تعیین شده (int/float/...) کار کردیم. با تعریف کردن کلاس Authenticator ، در واقع ما به Compiler گفته ایم که یه Type جدید از متغیرها داریم ، به نام Authenticator . عبارت تعریفی Class ، همه ی چیزهایی که Compiler باید بدونه تا این Variable Type رو تجزیه و تحلیل کنه رو شامل می شه . ( همانطوری که می دونه Double از اعداد اعشاری در فرمت خاصی تشکیل شده ) در اینجا ما به Compiler گفتیم که متغیر Authenticator شامل String می شه و به ما اجازه بده تا Method های IsPasswordCorrect و ChangePassword رو فراخوانی کنیم.
ساختن متغیر (یک object) توسط کاربر رو Instantiating می گن . چون در واقع ما یک object instance ساخته ایم. Instance ، یک نمود ساده و خاص object است . بنابراین ما می تونیم Authenticator object رو درست مثل یک متغیر استفاده کنیم . مثال زیر رو ببینین :

کلاس MainEntryPoint مثل کلاس Authenticator می تونه member های خودش رو داشته باشه (Fieldها Method ها و ....) ما این رو واسه این انتخاب کردیم که متد Main رو در داخلش قرار بدیم ، اینجوری کلاس Authenticator می تونه سرجای خودش بشینه و در برنامه ی دیگه ای هم جداگانه استفاده بشه ( با Copy-Paste کردن!)
Syntax C# لازم دونسته که حتما یه Main Class داشته باشیم.
Authenticator myAccess = new Authenticator();
حالا ما یک object Authenticator جدید درست کردیم . ( نگران new =" " نباشین چون مربوط به Syntax است! ) اینجوری هم می شه نوشت :
Authenticator myAccess;
( البته به این شکل object ای درست نمی شه و فقط یک Reference به اون object ایجاد می شه )
برای فراخوانی یک Method خاص از یک object از (.) استفاده می کنیم :
done = myAccess.ChangePassword(“”, “MyNewPassword”);
حالا ما متد ChangePassword رو در object myAccess فراخوانی کردیم و خروجی رو داخل متغیر بولی done ریختیم . حواستون باشه که این غلطه و Compile Error می ده :
string myAccessPassword = myAccess.password;
Password field ، Private بوده بنابراین Code های بیرون Authenticator بهش دسترسی ندارن . اگر Public اش می کردیم ، اون وقت کار می کرد و خروجی Password می رفت تو متغیری از جنس String .
یادتون باشه که اگه از بیرون کلاس به member هاش دسترسی دارین ، می تونین مستقیما واردش کنین.
فهمیدین ؟ تا اینجا ما در کدمان هیچ چیز جدیدی ارائه ندادیم و فقط خواستیم قوانین کوچکی از Class ها رو بگیم . در قسمت بعد از Using Static member ها خواهیم گفت .