# پایگاه‌های داده > SQL Server > T-SQL > تحلیل و طراحی بانک اطلاعات >  کاربرد ارتباط یک به یک چیست ؟

## milad.biroonvand

می خواستم بدونم کاربرد ارتباط یک به یک چیه ؟ من تا حدودی این کاربرد رو می دونم . اگر میشه ، این کاربرد رو با مثال ذکر کنید .

----------


## Salah Sanjabian

سلام.
اگه از نظر OOP به این مسئله نگا کنی وراثت رو میشه با این نوع ارتباط بیان کرد. یه مثال میزنم . فرض کن تو یه مدرسه یه سری دانش آموز داری که یه سری خصوصیات مشترک دارن(نام و .........)و یه سری خصوصیات دیگه داری که فقط مخصوص یه عده خاصه مثل تیم فوتبال دانش آموزان . حالا شما میای یه جدول دیگه میسازی به اسم تیم که یه ارتباط یک به یک بین این جدول و جدول دانش آموز میخوره.که هر دانش آموزی تو جدول تیم فقط یه بار تکرار میشه.

----------


## milad.biroonvand

سلام

من هم همین نظر رو داشتم ، و میخواستم مطمئن بشم . دقیقا وراثت  رو به تصویر میکشه . در تاپیکی که پایین نوشتم ، کاربرد رابطه ی چند به چند رو هم نوشتم ، در این باره نظری نداری ؟

https://barnamenevis.org/showthread.php?300600-

----------


## m0hammad_01

> می خواستم بدونم کاربرد ارتباط یک به یک چیه ؟ من تا حدودی این کاربرد رو می دونم . اگر میشه ، این کاربرد رو با مثال ذکر کنید .


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

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

اینم یه مثال از توجیح فنی که من به استناد به این توجیح میگم که ارتباط یک به یکم درسته:

تو سیستم دانشگاه در نظر بگیر. دو تا جدول به نامهای دانشجو و وام دانشجویی
ارتباط این دو یک به یک هست.(با فرض اینکه هر دانشجو فقط یک بار میتونه وام بگیره!!! )به این صورت: هر دانشجو یک وام گرفته است و هر وام توسط یک دانشجو گرفته شده است.
حالا فکر کنید من این دو جدول رو یکی بگیرم.خیلی از دانشجو ها هستن که اصلا وام نمیگیرن!!! اونوقت چه مشکلی پیش میاد؟
تعداد زیادی از ستونها(فیلد)ها برای دانشجو خالی میمونه که باعث میشه مقادیر null جدول من خیلی بالا بره.
پس من دو جدول رو همون جدا میگیرم تا null هام زیاد نشه.این میشه توجیح فنی من.

سوالی بود در خدمتم.

----------


## Xcalivorse

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

----------


## sajjadrazmi

سلام

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

----------


## AminSobati

غیر از مسائل طراحی که دوستان به خوبی اشاره کردند، رابطه یک به یک دلیل فنی در SQL Server داشته که الان دیگه به این دلیل اعتنا نمیکنیم:
سابقا جداولی که دارای فیلدهای حجیم (مثل تصاویر و ..) بودند از جدول اصلی منفک میشدن تا بشه جدول رو در آدرس خاصی از دیسک قرار داد. مثلا هر دانشجو، تصویرش در جدول جداگانه قرار میگیره. این جداسازی به خاطر تفکیک اطلاعات قابل جستجو از اطلاعات غیر قابل جستجو (تصاویر) و نهایتا Performance کاربرد داشته. اما با پیشرفت SQL Server و معرفی Filegroup شما میتونین فیلدهای حجیم رو همون جدول اصلی داشته باشین اما به کمک Filegroup محل ذخیره سازی رو کاملا جدا کنید. لذا اگر مسئله طراحی و OOP رو کنار بگذاریم، برای فزایش سرعت دیگه سراغ ارتباط یک به یک نمیریم.

----------

