What is the difference between ovm_transaction and ovm_sequence_item?

hello Sir,
i am working on axi1.0 now .my protocol demands ID tag for every write address,data, response etc trasactions.
how can i make it???

for that i have created d following transactions:-

class write_addr_phase extends ovm_transaction;

rand [31:0] waddr;
rand [31:0] wlen;
rand [31:0] wlsize;

//added contraints
//factory registration
endclass

class write_data_phase extends ovm_transaction;

rand [31:0] data;
rand [31:0] strb;
rand [31:0] wlen;

//added contraints
//factory registration
endclass

class write_transaction extends ovm_transaction;
write_addr wa;
write_data wd;
function new();
wa = new();
wd = new();
endfunction
endclass

#####################################################################################

second doubt: as of my knowledge ovm_sequence_item extends from ovm_transaction;but i have more than 3 transaction(mentioned above).

i am confused from which ovm_transaction , ovm_sequence_item is extended from???

how can i use these transactions in generating the ovn_sequence_item??? and sequences as well??

please help me

Murali Hanumanth