Search code examples
sqlnormalizationdatabase-normalization

Question about Normalisation


I am just wondering which of these would be better to use in a web application. I have a web app that lets the user post to the site. There are three different types of posts but similar enough that I could put them under one table. Is that okay to do?

I could normalise the tables in this way? (Putting type under either)

Table 1

UserPost
post_id 
user_id
type

Table 2

Post
post_id 
datetime
text

OR would using one table be better?

Table

Post
user_id
post_id 
datetime
type
text

I am leaning towards the third way, unless someone can point out disadvantages.


Solution

  • In the first approach, you will always have to create a row in both tables for each user post. So there is no drawback by only having one table, user_id should then be a foreign key for your user table, post_id the primary key and the other columns hold the data. There is no reason for creating two tables.

    If the three different types of posts are describable by one common field, a discriminator like type is okay.