Currently I have a small business where I have a main product (written in PHP and MySql), several users, several companies, etc.
The software occupies around 20 tables in its operation. The problem is that I want to expand the business and create a different program, but I want to unify the data.
A new program (different function) will use about 30 tables, but in reality there is a "core" that are the same tables, let's say 10.
Here I have two options:
-
Create a larger database with
20 + 30 tables, (since some were repeated) = 40 tables. -
Or create different and connected databases
DB_core = 10 tables
DB_1 = 10 tables
DB_2 = 20 tables
Why using different databases?
I already want to develop this second software with a different team, but I don't want to give them access to some sensitive or valuable information, tables of people, companies, etc. This data will keep it in the "core" database and only in the production server.
From what I understand, users can be created with permissions by tables, but I feel that it is much easier to keep us in separate databases. Are there any significant performance implications? Is the most extensive programming worth it?
PD: Sometimes, I need the programmers team manage the production server.
Best Answer
A logical separation by databases is a sensible move.
There is no performance impacts of this compared to table separation.
Programming becomes referencing by
database.table
rather than justtable
.Eventually you'll need to raise the table cache sizes in your server.
Be careful with permissions and provide guidance for your programmers. Too often they open up permissions to try to make things work.