کلید های ترکیبی در پایگاه داده

3 سال پیش توسط MHT مطرح شد
آفلاین
user-avatar
MHT ( 1279 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

سلام و وقت بخیر.
اینکه کلید یک تیبل ترکیبی از چند کلید باشه یعنی چی ؟
مثلا اگر بخوام کلیدم ترکیبی از نام و قیمت محصولی باشه باید به این صورت تعریف کنم؟
protected $primaryKey = array('key1', 'key2');

بهترین پاسخ
آفلاین
user-avatar
vahid Mohammadi
3 سال پیش

@maedehtoosi
سلام اگر از لاراول استفاده می کنید به شکل زیر scheme رو تعریف کنید

Schema::create('doc_tag', function(Blueprint $table)
{
    $table->integer('id_doc')->unsigned();
    $table->integer('id_tag')->unsigned();

    $table->primary(['id_tag', 'id_doc']);

    $table->foreign('id_doc')
                ->references('id')
                ->on('doc');    
    $table->foreign('id_tag')
                ->references('id')
                ->on('tag');
});
آفلاین
user-avatar
vahid Mohammadi ( 37202 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

@maedehtoosi
سلام اگر از لاراول استفاده می کنید به شکل زیر scheme رو تعریف کنید

Schema::create('doc_tag', function(Blueprint $table)
{
    $table->integer('id_doc')->unsigned();
    $table->integer('id_tag')->unsigned();

    $table->primary(['id_tag', 'id_doc']);

    $table->foreign('id_doc')
                ->references('id')
                ->on('doc');    
    $table->foreign('id_tag')
                ->references('id')
                ->on('tag');
});
آفلاین
user-avatar
MHT ( 1279 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

@viva.mohammadi
خیلی ممنونم.اگر تعداد کلیدها بیشتر باشن (مثلا 3 تا ) چطور میشه؟
این قسمت ->on('doc'); و ->on('tag'); یعنی چی؟
مثلا یه چیزی مثل قیمت رو باید جای id-doc بنویسم و این تیکه ی ->on('tag'); رو باید جاش چی بذارم؟

آفلاین
user-avatar
vahid Mohammadi ( 37202 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

@maedehtoosi
خواهش میکنم
بیبنید تیکه کد زیر برای تعریف کلید هاتون هست که من الان ۳ تا کلید همزمان  به عنوان کلید اصلی تعریف کردم

$table->integer('id_doc')->unsigned();
    $table->integer('id_tag')->unsigned();
    $table->integer('id_user')->unsigned();

    $table->primary(['id_tag', 'id_doc ,'id_user']);

معمولا کلیدها برای استفاده از روابط بین جداول استفاده می شوند که در کد زیر نوع روابط با جداول دیگه رو مثال زدیم اگه رابطه با جدول های دیگه نداره لازم نیست اون رو بنویسید

 $table->foreign('id_doc')
                ->references('id')
                ->on('doc');    
    $table->foreign('id_tag')
                ->references('id')
                ->on('tag');

نکته : استفاده از فیلد قیمت به عنوان کلید اصلی کار عاقلانه ایی به نظر نمی رسه

آفلاین
user-avatar
MHT ( 1279 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

@viva.mohammadi
خیلی لطف کردید واقعا، ممنونم.

آفلاین
user-avatar
vahid Mohammadi ( 37202 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

1

@maedehtoosi

خواهش می کنم اگر مشکلتون حل شد به عنوان بهترین پاسخ انتخاب کنید تا بقیه که این مشکل رو دارن بفهمن که جواب گرفتین. ممنون

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.