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

نام تاپیک: چطور برای یک جدول کلید ترکیبی ایجاد کنیم؟

  1. #1
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,275

    چطور برای یک جدول کلید ترکیبی ایجاد کنیم؟

    سلام. قصد دارم در جدول A مقدار ستون‌های Unit, Line, PartNo منحصربفرد باشند. بنابراین تمام این ستون‌ها را PrimaryKey تعیین کردم. اما مشکلم در استفاده از مقدار کلید در جدول B به عنوان ForeignKey هستش. در جدول B کدام مقدار باید به عنوان مقدار کلید وارد شود؟ اگر ستون Id برای جدول A تعیین کنم و مقدارش AutoNumber باشد بنابراین چون در هر ردیف این مقدار افزایش می‌یابد بنابراین می‌توان یک Unit, Line, PartNo تکراری وارد کرد.

    لطفا راهنمایی بفرمایید. آیا باید یک ستون از ترکیب مقادیر Unit, Line, PartNo ایجاد کنم و این ستون را به عنوان تنها ستون PrimaryKey تعیین کنم یا راه حل دیگری هم وجود دارد؟ تشکر

  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,690

    نقل قول: چطور برای یک جدول کلید ترکیبی ایجاد کنیم؟

    سلام و روز خوش

    اگه منظور شما رو درست گرفته باشم :
    فیلد ID برای TableA نیاز نیست، یک constraint روی این سه فیلد بسازین و همون رو هم primary key کنین (خودکار unique هم میشه):

    1.png

    یا اگه با SQL DDL راحتترین:
    ALTER TABLE TableA
    ADD CONSTRAINT TableA_PK PRIMARY KEY (PartNo, Line, Unit)


    و relation بین دو جدول رو اینجوری تعریف کنین:

    2.png

    یا باز هم SQL DDL :
    ALTER TABLE TableB
    ADD CONSTRAINT FK_TableB_TableA
    FOREIGN KEY (PartNo, Line, Unit) REFERENCES TableA (PartNo, Line, Unit)
    ON UPDATE CASCADE
    ON DELETE CASCADE

  3. #3
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,275

    نقل قول: چطور برای یک جدول کلید ترکیبی ایجاد کنیم؟

    ممنون از لطف شما. بله دنبال همین پاسخ بودم و مشکلم این بود که نمی‌دونستم IndexName باید برای ستون‌های بعدی خالی باشه. علت اینکه نیاز به Id دارم اینه که در جدول B قصد دارم جهت ثبت اطلاعات فقط از یک شناسه واحد (تک ستون) استفاده کنم.

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,690

    نقل قول: چطور برای یک جدول کلید ترکیبی ایجاد کنیم؟

    خب شما میتونین به جای این که composite primary key تعریف کنین (همین که بالا گفته شد)
    بیاین یک فیلد ID به عنوان primary key به جدول TableA اضافه کنین
    ولی همچنان constraint رو روی سه فیلد نگه دارین (اینبار فقط unique)
    تا اکسس خودش عملیات چک روی این سه فیلد رو انجام بده ولی بهتره هر سه فیلد رو required هم بکنین.

    و این فیلد ID رو با یک فرمولی از روی این سه تا بسازین - مثلا: [PartNo] & "-" & [Line] & "-" & [Unit]
    اینجا فرض کردم این سه فیلد string هستن و ممکنه مقادیر non-numeric داشته باشن و ID هم بالطبع باید string باشه
    هرچند که بهتره اینها خودشون هم کدگذاری شده باشن (PartNoID, UnitID, LineID)
    و ID هم long تعریف بشه، مثلا : [PartNoID]*10000 + [LineID]*100 + [UnitID]

    حالا در جدول TableB این فیلد ID رو به عنوان foreign key تعریف کنین.

    برای ساختن ID هم کافی هست در before change جدول TableA فیلد ID رو با فرمول مقداردهی کنین (با setfield)

  5. #5
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,275

    نقل قول: چطور برای یک جدول کلید ترکیبی ایجاد کنیم؟

    ممنون از راهنمایی شما

برچسب های این تاپیک

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

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