Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6546047
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T11:39:37+00:00 2026-05-25T11:39:37+00:00

I have made a custom CMS and I’d like to make it multi-client while

  • 0

I have made a custom CMS and I’d like to make it multi-client while duplicating as little as possible. I don’t mean multi-user as in different people in the same organisation accessing the same program, I mean multiple-clients as in different organisations using their own access of the same program as though they are independent applications.

I understand the principle of sharing functions, and I imagine I’d need to put all the functions I’ve created into a shared folder in a parent directory.

I think I have got my head around at least the way the code works, but the database(sql) structure seems like the biggest challenge.

How is this typically accomplished?

My tables are fairly basic and I can see after doing some reading that its normal to simply add a ‘client_id’ or ‘app_id’ or something like this to every table and entry. This way there is not a duplicate of the databases, however then you get a mixture of all the clients data in the same tables. The problem it seems comes with if this program were to get very large with many clients that the data multiplies and so does the speed of the system for everybody. I’m not at that stage yet however, so should I not worry about that far ahead and cross that bridge when it comes since for now the speed sacrifice would be negligible?

Is it possible to somehow keep databases separate without doubling up on work if I change the structure of a table in the future or add extra fields etc?

I understand this might be difficult to answer without knowing the way I’ve structure my tables but they are quite simple like:

unique_id    |      title    |      modified_date       |      content
  xx                hello           0000-00-00 00:00:00       i am content     

The best I can think so far is that this would then become:

client_id     |    unique_id    |      title    |      modified_date       |      content
 xx                  xx                hello           0000-00-00 00:00:00       i am content     

like I said, I see this could run into some problems mostly with becoming bloated down the track but right now I don’t see another way – perhaps you have another way of looking at this. Thanks.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T11:39:38+00:00Added an answer on May 25, 2026 at 11:39 am

    Keep it as a single database with the client_id column added. If it gets large with many clients, partition the tables by LIST: http://dev.mysql.com/doc/refman/5.5/en/partitioning-list.html

    Horizontal partitioning allows you to have one logical table be sub-divided so when your SQL includes “… WHERE client_id = 1”, it will only ever have to read the index(es) or partition that contain “client_id = 1” data. Other partitions get ignored, almost as if you have a separate table for each client_id.

    DISCLAIMER: I haven’t used partitioning in MySQL myself. I’m just familiar with the concept from Oracle. Be sure your MySQL storage engine supports partitioning: http://dev.mysql.com/doc/refman/5.5/en/partitioning.html

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Here's what I have: Custom-made C# CMS where the content is stored in a
i'd like to add a media library to a custom-made CMS that is build
I have made a custom UserControl i Vb.net (windows application). How can I add
Coming from this question , I have a wxComboCtrl with a custom popup made
I have made a SVG image, or more like mini application, for viewing graphs
I have made a little app for signing up for an event. User input
We have a custom PHP/MySQL CMS running on Linux/Apache thats rolled out to multiple
As part of a CMS, I have created a custom VirtualPathProvider which is designed
I have made a custom button based on an image by more or less
I have made a custom input method for formtastic, it is designed to work

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.