Розмітка зв'язків таблиць (шаблон проєктування)Розмітка зв'язків таблиць (англ. Association Table Mapping) — шаблон проєктування, який пропонує відображати колекції об'єктів у вигляді проміжних таблиць з зовнішніми ключами. ОписОб'єкти із легкістю можуть містити набір значень у вигляді колекцій. Реляційні бази обмежуються полями з одним значенням. При відношенні "один до багатьох" можна використати розмітку зовнішніх ключів. Але при відношенні "багато до багатьох" немає однозначної сутності на яку би посилався зовнішній ключ. Рішення таке ж як і в реляційних базах даних — створення проміжної сутності, яка міститиме ключі. Реалізація![]() Нехай дані об'єкти, які представляють моделі таблиць у сховищі. class EmployeeTable
{
public int Id { get; set; }
public string Name { get; set; }
}
class SkillTable
{
public int Id { get; set; }
public string Name { get; set; }
}
class EmployeeSkillTable
{
public int EmployeeId { get; set; }
public int SkillId { get; set; }
}
Тоді у пам'яті таку структуру можна описати наступним чином. Правда в такому випадку ускладнюється логіка відображення об'єктів у моделі даних. class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Skill> Skills { get; set; }
}
class Skill
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Employee> Employees { get; set; }
}
Або згідно шаблону. class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<EmployeeSkill> Skills { get; set; }
}
class Skill
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<EmployeeSkill> Employees { get; set; }
}
class EmployeeSkill
{
public int EmployeeId { get; set; }
public int SkillId { get; set; }
}
Див. такожДжерела
|
Portal di Ensiklopedia Dunia