Hi I am doing a project at college.
I want to design a user-friendly web based I.T. helpdesk application. The
application will provide the facility for students and staff of the
School of Computer Science to log faults or incidents via a web portal. These
faults can then be assigned by a member of the support team to the
appropriate technician, classified and given a status (open, work in
progress, closed, etc.). The technician who is assigned the fault will
receive an email indicating the nature of the fault and it's status.
Once the fault or incident is resolved, the technicians can then log
into the system and clear faults that have been assigned to them. By
clearing faults the system generates an email to the person who
initiated the fault with a full report on how it was resolved. All
faults should be archived and searchable by staff or students, over time
generating a knowledge base of incidents.

I would also like to include the following:
Complete incident history
An open incident can have any number of events
Search knowledge base
Classify incidents
Relate incidents to persons and assets

I am just looking for a few pointers as to the best way to approach this, a brief synopsis that I can take some ideas from.
Would be much appreciated :)

I did one of these in my last company. One of the key issues for me was the large amounts of free text that will ultimately need to be searched. I had a primary table that was the base for each fault item. I had a foreign key table off of this called fault_paragraphs this meant I could split large text entry (the initial fault and the resultant constant cooment additions as the fault's solution was progressed) into a specific maximum size this meant I could store them in the DB without falling foul of maximum record length and *also* not have to use the NTEXT data type (I was using Sql Server) Whichtherefore made it easier to search without having to maintain full-text search indexes on the Sql Server instance.

Have addedby, addeddate and updatedby and updateddate as columns on all tables.

Don't hard code your categories and asset types, make tables for these too and an admin only UI to maintain them.