drop database if exists telephonedatabase; create database telephonedatabase; use telephonedatabase; create table calls ( caller varchar(30), dialled varchar(30), timestamp datetime not null, direction boolean not null comment 'in=0 out=1', telephonecentral tinyint unsigned, id serial ); #tables for each event is better. each table can then have different columns /********************************************************************* create table event_names ( name char(10), id tinyint unsigned not null auto_increment unique ); insert event_names values ("connected",1),("hanged up",2)("hold",3),("unhold",4),("park",5),("unpark",6),("transfer internal",7), ("transfer external",8),("blind transfer",9),("attended transfer",10); create table event ( name tinyint unsigned not null references event_names.id, timestamp datetime, ); delete from event; insert event values ("answered",""2007-25-02,"15:21:30"),("hanged up",""2007-25-02,"15:23:42"); **********************************************************************/ create table connected ( connected_number varchar(30), timestamp datetime not null, callid bigint unsigned not null references calls.id ); create table hangup ( timestamp datetime not null, callid bigint unsigned not null references calls.id ); create table other ( div1 varchar(30), div2 varchar(30) ); delete from calls; insert calls values ("45426817", "91245682", "2008-02-25 15:20:21", 0, 5, null); delete from connected; insert connected values ("91245682", "2008-02-25 15:20:42", (select id from calls where caller="45426817" and dialled="91245682" and timestamp="2008-02-25 15:20:21")); delete from hangup; insert hangup values ("2008-02-25 15:23:21", (select id from calls where caller="45426817" and dialled="91245682" and timestamp="2008-02-25 15:20:21"));