تا %60 تخفیف خرید برای 6 نفر با صدور مدرک فقط تا
00 00 00
در توسینسو تدریس کنید

آموزش کوئری (Query) گرفتن از SQL قسمت 4 : کلیدهای اصلی و فرعی

در مقاله قبلی از همین سری مقالات در خصوص مفاهیم اصلی موجود در Table ها از قبیل Column و Row و Field صحبت کردیم .اما Object ها و مفاهیم موجود در طراحی Table ها در پایگاه داده کم نیستند و اینها تنها موارد اولیه ای بودند که با هم بررسی کردیم ، در این مقاله قصد داریم به مفاهیم مهمتری بپردازیم ، اشیاء و مفاهیمی از قبیل Constraint ها ، Trigger ها ، کلید های اصلی ای Primary Key ها و کلید های خارجی یا Foreign Key ها ، اگر فرصت شد در همین مقاله به بررسی مفاهیم ارتباطات بین Table ها یا Table Relationship هم خواهیم پرداخت اگر هم که نرسیدیم به امید خدا در مقاله بعدی حتما به این موارد خواهیم پرداخت.

مفهوم Constraint یا محدودیت در Table های SQL سرور

یکی از مواردی که خیلی برای ما در طراحی پایگاه های داده مهم است این است که مطمئن شویم که اطلاعاتی که وارد Table های ما می شوند معتبر باشند ، اینجا دقیقا محلی است که مفهوم Constraint یا محدودیت به کار ما می آید. یک مثال را با توجه به جدولی که مقالات قبلی هم با آن کار کردیم صحبت می کنیم ، گفتیم که ما با استفاده از تعیین Data Type یا نوع داده می توانیم تعیین کنیم که در این Column فقط مقادیری برای مثال از نوع Date یا Date//Time وارد شود و مقادیر دیگر نتواند وارد شود ، تا اینجای کار مشکلی نیست و همین تعیین Data Type کار ما را راه می اندازد اما زمانیکه صحبت از این می شود که ما می خواهیم در فلان Column یا فلان Row داده ای از همین نوع داده نتواند از تاریخ تعیین شده ای عقبتر درج شود بحث Constraint ها پیش می آید ، در واقع Constraint ها قوانین درج داده در Database ها هستند . برای مثال فرض کنید برای تاریخ استخدام یا تاریخ شروع به کار یا حتی تاریخ سابقه بیمه نباید افراد مجاز تاریخ را از زمان تعیین شده عقب تر وارد کنند و این محدودیت بایستی وجود داشته باشد. یا شما Row ای دارید که حتما باید تاریخ امروز در آن وارد شود و تاریخ دیگری قابل درج در آن نباشد. با استفاده از Constraint ها شما می توانید چنین محدودیت هایی را برای row ها یا Column های خاص خود در نظر بگیرید.

مفهوم Trigger در Table های SQL سرور

با اینکه Constraint ها خیلی خوب هستند اما قابلیت ها و عملیات های آنها محدود شده است ، در حقیقت ما کار زیادی نمی توانیم با Constraint ها انجام دهیم . خوب تصور کنید یک کار تقریبا پیچیده تر را می خواهیم انجام دهیم ، فرض کنید که می خواهیم اگر کاربر یک عملیات خاص را انجام داد و یا اینکه اگر یکی از فیلد های Table تغییر کرد ، یک Filed دیگر از یک Table دیگر مقادیرش تغییر کند ، اینجا دقیقا محلی است که از Trigger ها استفاده می کنیم. Trigger ها یک کد اجرای خاص را با توجه به تغییراتی که بر روی داده ها انجام می شود اجرا می کنند ، برای مثال فرض کنید که کاربری داده ای را در اطلاعات فروش ثبت می کند و ما می خواهیم در یک Table دیگر اطلاعات مربوط به بازرسی این کالا را داشته باشیم و به همین دلیل با استفاده از یک Trigger کاری می کنیم به محض اینکه کاربر ثبت فروش را انجام داد ، اطلاعاتی مربوط به آن کالا در جدول بازرسی نیز ثبت شود ، این دقیقا کاری است که Trigger برای ما انجام می دهد. البته تعاریف دیگری نیز از Trigger وجود دارد که امیدوارم با توجه به اینکه تعاریف درستی از این مورد در وب سایت های فارسی وجود ندارد حق کپی رایت انجمن تخصصی فناوری اطلاعات ایران و بنده حقیر را حداقل رعایت کنید و بعد مطلب را کپی کنید. در تعریفی دیگر از Trigger می توانیم بگوییم که Trigger ها یک نوع خاص از Stored Procedure ها هستند که کدهای تعیین شده ای را با توجه به یک Action یا عملیات خاص بر روی یک table تعیین شده انجام می دهند ، عملیاتی مانند INSERT یا DELETE یا UPDATE یا هر چیز دیگری در داده های ما ، Trigger ها جزو Object های یک Database محسوب می شوند و یه یک Table متصل می شوند و بصورت خودکار مانند یک اسکریپت اجرا می شوند.

مفهوم Primary Key در Table های SQL سرور

تقریبا همه Table هایی که شما در یک Database ایجاد می کنید دارای یک مفهوم هستند به نام کلید اصلی یا Primary Key ، کلیدهای اصلی ای Primary Key ها در واقع شناسه های منحصر به فردی هستند که هر Row یا رکورد موجود در Table شما را مشخص می کنند. ساده ترین مثال یعنی اینکه Primary Key در یک Table برای هر رکورد منحصر به فرد است ، اگر Database نیروی انسانی یک سازمان را در نظر بگیرید شناسه ملی یا Social Security Number افراد می تواند به عنوان Primary Key در جدول محسوب شود زیرا تنها یک فرد می تواند این شماره را به خود اختصاص دهد ( البته من در ایران این موضوع رو تایید نمی کنم ولی ما میگم هست شما هم بگین هست خوبیت نداره ) . برای اینکه درک بهتری از موضوع Primary Key داشته باشید جدول همیشگی زیر را در نظر بگیرید ، در جدول زیر بهترین گزینه برای انتخاب به عنوان Primary Key کدام گزینه می تواند باشد ؟ ممکن است چندین نفر مشتری به نام Mohammad و نام خانوادگی Nasiri وجود داشته باشند ، بنابراین این گزینه نمی تواند به عنوان Primary Key باشد ، تاریخ عضویت یا Join Date هم نمی تواند شناسه منحصر به فردی باشد زیرا ممکن است در یک روز ده ها مشتری جدید به سیستم اضافه شود ، طبیعی است که State هم نمی تواند به عنوان Primary Key باشد زیرا فقط کرج میلیون ها نفر جمعیت دارد ، بهترین گزینه در جدول زیر برای انتخاب به عنوان Primary Key گزینه Customer ID می باشد که بصورت منحصر به فرد می تواند یک رکورد را برای ما مشخص کند.در تصویر زیر با رنگ قرمز Primary Key جدول مشخص شده است.

منظور از Primary Key و Public Key در SQL سرور

مفهوم کلید خارجی یا Foreign Key در Table های SQL سرور

یکی دیگر از مفاهیمی که در برگیرنده بحث کلید است به نام Foreign Key یا کلید خارجی معروف است. در خصوص هر یک از این مفاهیمی که توضیح دادیم در آینده بصورت مفصل صحبت خواهیم کرد بنابراین اصلا نگران نباشید. اما به سراغ بحث اصلی برویم ، کلید خارجی یا foreign Key برای ارتباط برقرار کردن یا ایجاد Relationship بین Table ها مورد استفاده قرار می گیرد ، این مبحث جزو مهمترین مباحث در طراحی Database ها می باشد. یکی از مهمترین مسائلی که در طراحی پایگاه های داده بایستی در نظر گرفته بشود بحث جلوگیری از به وجود آمدن تکرار داده ها است. برای مثال اگر شما Database ای دارید که در آن اطلاعات مشتریان قرار دارد و از طرفی Database دیگری دارید که در آن سفارش های مشتریان وجود دارد نباید داده های تکراری در خصوص مشتریان در این Database ها وجود داشته باشد اما در این میان قاعدتا مشتریان باید به اطلاعات سفارش ها و سفارش ها به مشتریان مورد نظر مرتبط باشند. اینجا دقیقا زمانی است که کلید خارجی یا Foreign Key به کمک ما می آید. در واقع Foreign Key یک Table یا بهتر بگوییم یک Column است که به Primary Key یک Table دیگر اشاره می کند و به این ترتیب ارتباط بین دو Table برقرار می شود. بنابراین در مثال ما ، ابتدا یک Column در جدول سفارش ها ایجاد می کنیم و آن را به عنوان کلید خارجی یا Foreign Key قرار می دهیم و این جدول را به Primary Key موجود در Table ای که Customer ها یا مشتریان در آن قرار دارند مرتبط می کنیم. ITPRO باشید.

نویسنده : محمد نصیری

منبع : جزیره بانک های اطلاعاتی وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

نظر شما
برای ارسال نظر باید وارد شوید.
4 نظر
افرادی که این مطلب را خواندند مطالب زیر را هم خوانده اند