ورود

View Full Version : مشکل در Relation یک به چند



vbiman
شنبه 23 دی 1391, 19:57 عصر
سلام
من مبتدی هستم و در Relation کردن جداولم دچار مشکل شدم من می خوام برنامه دفترچه تلفن بنویسم و جداولم به این صورت است :


http://up.iranblog.com/images/c2k2vcj6ln5qe5oonq43.png (http://up.iranblog.com/)

و می خوام که شماره تلفن ها از جدول TELL فراخوانی بشه من برای اینکه هر شخص یک شماره را تکراری وارد نکنه گفتم TellID و Tel کلید اصلی باشن چون با یک ID شماره تکراری وارد نشه، من برای Relation کردن بین این دو جدول آمدم PersonID با TellID و Tel ارتباط دادم ولی این پیغام نشون داده میشه :


http://up.iranblog.com/images/q6ssb54lvw9pk9d6aq1v.png (http://up.iranblog.com/)

حالا من باید چکار کنم که شماره ها از جدول person قابل دسترسی بشه و به چه صورت باید relation بین این دو جدول را برقرار کنم، لطفاً راهنمایی بفرمائید .

محمد سلیم آبادی
شنبه 23 دی 1391, 21:30 عصر
مبتدی جان سلام،
در جدول Tells شما، شماره تلفن، کدفرد، و ... را باید ذخیره داشته باشین. ترکیب شماره تلفن و کد فرد باید منحصر بفرد باشه (که کاندیدی برای کلید اولیه جدول هم هست) به این معنا که یک شماره تلفن برای یک فرد دوبار درج نشه، کد فرد کلید خارجی هست.

جدول Person رو به این شکل ایجاد میکنیم:
create table Person
(person_id int not null primary key,
first_name nvarchar(15) not null,
last_name nvarchar(15) not null,
);

حالا نوبت به جدول Tells میرسه:
create table Tells
(row_id int not null identity(1, 1),
person_id int not null foreign key references Person(person_id),
tell_number varchar(12) not null,
,...,
unique(person_id, tell_number),
primary key(row_id),
);
در اینجا ستون row_id کلید جدول هست. ترکیب دو ستون کدفرد و شماره تلفن فرد منحصر بفرد هست. ستون کدفرد ارجاع داده شده به ستون کدفرد در جدول Person.

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

موفق باشید.

vbiman
شنبه 23 دی 1391, 22:34 عصر
جداولم در نهایت می خوام به این صورت در بیاد :


http://up.iranblog.com/images/4ddsctujt3338dktruw.png (http://up.iranblog.com/)

در اینجا شما در جدول Tells :
row_id کلید اصلی
person_id کلید خارجی
و
tell_number کلید خارجی گرفتین درسته؟
و در آخر person_id در جدول Tells ارجاع داده شده به Person_id در جدول Person ، این کار عمل relation بین دو جدول میشه ؟

محمد سلیم آبادی
شنبه 23 دی 1391, 22:44 عصر
tell_number کلید خارجی گرفتین درسته؟
نه. شماره تلفن ارتباطی به جدول Person نداره که بخواهیم بین این دو جدول بر اساس این ستون ارتباط ایجاد کنیم.
ترکیب دو ستون person_id و tell_number کلید یکتا هست.

و در آخر person_id در جدول Tells ارجاع داده شده به Person_id در جدول Person ، این کار عمل relation بین دو جدول میشه ؟
همینطور.

جداولم در نهایت می خوام به این صورت در بیاد :
شما بایستی یک جدول دیگه (سومی) رو در نظر بگیرین که دارای دو ستون TypeID و TypeName باشه.
و از کدنوع در جدول Tells استفاده بشه و یک قید کلید خارجی هم براش درنظر گرفته بشه که ارتباطی باشه با جدول سوم.