I'd start with the cms_node, cms_nodeinfo, and cms_article tables.
The insert into the cms_node table is interesting...as I recall, initial data is inserted into the table when the create article page is loaded, before the article is saved. When the article is saved, the row is updated with the correct data.
Also, the noderight and nodeleft columns are used to describe the position of a node relative to other nodes...so when you calculate its position, you'll potentially have to update other records to make room for it.
Otherwise, it's mostly straightforward.