code: function (database, callback) {
          var s = this,
              querier = s._querier;
          querier.connect();
          async.waterfall([
              function (callback) {
                  querier.showTables(database, function (err, tables) {
                      callback(err, tables);
                  });
              },
              function (tables, callback) {
                  var tableNames = s._parseTableNames(tables);
                  async.map(tableNames, function (table, callback) {
                      querier.selectKeyColumnUsage(database, table, function (err, data) {
                          callback(err, {
                              name: table,
                              keyColumnUsage: s._parseTableKeyColumnUsageData(data)
                          });
                      });
                  }, callback);
              },
              function (data, callback) {
                  var database = {};
                  data.forEach(function (data) {
                      database[data.name] = data.keyColumnUsage;
                  });
                  callback(null, database);
              }
          ], function (err, result) {
              querier.disconnect();
              callback(err, result);
          });
          return s;
      }
docs: Describe key column usages in database.
  @param {string} database - Name of database.
  @param {function} callback - Callback when done.
  @returns {MysqlDescriber}