Doctrine_Record is the basic component of every doctrine-based project. There should be atleast one Doctrine_Record for each of your database tables. Doctrine_Record follows the [http://www.martinfowler.com/eaaCatalog/activeRecord.html Active Record pattern] Doctrine always adds a primary key column named 'id' to tables that doesn't have any primary keys specified. Only thing you need to for creating database tables is defining a class which extends Doctrine_Record and setting a setTableDefinition method with hasColumn() method calls and by exporting those classes. Lets say we want to create a database table called 'user' with columns id(primary key), name, username, password and created. Provided that you have already installed Doctrine these few lines of code are all you need: User.php : class User extends Doctrine_Record { public function setTableDefinition() { // set 'user' table columns, note that // id column is auto-created as no primary key is specified $this->hasColumn('name', 'string',30); $this->hasColumn('username', 'string',20); $this->hasColumn('password', 'string',16); $this->hasColumn('created', 'integer',11); } } For exporting the user class into database we need a simple build script: //require the base Doctrine class require_once('path-to-doctrine/lib/Doctrine.php'); //register the autoloader spl_autoload_register(array('Doctrine', 'autoload')); require_once('User.php'); //set up a connection Doctrine_Manager::connection('mysql://user:pass@localhost/test'); //export the classes Doctrine::createTablesFromArray(array('User')); We now have a user model that supports basic CRUD opperations!