PDA

View Full Version : سوال: مشکل با Diagram و چند کلید



sinaone1
شنبه 09 مرداد 1389, 19:51 عصر
سلام دوستان
من یه مثال ساده می زنم تا کامل متوجه شید
مثال یه دیتابیس که تشکیل شده از دو تیبل


Student

ID : Primary Key
Name : Primary Key
Familly : Primary Key


StudentMark

ID : Primary Key
Number


خوب حالا می خوام یه diagram درست کنم که تیبل پدر student و تیبل فرزند StudentMark است
اما مشکل اینجاست که من در تیبل student 3 تا کلید دارم ولی در StudentMark فقفط همون ID و وقتی که می خوام این دو رو به هم متصل کنم زمانی که Close رو میزنم خطا میده که باید برای دوکلید دیگه هم دو تا کلید متناظر در تیبل StudentMark انتخاب کنی
حالا من باید چی کار کنم چون فقط همین کلید باید بین دو تا تیبل کلید خروجی بشه
البته من یه مثال زدم و در اصل توی پروژه اصلیم تیبل ها می شه گفت همین مشکل رو دارند

ممنون:گریه:

محمد سلیم آبادی
شنبه 09 مرداد 1389, 21:29 عصر
سلام،
مشکل طبیعی هست. وقتی کلید ترکیبی/Composite هست باید کلید خارجی هم ترکیبی باشه.
یعنی سه تا کلید اصلی جدول Parent را دقیقا باید در جدول Child پیاده کنید.
شما وقتی یک کلید به نام ID در جدول Student تعریف کردین چرا همون را به تنهایی کلید نگرفتین؟
اگر می خواهین نام و نام خانوادگی در جدول Student منحصر بفرد باقی بمونه کافیه یک Unique Constraint ایجاد کنید.
من DDL را در اینجا قرار می دم:

CREATE TABLE Student
(ID INTEGER NOT NULL PRIMARY KEY,
First_name NVARCHAR(50) NOT NULL,
Last_name NVARCHAR(50) NOT NULL,
CONSTRAINT uniqueness
UNIQUE (first_name, last_name));



CREATE TABLE Studnet_Mark
(ID INTEGER PRIMARY KEY NOT NULL,
stu_ID NOT NULL INTEGER
REFERENCES student (ID),
Number INTEGER NOT NULL
CONSTRAINT currect_number
CEHCK (number BETWEEN 0 AND 20));

sinaone1
شنبه 09 مرداد 1389, 21:36 عصر
عزیز این یه مثال ساده بود
در واقع من تیبل پدرم یه ID داره و دو تیبل دیگه هم به عنوان فرزند دارم که ID آنها نیز در تیبل پدر قرار داده شده تا بتوان به آنها دسترسی داشت در نتیجه من در تیبل پدر سه فیلد کلید وجود داره که خوب یونیک بودن تنها ، به درد من نمی خوره چون من می خوام مرتب هم باشه و نیازه به مرتب کردن در View و غیره نداشته باشه البته طوری این id ها ایجاد شده که مرتب بودن دیگر ID را تحت شعاع قرار نده و در واقع هر سه ID مرتب باشند
حالا آیا می شه کاری انجام داد یا باید بی خیال دیاگرام بشم ممنون

محمد سلیم آبادی
شنبه 09 مرداد 1389, 21:49 عصر
تیبل پدرم یه ID داره و دو تیبل دیگه هم به عنوان فرزند دارم که ID آنها نیز در تیبل پدر قرار داده شده تا بتوان به آنها دسترسی داشت
مفهوم نیست. چرا که ما از کلید پدر در کلید خارجی در جدول فرزند استفاده می کنیم.
لطفا این مقاله را بخوانید:
http://www.30sharp.com/ShowArticle.aspx?nid=13&did=245&AuthorID=11

sinaone1
دوشنبه 11 مرداد 1389, 08:41 صبح
عزیز اگه نامفهوم بود sorry
ما از کلید های فرزند به عنوان کلید خارجی استفاده می کنیم فقط تیبل پدر هم برای خودش کلید داخلی دارد همان ID