def METHOD_NAME(self):
    """Describe linked tables"""
    for layer in self.layers.keys():
        # determine column names and types
        table = self.layers[layer]["table"]
        columns = {}  # {name: {type, length, [values], [ids]}}
        i = 0
        for item in grass.db_describe(
            table=self.layers[layer]["table"],
            driver=self.layers[layer]["driver"],
            database=self.layers[layer]["database"],
        )["cols"]:
            name, type, length = item
            # FIXME: support more datatypes
            if type.lower() == "integer":
                ctype = int
            elif type.lower() == "double precision":
                ctype = float
            else:
                ctype = str
            columns[name.strip()] = {
                "index": i,
                "type": type.lower(),
                "ctype": ctype,
                "length": int(length),
                "values": [],
                "ids": [],
            }
            i += 1
        # check for key column
        # v.db.connect -g/p returns always key column name lowercase
        if self.layers[layer]["key"] not in columns.keys():
            for col in columns.keys():
                if col.lower() == self.layers[layer]["key"]:
                    self.layers[layer]["key"] = col.upper()
                    break
        self.tables[table] = columns
    return True