Наслідування з таблицею для кожного конкретного класу (англ. Concrete Table Inheritance) — шаблон проєктування, який пропонує зберігати ієрархію наслідування класів в окремих таблицях.
Опис
Оскільки реляційні бази даних не підтримують наслідування, потрібно придумати спосіб відображення такої ієрархії в сховищі.
Одним із рішень буде зберігати кожний клас в окремій таблиці. Тоді колонками у таких таблицях будуть усі поля всіх класів ієрархії.
Застосування
- В Entity Framework даний підхід називається Table Per Concrete Type (TPC).
Переваги та недоліки
Переваги
- Усі поля таблиці відповідають усім колонкам. Таким чином легше сприймати зв'язок між таблицею та об'єктом
- Не потрібні складні запити, для отримання даних конкретного типу, всі значення знаходяться у таблиці
- Переміщення полів в дочірній чи батьківський клас не вимагає зміни структури таблиць
Недоліки
- Важко завантажити у пам'ять ієрархію об'єктів різних типів
- Зміни у батьківських класах впливають на структури таблиць спадкоємців
- Первинні ключі можуть збігатись у різних класах ієрархії
Реалізація
Нехай дана ієрархія об'єктів.
public class Player { public string Name { get; set; } } class Footballer : Player { public string Club { get; set; } } class Cricketer : Player { public int BattingAverage { get; set; } }
Тоді у сховищі ці об'єкти представлятимуться окремими таблицями з усіма полями.
public class PlayerTable { public string Name { get; set; } } class FootballerTable { public string Name { get; set; } public string Club { get; set; } } class CricketerTable { public string Name { get; set; } public int BattingAverage { get; set; } }
Див. також
Джерела
- Concrete Table Inheritance [Архівовано 1 листопада 2020 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Nemaye perevirenih versij ciyeyi storinki jmovirno yiyi she ne pereviryali na vidpovidnist pravilam proektu Nasliduvannya z tabliceyu dlya kozhnogo konkretnogo klasu angl Concrete Table Inheritance shablon proyektuvannya yakij proponuye zberigati iyerarhiyu nasliduvannya klasiv v okremih tablicyah OpisOskilki relyacijni bazi danih ne pidtrimuyut nasliduvannya potribno pridumati sposib vidobrazhennya takoyi iyerarhiyi v shovishi Odnim iz rishen bude zberigati kozhnij klas v okremij tablici Todi kolonkami u takih tablicyah budut usi polya vsih klasiv iyerarhiyi ZastosuvannyaV Entity Framework danij pidhid nazivayetsya Table Per Concrete Type TPC Perevagi ta nedolikiPerevagi Usi polya tablici vidpovidayut usim kolonkam Takim chinom legshe sprijmati zv yazok mizh tabliceyu ta ob yektom Ne potribni skladni zapiti dlya otrimannya danih konkretnogo tipu vsi znachennya znahodyatsya u tablici Peremishennya poliv v dochirnij chi batkivskij klas ne vimagaye zmini strukturi tablic Nedoliki Vazhko zavantazhiti u pam yat iyerarhiyu ob yektiv riznih tipiv Zmini u batkivskih klasah vplivayut na strukturi tablic spadkoyemciv Pervinni klyuchi mozhut zbigatis u riznih klasah iyerarhiyiRealizaciyaNehaj dana iyerarhiya ob yektiv public class Player public string Name get set class Footballer Player public string Club get set class Cricketer Player public int BattingAverage get set Todi u shovishi ci ob yekti predstavlyatimutsya okremimi tablicyami z usima polyami public class PlayerTable public string Name get set class FootballerTable public string Name get set public string Club get set class CricketerTable public string Name get set public int BattingAverage get set Div takozhUspadkuvannya programuvannya Nasliduvannya z odniyeyu tabliceyu Nasliduvannya z tabliceyu dlya kozhnogo klasuDzherelaConcrete Table Inheritance Arhivovano 1 listopada 2020 u Wayback Machine