Розмітка зовнішніх ключів (шаблон проєктування) — Вікіпедія
Розмітка зовнішніх ключів (англ. Foreign Key Mapping) — шаблон проєктування, який пропонує відображати асоціації між таблицями у вигляді посилань між об'єктами.
Зв'язки між таблицями в базі даних реалізовані за допомогою зовнішніх ключів. В той час, як об'єкти посилаються один на одного за допомогою вказівників. У реляційних базах даних зберігання пов'язаних вказівниками об'єктів може призвести до порушення правил нормалізації.
Щоб зберегти граф об'єктів в сховище, необхідно перетворити ключ об'єкта за вказівником у зовнішній ключ.

Нехай дані об'єкти, які представляють моделі таблиць у сховищі.
class AlbumTable { public int Id { get; set; } public string Title { get; set; } public int ArtistId { get; set; } } class ArtistTable { public int Id { get; set; } public string Name { get; set; } }
Тоді у пам'яті таку структуру описують наступні об'єкти.
class Album { public int Id { get; set; } public string Title { get; set; } public Artist Artist { get; set; } } class Artist { public int Id { get; set; } public string Name { get; set; } }
Тоді код для відображення об'єктів із пам'яті в структуру сховища та назад виглядатиме наступним чином.
class Mapper { public Album GetAlbum(AlbumTable albumTable, Artist artistTable) { if (albumTable.ArtistId != artistTable.Id) throw new InvalidOperationException(); return new Album { Id = albumTable.Id, Title = albumTable.Title, Artist = new Artist { Id = artistTable.Id, // albumTable.ArtistId Name = artistTable.Name, }, }; } public (AlbumTable, ArtistTable) GetAlbumWithArtistTable(Album album) { var albumTable = new AlbumTable { Id = album.Id, Title = album.Title, }; var artistTable = new ArtistTable { Id = album.Artist.Id, Name = album.Artist.Name, }; return (albumTable, artistTable); } }
- Foreign Key Mapping [Архівовано 9 серпня 2020 у Wayback Machine.]