I am planning for a database to have an enterprise cloud service. The service is going to be two web programs, one Warehouse management system and something for Bills.

Companies can register and be a "user" from the service, they might have their Inventory and Invoice system online.

Must I keep all customers/companies within the same table or must i have one table/application per user? It might be much simpler to keep if all customers/companies make use of the same database table, but It could be simpler to implement the serial number on bills basically play one table per user/company.

The Inventory/Warehouse will contain as much as 5,000 products per user/company.

Each Invoice are needed to possess a serial number, beginning from 1 for that first invoice. So a car-Increment-column will be a wise decision, basically have one table per user/company. Or how must i solve it basically invest companies within the same table and employ a company_id-column?

How must i design the database for this kind of application? I'll use MySQL as DBMS.

beginning from 1 for that first invoice: that's most likely not recommended. Potential clients most likely were built with a existence before they join your merchandise.

how must i solve it basically invest companies within the same table: just calculate the MAX of InvoiceId For Your CUSTOMER, then increment it.