نمایش نتایج 1 تا 9 از 9

نام تاپیک: طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

  1. #1

    طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

    با سلامجدولی به نام مظروف دارم با فیلد های کد مظروف(کلید اصلی) ، نام مظروف ، رنگ اول (کلید خارجی)، رنگ دوم(کلید خارجی) ، رنگ سوم(کلید خارجی) ، رنگ چهارم(کلید خارجی) ، رنگ پنجم(کلید خارجی)
    و یک جدول دیگر به نام رنگ با فیلد های کد رنگ (کلید اصلی ) ، نام رنگ
    اگه بخوام یک relation بین جدول رنگ و جدول مظروف ایجاد کنم دور بوجود میاد. واسه نرمال سازی باید چیکار کنم ؟
    حالا اگه بخوام داده هام را در آن واحد به دو تا جدول بفرستم باید چه کدی بنویسم؟

  2. #2
    کاربر دائمی آواتار En_MK
    تاریخ عضویت
    آبان 1388
    محل زندگی
    تهران
    پست
    288

    نقل قول: طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

    سلام
    دور که به وجود نمیاد
    شما یه جدول داری (رنگ) شامل کد ونام...یه جدول داری (مظروف) کد ونام وکد رنگ1وکدرنگ 2و...
    موقعی دور پیش میاد که کد مظروف در جدول رنگ کلید خارجی باشه
    ش
    برای سئوال دوم:شما یه SP مینویسی شامل دو insert که گارامترهای ورودی میشه معادل مقادیر دو جدول

  3. #3
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

    سلام.از یک جدول به جدول دیگر فقط میتوان یک ارتباط ایجاد کرد.
    رابط شما چند به جند میباشد(یک رنگ میتواند به صفر ،یک و یا چند مظروف انتصاب داد و حالت عکس آن یک مظروف میتواند صفر،یک و یا چند رنگ انتصاب داد)
    First,solve the problem then write the code

  4. #4
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

    سلام
    شما کوئری زیر رو امتحان کنید:
    SELECT rang_1.rang, rang_2.rang, rang_3.rang, rang_4.rang, rang_5.rang
    FROM rang AS rang_5 RIGHT JOIN ((rang AS rang_3 RIGHT JOIN (rang AS rang_2 RIGHT JOIN (rang AS rang_1 RIGHT JOIN mazrouf ON rang_1.id = mazrouf.r1) ON rang_2.id = mazrouf.r2) ON rang_3.id = mazrouf.r3) LEFT JOIN rang AS rang_4 ON mazrouf.r4 = rang_4.id) ON rang_5.id = mazrouf.r5;


    rang اسم جدول رنگ هست
    mazrouf اسم جدول مظروف
    و r1 تا r5 اسم رنگهای موجود در جدول مظروف

    سوال دوم، دو تا کوئری می نویسید و ثبت می کنید، اگه حذف یکی در اون یکی تاثیر میذاره و مشکل ایجاد میکنه میتونید دوتا کوئری رو در یک تراکنش بنویسید.

  5. #5

    نقل قول: طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

    خوب من جواب سوال دوم رو گرفتم . ولی سوال اول رو هنوز متوجه نشدم .
    الان این دیاگرامی که من کشیدم یعنی درسته ؟ یا باید کار دیگه ای انجام بدم ؟
    عکس های ضمیمه عکس های ضمیمه

  6. #6
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

    نقل قول نوشته شده توسط jafarpalideh مشاهده تاپیک
    خوب من جواب سوال دوم رو گرفتم . ولی سوال اول رو هنوز متوجه نشدم .
    الان این دیاگرامی که من کشیدم یعنی درسته ؟ یا باید کار دیگه ای انجام بدم ؟
    شما میخواید یه سلکت داشته باشید که نام رنگهای جدول مظروف رو به جای کدشون نشون بده درسته؟ خب شما باید توی همین دیاگرام 4 بار دیگه جدول رنگ رو کپی کنید که با فعلی بشه 5 تا (به تعداد فیلدهای رنگ در جدول مظروف) بعد هر کدوم از فیلدهای رنگ جدول مظروف رو به جدول رنگ ارتباط بدید (ارتباط یک چند)

  7. #7

    نقل قول: طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

    آره دقیقا همین کار رو میخوام بکنم . ولی تویه ریلیشن نمیشه یک جدول رو چند بار داشت . اصلا اون دیاگرامی که کشیدم از نظر نرمال سازی اشکالی نداره ؟

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

    دیاگرام که دیاگرامه شما با کوئری کار دارید. در کوئری هم باید 5 تا جدول مستعار یا alias از جدول رنگ بسازید، شما اگه در کوئری من به جای r1 تا r5 از Color1 تا Color5 و به جای id از CodeRang و اسمهای جدولتون رو هم به جای اسمهای من بگذارید می بینید که همین نتیجه ای که میخواید رو می گیرید.
    از نظر نرمال سازی مشکلی نداره فقط مساله ای هست تعداد رکوردهای شماست اگه تعداد رکوردها خیلی زیاده بهتره یه فیلد nvarchar داشته باشید و موقع insert اسم رنگها رو در این فیلد بنویسید بعد توی کوئری ها از این فیلد استفاده کنید به جای join کردن. البته استفاده از این روش به طراحی و گزارشهای شما هم بستگی داره مثلاً شاید کاربر دو رنگ اول رو بخواد یا رنگ اول و چهارم و ... و البته مشکلاتی هم داره مثل اینکه اگه کاربر اسم رنگ با کد 1 رو تغییر بده چی میشه که داستان ها داره!
    ولی اگر تعداد رکوردهاتون کمه همین روش خوبه.

  9. #9

    نقل قول: طراحی دیتابیس بدون ایجاد دور در relation و درج مقادیر در دو جدول در یک زمان

    تعداد رکوردها به اندازه ی تعداد محصوله که تقریبا نهایتا به 5000 تا میرسه .

    البته این کوئری رو نوشتم .فقط شک داشتم که نرمالسازی توش رعایت شده یا نه

    SELECT     dbo.TblRang.NameRang AS rang0, TblRang_1.NameRang AS rang1, TblRang_2.NameRang AS rang2, TblRang_3.NameRang AS rang3,                       TblRang_4.NameRang AS rang4, dbo.TblMazroof.NameZarf
    FROM dbo.TblMazroof LEFT OUTER JOIN
    dbo.TblRang ON dbo.TblMazroof.Color1 = dbo.TblRang.CodeRang LEFT OUTER JOIN
    dbo.TblRang AS TblRang_1 ON dbo.TblMazroof.Color2 = TblRang_1.CodeRang LEFT OUTER JOIN
    dbo.TblRang AS TblRang_2 ON dbo.TblMazroof.Color3 = TblRang_2.CodeRang LEFT OUTER JOIN
    dbo.TblRang AS TblRang_3 ON dbo.TblMazroof.Color4 = TblRang_3.CodeRang LEFT OUTER JOIN
    dbo.TblRang AS TblRang_4 ON dbo.TblMazroof.Color5 = TblRang_4.CodeRang

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: چهارشنبه 04 خرداد 1390, 20:45 عصر
  2. سوال: تغییر رزولیشن بدون ایجاد تغییرات در دسکتاپ
    نوشته شده توسط loads در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: دوشنبه 08 تیر 1388, 17:59 عصر
  3. پاسخ: 6
    آخرین پست: چهارشنبه 20 شهریور 1387, 09:55 صبح
  4. راهنمایی : تشخیص دیتابیس های ایجاد شده در Sql توسط دلفی
    نوشته شده توسط Sabeghi در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: دوشنبه 08 بهمن 1386, 08:02 صبح
  5. باز کردن popup menu در VB6 بدون ایجاد فریم در فرمها
    نوشته شده توسط mkbo_webmaster در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: جمعه 01 اردیبهشت 1385, 04:16 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •