PDA

View Full Version : این ارور علتش چیه؟؟؟



hamhik
دوشنبه 16 بهمن 1385, 23:19 عصر
با سلام
من دو تا جدول دارم به نام های answer و question در جدول answer دو فیلد دارم به نام های idquestionوanswer که idquestion در جدول answer کلید خارجی است و در جدول question هم دوتا فیلد به نام های idquestion و question دارم که idquestion در جدول question کلید اولیه است حالا من هر وقت بخوام idquestion مربوط به جدول question را به idquestion مربوط به جدول answer را به هم ربط بدم error می ده که error ش هم اینه:
the columns in table 'question' do not match an existing primary key or UNIQUE constraint.
البته اینم بگم که نوع فیلدها و طولشان دقیقا مثل هم است.
و اینکه قتی می خوام از جدول answer ربط بدم به question این error رو نمی گیره
علتش چیه؟؟؟

حمیدرضاصادقیان
سه شنبه 17 بهمن 1385, 07:32 صبح
در هر دو جدولت فیلدهایی که گفتی رو کلید اصلی بزار بعد از جدولی که میخوای مستر باشه relation رو به اون یکی برقرار کن.چون تا جایی که من میدونم باید هردو primary key باشن که در relation که شما مشخص میکند کلید خارجی مشخص میشود.

DonetKarvb
سه شنبه 17 بهمن 1385, 09:54 صبح
در هر دو جدولت فیلدهایی که گفتی رو کلید اصلی بزار بعد از جدولی که میخوای مستر باشه relation رو به اون یکی برقرار کن.چون تا جایی که من میدونم باید هردو primary key باشن که در relation که شما مشخص میکند کلید خارجی مشخص میشود.
نه عزیز من اینکار اشتباه است. دوست ما هدفشون از طراحی این بودکه برای هر سوال چندین پاسخ داشته باشند . با این شیوه ارتباط میشه یک به یک و هر سوال فقط یک پاسخ خواهد داشت.

DonetKarvb
سه شنبه 17 بهمن 1385, 10:10 صبح
با سلام
من دو تا جدول دارم به نام های answer و question در جدول answer دو فیلد دارم به نام های idquestionوanswer که idquestion در جدول answer کلید خارجی است و در جدول question هم دوتا فیلد به نام های idquestion و question دارم که idquestion در جدول question کلید اولیه است حالا من هر وقت بخوام idquestion مربوط به جدول question را به idquestion مربوط به جدول answer را به هم ربط بدم error می ده که error ش هم اینه:
the columns in table 'question' do not match an existing primary key or UNIQUE constraint.
البته اینم بگم که نوع فیلدها و طولشان دقیقا مثل هم است.
و اینکه قتی می خوام از جدول answer ربط بدم به question این error رو نمی گیره
علتش چیه؟؟؟
دوست عزیز شما میخواهید یک ارتباط یک به چند برقرار کنید . خوب پس باید اطلاعات در یکی از جدوال( اینجا جدول سوال است) یکتا باشد و در جدول دیگری نا محدود. و یک فیلد در دو تیبل مشترک باشد.
شما باید ارتباط رو در از سمت تیبل Question به سمت تیبل Answer ایجاد کنی. برای این موضوع برو تو بخش دیاگرام دوتا جدول رو بیار و فیلد جدول سوال رو بکش به سمت فیلد مشترک جدول پاسخ. اینطور مشکل شما حل خواهد شد. ( وقتی که ارتباط برقرار شد باید در کنار جدولی که کلید هست یک علامت کلید بیایید و. در کنار جدول دیگر علامت بی نهایت)
اگر خواستی شیوه ها دیگر ایجاد ارتباط نظیر کد نوسی رو بگو تا برات اینجا بازگو کنم.

zerobit-ltd
سه شنبه 17 بهمن 1385, 14:48 عصر
علت این خطا اینه که شما فیلد idQuestion تو جدول Question رو به عنوان Primary Key تعیین نکردید. برای حل این مشکل، یا این فیلد رو به عنوان Primary Key تعریف کنید یا یه اندیس Unique روش ایجاد کنید.

hamhik
چهارشنبه 18 بهمن 1385, 02:30 صبح
چطوری؟؟؟مگه روی فیلد کلیک راست نمی کنیم بعد primarykey رو می زنیم دیگه
هم تو جدول question و هم تو جدول answer این کارو کردم

zerobit-ltd
چهارشنبه 18 بهمن 1385, 04:45 صبح
چطوری؟؟؟مگه روی فیلد کلیک راست نمی کنیم بعد primarykey رو می زنیم دیگه
هم تو جدول question و هم تو جدول answer این کارو کردم
توی جدول answer نیازی به انجام این کار نیست. چون idQuestion تو جدول answer کلید خارجی هستش. بعد کاری رو انجام بده که DonetKarvb توضیح داده.

hamhik
چهارشنبه 18 بهمن 1385, 13:35 عصر
مشکل حل شد

hamhik
پنج شنبه 19 بهمن 1385, 00:43 صبح
البته من الان دچار یه سردرگمی شدم یعنی فقط فیلد هامی مورد نظر رو در جدول های خودشون(جدول سوال) کلید اصلی(idquestion) بزارم و فیلدidquestion که می خوام از این بگیرم بدم به فیلد idquestionجدول دیگم(یعنی جدول جواب)دیگه نمی خواد کلیدش کنم یعنی مثل یه فیلد عادی مثل بقیه ی فیلدها در جدول جواب باقی بمونه ???

DonetKarvb
پنج شنبه 19 بهمن 1385, 00:57 صبح
البته من الان دچار یه سردرگمی شدم یعنی فقط فیلد هامی مورد نظر رو در جدول های خودشون(جدول سوال) کلید اصلی(idquestion) بزارم و فیلدidquestion که می خوام از این بگیرم بدم به فیلد idquestionجدول دیگم(یعنی جدول جواب)دیگه نمی خواد کلیدش کنم یعنی مثل یه فیلد عادی مثل بقیه ی فیلدها در جدول جواب باقی بمونه ???
دقیقا" همینطوره که میفرمایید

zerobit-ltd
پنج شنبه 19 بهمن 1385, 01:01 صبح
البته من الان دچار یه سردرگمی شدم یعنی فقط فیلد هامی مورد نظر رو در جدول های خودشون(جدول سوال) کلید اصلی(idquestion) بزارم و فیلدidquestion که می خوام از این بگیرم بدم به فیلد idquestionجدول دیگم(یعنی جدول جواب)دیگه نمی خواد کلیدش کنم یعنی مثل یه فیلد عادی مثل بقیه ی فیلدها در جدول جواب باقی بمونه ???
رابطه بین جداول Question و Answer یک به چنده. یعنی به ازای یک سوال (idQuestion) تو جدول Question، می تونید چند جواب تو جدول Answers داشته باشید.
برای ایجاد این ارتباط، کافیه که فیلد idQuestion تو جدول Question رو Primary Key تعریف کنی. بعد فیلدهای idQuestion دوتا جدول رو به هم وصل کنی (طریقه این کار رو دوستان تو دو سه تا پست بالاتر نوشتن).
ولی اگر بخواید رابطه شما یک به یک باشه، باید هر دو تا فیلد (idQuestion) را تو هر دو تا جدول Question و Answer به صورت کلید اصلی تعریف کنید.
نکته بعدی اینکه، معمولا فیلد جدول هایی رو که بینشون رابطه یک به یک وجود داره رو با هم ترکیب می کنن.