मैंने दो टेबल बनाए - employees और tasks। प्रत्येक का जुड़ाव has_and_belongs_to_many है, क्योंकि कर्मचारियों के पास कई कार्य हो सकते हैं और इसके विपरीत।

मैं अपनी विदेशी कुंजी कैसे जोड़ूं? क्या मैं प्रत्येक मॉडल में अन्य मॉडल को संदर्भित करने वाली एक विदेशी कुंजी जोड़ूं?

1
Ruby 4 पद 2019, 12:48

2 जवाब

इस N-M संबंध को संभालने के लिए, आप आमतौर पर एक अतिरिक्त तालिका बनाते हैं, जैसे employee_tasks। इसे जंक्शन टेबल कहा जाता है।

जंक्शन तालिका में एक स्तंभ होता है जो कर्मचारी तालिका की प्राथमिक कुंजी को संदर्भित करता है, और दूसरा स्तंभ जो कार्य तालिका की प्राथमिक कुंजी को संदर्भित करता है।

विशिष्ट एसक्यूएल डीडीएल:

create table employees (employee_id int primary key);
create table tasks (task_id int primary key);

create table employee_tasks(
    employee_id int,
    task_id int,
    primary key (employee_id, task_id),
    foreign key (employee_id) references employees(employee_id),
    foreign key (task_id) references tasks(task_id)
);
1
GMB 4 पद 2019, 12:51

आप माइग्रेशन में जॉइन टेबल में विदेशी कुंजियाँ जोड़ सकते हैं

create_table :employees_tasks, id: false do |t|
  t.belongs_to :employee, foreign_key: true
  t.belongs_to :task, foreign_key: true
end
0
Vasilisa 4 पद 2019, 19:34