Basic Rules to follow while structuring Database

  1. Base Schema Template
    The Base Schema is a simple set of common fields you add to every new data type.
    It keeps your database consistent.
    Instead of creating random fields for every table, you start from this shared setup — the same core fields, with the same names and field types.

    Why use it? -

    1. Consistency:
      You can switch data sources or reuse workflows without breaking them.
      When you change datatype/source, the field values do not break, they retain value due to similar fields.

    2. Scalability**:**
      Every record connects to an Account, even if it’s a solo user today. Later, when you add teams or shared billing, it’ll already work.

    3. Traceability**:**
      Each record shows who created it, who owns it, and who last updated it — perfect for logs or admin audits.

Field Name Field Type List Notes / Purpose
Name text The universal “title” or display label for any data type. Always lowercase “name” for cross-type consistency.
Description text (long text recommended) Optional contextual info or notes for this record. Enables consistent tooltips, hover previews, and admin readability.
CreatedBy User Keeps a direct reference to the creator of the record.
Account Account Ties every record to its owning Account (even in single-user apps). Enables future B2B multi-user scalability without restructuring.
Status Option Set: Status Helps control actions on records.
Owner User In multi-user environments, differentiates between “Created By” (the one who made it) and “Owner” (the one currently responsible).
LastUpdatedBy User For audit/change log purposes when teams edit shared data.

Option Set: Status

Used globally for all entities to define workflow or lifecycle state.

Options:

        • Active

        • Inactive

        • Draft

        • Blocked

        • Reported

        • Deleted

    • Data Weight and Quantity

      • 1. Do not have a lot of columns in one table.

      • 2. Do not overuse List Fields, keep the number below 100.

      • 3. Use another table (satellite) if more records are needed.

  1. Satellite Data Types
    • A Satellite Data Type is an additional data type that extends another one with information that doesn’t need to belong in the main record.

    • The satellite and main are interlinked to each other.

    • User > User Profile

    • User > User Onboarding

    • Why To use it -

      • To keep the main data type clean - The User type should only hold the absolute essentials — email, account, status, etc.

      • To improve performance - Every time a user loads a page, Bubble sends the full User record to the browser.
        Fewer fields = smaller downloads = faster pages.

      • To separate responsibilities
        Different kinds of data serve different purposes.
        Profile info belongs to the public layer.
        Onboarding belongs to internal app logic.
        By splitting them, you can manage privacy, workflows, and permissions independently.

  • Data Naming

    • 1. All Data tables should follow a similar consistent naming for all identical fileds, -
      name, created by, status etc.

    • 2. Use a specific name that exactly describes the meaning of the field, rather than any random naming.

    • 3. follow pascal case - FullName

    • 4. Grouping - tables in bubble follow alphabetical sorting, so adding a emoji or a number in the beginning will group them together.

    • 5. add a _ in front of relational fields to keep them on the top.