Database model for making a user support ticket system

database-design

Solution

That's a good start.

If I may summarize what you want in terms of table. You probably want:

Table: Query
Fields: ID, Name, Email, Phone, Message

Table: Reply
ReplyID, QueryID, ReplyMessage, DateTimeReply

In `Reply` table `QueryID` is the `FK` coming from the `ID` field of `Query` table.

But you could probably add of who replied the query, so which means you will have probably a table for Customer Care personnel. So, you could probably have the table below.

Table: CustomerCareUser
Fields : CustomerCareID, Lastname, Firstname, LastLogInDate

So, which means your table `Reply` table will be slightly changed.

Table: Reply
Fields: ReplyID, QueryID, ReplyMessage, DateTimeReply, RepliedByID

wherein `RepliedByID` is the `CustomerCareID` from `CustomerCareUser` table and therefore an `FK`.

And you could also make categories in your query, that is, on what `Category` does the Customer query falls into. So, that in the future you could easily sort out and make a report on what kind of queries does customers have in your website (or product). So, you will have probably a Category table like one below:

Table: Category
Fields: CategoryID, CategoryName

So, which means you need to add `CategoryID` in your `Query` table, like:

Table: Query
Fields: ID, Name, Email, Phone, Message, CategoryID

Now, lastly how about a flag if a Query has been resolved or not? So, you might probably add another field (in Boolean), like `Resolved`. So, which means you may have the table for `Query` below.

Table: Query
Fields: ID, Name, Email, Phone, Message, CategoryID, Resolved

Problem

I am working on building a support ticket system to integrate with my current project. I was wondering what should be the database table for it. It is like a contact us query, we generally have on websites. I want that if a user send a query on contact us, then a ticket should be created for it and all replies to that query should get linked with each other, so that a customer care representative can view all replies at once. Nothing more fancy is required. For initial query, four field are required - Name, Email, Phone Number and Query Message I was thinking of to create two tables: First table contains column for id, name, email, message and phone number and second table stores all the messages with datetime when replied with a FK of id to first table. Is this the right approach?

Original source