нам нужно сделать виртуальный деструктор из-за того факта, что, если мы не сделаем виртуальный деструктор, то компилятор уничтожит только содержимое базового класса, n все производные классы останутся неизменными, компилятор базы данных не вызовет деструктор любого другого класса, кроме базового класса.