public function drop(): array
    {
        $touched = [];
        $this->pdo->beginTransaction();

        foreach ($this->getViews() as $view) {
            $this->pdo->exec("drop view if exists {$view} cascade");
            $touched[] = ['view', $view];
        }

        foreach ($this->getTables() as $table) {
            $this->pdo->exec("drop table if exists {$table} cascade");
            $touched[] = ['table', $table];
        }

        $this->pdo->commit();

        return $touched;
    }