If you have a class for each of these "Article", "User" and "Tag" then you can certainly add extra methods to your classes. For example you might have:
class Article {
public function getTags() {
// Talk to your DAO object or table data gateway or whatever
// and instantiate them and return an array of Tag objects
}
}
class User {
public function getArticles() { }
}
Or you can implement them in static gateway classes like:
class Article_Gateway {
public static function fetchByTag( $tagName ) { }
public static function fetchByUser( $userName ) { }
}
As for how to get actually get the data rows to use in your models well you can use the relationships features of Zend_Db_Table to do that ( http://framework.zend.com/manual/en/zend.db.table.relationships.html )
eg:
$accountsTable = new Accounts();
$accountsRowset = $accountsTable->find(1234);
$user1234 = $accountsRowset->current();
$bugsReportedByUser = $user1234->findDependentRowset('Bugs');