I'm developing a page where people can publish articles. Once the user posts articles, it turns up on a listing, such as the related questions about stackoverflow (whenever you give a new question). It's quite simple.

My issue is which i have 2 kinds of customers. 1) Non listed private customers. 2) A business.

The non listed customers must key in their title, email and make contact with. Whereas the organization customers just must key in their company title/password. Quite simple.

I have to lessen the excess database usage and then try to optimize the database and make the tables effectively.

How to my condition in hands:

And So I have one table using the details about the businesses, ID (guid), Name, email, phone etc.

I believed about creating one table known as articles that contained ArticleID, Headline, Content and Posting date.

One table using the details about the non listed customers, ID, their title, email and make contact with.

How do you tie the articles table to the organization/non listed customers table. Could it be good to create an integer that consists of 2 values, 1=Non listed user and a pair ofEqualsOrganization after which one area by having an ID-number towards the specified user/company. It appears as if you need procuring code to question the database. Performance? How could then i return the content together with the contact details? It's also wise to have the ability to return all of the articles from the specific company.

So Table company could be:

ID (guid), company name, phone, email, password, street, zip, country, state, www, description, contact person and a few more that i don't have here right now.

Table Non listed user:

ID (guid), name, phone, email

Table article:

ID (int/guid/short guid), headline, content, published date, is_company, id_to_user

It is possible to better approach?

Characteristics that i'm searching for is: Performance, Simple to query and simple to keep (adding new fields, indexes etc)