Jason
Jason

Reputation: 95

Many types of data - One table vs multiple tables

I am working on a webapplication, which main functionality will be to present some data to user. However, there are several types of these data and each of them have to be presented in a diffrent way.

For example I have to list 9 results - 3 books, 3 authors and 3 files.

Book is described with (char)TITLE, (text)DESCRIPTION.

Author is described with (char)TITLE, (char)DESCRIPTION.

File is described with (char)URL.

Moreover, every type has fields like ID, DATE, VIEWS etc. Book and Author are presented with simple HTML code, File use external reader embed on the website.

Should I build three diffrent tables and use JOIN while getting these data or build one table and store all types in there? Which attitude is more efficient?

Additional info - there are going to be really huge amounts of records.

Upvotes: 2

Views: 403

Answers (3)

Horen
Horen

Reputation: 11382

That depends on the structure of your data.

If you have 1:1 relationships, say one book has one author, you can put the records in one row. If one book has several authors or one author has several books you should set up seperate tables books and authors and link those with a table author_has_books where you have both foreign keys. This way you won't store duplicate data and avoid inconsistencies.

More information about db normalization here:

http://en.wikipedia.org/wiki/Database_normalization

Upvotes: 1

andy
andy

Reputation: 2399

Separate them and create a relationship. That way, when you start to get a lot of data, you'll notice a performance boost because you are only calling 3 fields at a time (IE when you are just looking at a book) instead of 7.

Upvotes: 0

pratz
pratz

Reputation: 358

The logical way of doing this is keeping things separate, which is following the 3NF rules o the database design. This gives more flexibility while retrieving different kinds of results specially when there is huge amount of data. Putting everything in a single table is absolutely bad DB practice.

Upvotes: 4

Related Questions