sql server چیست؟ از لحاظ لغوی به معنای پایگاه داده می باشد. پایگاهی که در آنجا ذخیره سازی و مدیریت داده صورت می گیرد.

ذخیره سازی داده و مدیریت داده دو بحث متفاوت می باشد که ان شاءالله در این درس تا حد زیادی با این موارد آشنا خواهید شد.

 بسیاری از Application هایی که شما می نویسید (چه Web Base و چه Windows Base) معمولا بر خلاف برنامه های تجاری، برنامه هایی هستند که با پایگاه داده کار می کنند. مثل برنامه های حسابداری، برنامه های مالی، برنامه های ثبت نام آموزش دانشگاه، فروشگاه های الکترونیکی، شبکه های اجتماعی و ...

همه اینها دارای پایگاه داده می باشند و می توانند از این اطلاعات برای بازاریابی، Marketing، Meta Data و موارد دیگر استفاده کنند.

 

مفاهیم اولیه:

SQL (Standard Query Language): یک زبان استاندارد برای پرس و جو می باشد. SQL زبان مشترک بین پایگاه های داده (مانند Oracle، SQL Server، MySQL و ...) می باشد.

SQL Server: نرم افزار شرکت مایکروسافت می باشد که از زبان SQL استفاده می کند.

Query: به معنی پرس و جو می باشد.

مثال: فرض کنید که یک جدولی داریم که اطلاعات دانشجویان ذخیره شده است. یکی از مسئولان دانشگاه از مدیر سیستم درخواست میکند که اطلاعات دانشجویان ورودی مهر 90 که در در رشته نرم افزار در حال تحصیل هستند و ساکن شهر تهران هستند را گزارش کن. این یک سوال است و گزارش که برگردانده می شود یک جواب می باشد. به این پرسش و جواب Query گفته می شود.

DBMS (Database Management System): تمامی بانکهای اطلاعاتی یک Engine (به معنی موتور) دارند که به آن DBMS گویند که وظیفه مدیریت پایگاه داده برعهده این بخش می باشد. در واقع قلب اطلاعاتی ما اینجاست. اطلاعات اینجا ذخیره نمی شود و در یکسری فایل های پایگاه داده ذخیره می شود که این فایل ها تحت مدیریت DBMS هستند. DBMS اطلاعات را در برابر دسترسی غیرمجاز، کپی و حذف محافظت میکند.

در سمت دیگر کاربر (شخص یا برنامه کاربردی) را داریم که باید درخواستش را به DBMS برساند.

نمونه ای از درخواست:

همه اطلاعات را از جدول Students برگردان.                 SELECT * FROM StudentsInfo

پس از ارائه درخواست، یک سری مجموعه جواب در قالب یک سری سطرهای اطلاعاتی به کاربر برگردانده می شود.

به مجموعه این فعالیتها Query یا پرس و جو گفته می شود.

Database شامل قسمتهای مختلفی است که اصطلاحا به آن Database Objects و یا عناصر پایگاه داده می گویند. این عناصر شامل diagrams، Tables، Views، Functions، Stored-Procedures، Logins و ... می باشد و در همه پایگاه های داده هم وجود دارند.

یکی از مهمترین عناصر Table یا جدول می باشد که کارمان را از آن شروع خواهیم کرد. در واقع محل اصلی ذخیره سازی داده ها جدول می باشد.


به عنوان مثال می خواهیم اطلاعات تعدادی دانشجو را ذخیره کنیم.

TelCode

Population

City

LastName

FirstName

StuID*

021

5000

Tehran

Alavi

Ali

1

021

5000

Tehran

Moradi

Reza

2

0151

100

Behshahr

Samani

Sara

3

به این مجموعه Table می گوییم. به هر ستون این مجموعه Column یا Field و به هر سطر Row یا Record می گویند.

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


انواع کلید: کلید اصلی (Primary Key) و کلید خارجی (Foreign Key). هر جدول باید کلید اصلی داشته باشد. هر جدول می تواند یک مجموعه کلید اصلی داشته باشد. در جدول بالا ستون StuID به عنوان کلید مشخص شده است. در زمان طراحی، ستون یا ستون های کلید اصلی باید در ابتدا قرار داده شود. یعنی در لیست ستون ها باید در اول جدول قرار بگیرند.

کلید اصلی (Primary Key): ستونی است که مقدارش در هر سطر منحصر به فرد (Uniqiue Identifier) است به عبارتی ستونی است که هیچ دو سطری در آن ستون مقدار یکسان نداشته باشند.

مثلا در جدول زیر رکوردی که با رنگ قرمز مشخص شده است قابل اضافه کردن در جدول نیست چون در ستون StuID نمی توان دو مقدار یکسان را وارد کرد.

http://reza9710.persiangig.com/image/11-13-2012%2011-29-49%20PM.png

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

اگر StuID و FirstName هر دو به عنوان کلید اصلی انتخاب شوند آیا می توان موارد زیر را به جدول بالا اضافه کرد؟

درست 1         Mahdi           ….                    

درست        1         Ahmad         ….

غلط          2         Reza            ….

درست       2         Neda            ….

 

کلید خارجی (Foreign Key): کلید خارجی صفتی در جدول است که در جدول دیگر نقش کلید اصلی را بازی کند. کلید خارجی ارتباط بین دو جدول را برقرار می کند. کلید خارجی بر خلاف کلید اصلی می تواند تکراری یا Null باشد و ممکن است در یک جدول بیشتر از یک کلید خارجی وجود داشته باشد.  جدول شامل کلید خارجی را گاهی جدول فرزند و جدولی که به آن ارجاع دارد را جدول والد می نامند.
http://reza9710.persiangig.com/image/11-13-2012%2011-37-52%20PM.png
این جدول از لحاظ طراحی درست نیست. چون دارای افزونگی است. به عنوان مثال ما در جدول بالا دو رکورد داریم که مربوط به دانشجویان تهرانی می شود. اسم شهر، جمعیت و کد شهر برای هر کدام از دانشجویان تکرار می شود. مشکل دیگری که وجود دارد این است که در صورت تغییر در مشخصات مربوط به شهر تهران مجبور می شویم برای تک تک دانشجویان این تغییر را ایجاد کنیم. مشکل دیگری هم وجود دارد و آن این است که از نظر طراحی هم این جدول صحیح نیست. چون اطلاعات شهر و اطلاعات دانشجو دو چیز مستقلی هستند و لزوما نباید این اطلاعات را در کنار هم قرار داد. بلکه می توانیم اینها را در دو جدول جداگانه ایجاد و با هم مرتبط کنیم. به عنوان یک اصل در طراحی پایگاه داده هر جدولی که ماهیت مستقلی دارد باید جداگانه طراحی شود.http://reza9710.persiangig.com/image/11-13-2012%2011-41-00%20PM.pnghttp://reza9710.persiangig.com/image/11-13-2012%2011-41-16%20PM.png
ستون هایی که یک جدول را به کلید اصلی جدول دیگر مرابط می کنند کلید خارجی نامیده می شود. در یک جدول میتوانیم یک یا بیش از یک کلید خارجی داشته باشیم.

برای کار با پایگاه داده شرکت مایکروسافت نرم افزاری به نام SSMS (SQL Server Management Studio) را ارائه کرده است که در این دوره از این نرم افزار استفاده خواهیم کرد.

http://reza9710.persiangig.com/image/DB-Session-01-G3%5B1%5D.JPG

ساختار SQL Server به گونه ای است که معمولا در محیط های شبکه ای و Client Server اجرا می شود. اگر ما شبکه ای داشته باشیم (اینترنت یا اینترانت) و یک کامپیوتر سرور داشته باشیم مثلا DB Server که روی آن نرم افزارSQL Server  نصب کرده باشیم در واقع جزیی از DBMS خواهد بود. اگر شما این سرور را به شبکه متصل کنید از طریق این شبکه Client ها می توانند به سرور متصل شوند.