# Data architecture and Row Owners

**URL:** <https://community.glideapps.com/t/data-architecture-and-row-owners/77567>\
**Category:** Ask for Help\
**Created:** [November 2, 2024, 8:21am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567 "2024-11-02T08:21:24Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Samuel\_Bergstein](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/samuel_bergstein/32/81546_2.png) [@Samuel\_Bergstein](https://community.glideapps.com/u/Samuel_Bergstein)\
**Post date:** [November 2, 2024, 8:21am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/1 "2024-11-02T08:21:24Z")

</div>

I am a beginner and have been reading up about Row Owners and numerous similar questions and answers, but I still don’t get it.

I want to develop an app where each user only sees their own data. So there is no interaction with other users.

As far as I understand, I only need to use “Row Owners” and not “User Specific Columns”.

In the app, the user enters their personal financial data (income and assets) and the app calculates various scenarios according to their financial data.

The user then sees a summary of the calculations on their personal dashboard.

As this is an app with various calculations based on the user’s personal financial data, I think it makes sense to create a separate table for each calculation/scenario. Otherwise the rows would become very long.

As I understand it, each user must therefore have their own row in each table, in which they are the row owner.

Here is my question about the data architecture:  
Should I take as much data as possible in the user table or is the user table only meant for account information (email, name, picture) of the users?

Here are my questions about Row Owner:  
How can I make sure that the user is also Row Owner on the other tables?  
And how do I get the data from the user table into the other tables?

Thank you very much for your help!

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [November 2, 2024, 8:31am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/2 "2024-11-02T08:31:45Z")

</div>

> [@Samuel\_Bergstein](#):
>
> As far as I understand, I only need to use “Row Owners” and not “User Specific Columns”.

As a general rule, yes.  
Generally, you only need to use User Specific columns when you want each user to have their own values in the _same_ row. This does not apply to your described use case.

> [@Samuel\_Bergstein](#):
>
> As this is an app with various calculations based on the user’s personal financial data, I think it makes sense to create a separate table for each calculation/scenario.

That sounds like a decent approach.

> [@Samuel\_Bergstein](#):
>
> Should I take as much data as possible in the user table or is the user table only meant for account information (email, name, picture) of the users?

Yes, no, maybe 😉  
Once you have User Profiles configured, then your Users table has some special properties that can be quite useful. Most notably, any value in the User Profile row can be accessed directly (either for read or write) from anywhere in the App. So this makes it a convenient place to store values that you might need to access from multiple other tables.

> [@Samuel\_Bergstein](#):
>
> How can I make sure that the user is also Row Owner on the other tables?

Make sure you have an email column in each of those tables, and make that column a row owner. Then every time a user adds a row to one of those tables, write their email address into that column. Assuming you’ll be using a native form to add rows, you should pass the email address as a “user profile value” with the form. See [here](https://www.glideapps.com/docs/reference/values#user-profile-values).

> [@Samuel\_Bergstein](#):
>
> And how do I get the data from the user table into the other tables?

In most cases you don’t need to do that, as you can access it directly (see what I wrote above).

---

<div class="post-metadata">

**Author:** ![Samuel\_Bergstein](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/samuel_bergstein/32/81546_2.png) [@Samuel\_Bergstein](https://community.glideapps.com/u/Samuel_Bergstein)\
**Post date:** [November 4, 2024, 3:09pm UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/3 "2024-11-04T15:09:56Z")

</div>

Dear Darren, thank you very much for your feedback. Your answers really help me a lot. I will insert the email address of the users as a user profile value in each form, so I have the email address in each table and can define row owners. Thank you very much!

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [November 5, 2024, 12:26am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/4 "2024-11-05T00:26:31Z")

</div>

Feel free to let us know if you have any further questions!

---

<div class="post-metadata">

**Author:** ![Samuel\_Bergstein](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/samuel_bergstein/32/81546_2.png) [@Samuel\_Bergstein](https://community.glideapps.com/u/Samuel_Bergstein)\
**Post date:** [November 5, 2024, 6:54am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/5 "2024-11-05T06:54:59Z")

</div>

Thank you very much. I actually still have a few questions.

I have now created a form which creates a new row as an action and takes over the email address of the user. So far so good.

But if I have different calculators on different tables, how can I also create a new row there?

I would also like to make the computer dynamic so that the user can change the data without a “submit button”, how can I ensure this?

I assume that I have to create all calculations in a single table or for each user in a row, correct?

I don’t quite understand how, for example, a relation to another table creates a new row for the respective “row owner”.

Thank you very much!

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [November 5, 2024, 7:33am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/6 "2024-11-05T07:33:46Z")

</div>

I think at this point a few screen shots that show how your data is structured would be useful to help visualise your setup.

---

<div class="post-metadata">

**Author:** ![Samuel\_Bergstein](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/samuel_bergstein/32/81546_2.png) [@Samuel\_Bergstein](https://community.glideapps.com/u/Samuel_Bergstein)\
**Post date:** [November 5, 2024, 8:31am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/7 "2024-11-05T08:31:33Z")

</div>

I think my problem is very simple for you experts, but I just don’t understand how glide functions.

I want to create a calculator where each user can enter his own data and the calculations and charts are filled in accordingly (see screenshot “Layout”).

 ![Layout](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/9/5/95e79702ff334b86aa9263c1da539ab604850a37.png)

With the same data, different calculations should be performed on different tables and different charts should be displayed on different screens.

The user should be able to easily edit the data (without a submit button) and the calculations and charts will change accordingly.

I mistakenly created the calculator with “User Spesific Colums” (see screenshot “Datatale”).

 ![Datatable](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/b/b/bb05f139ecdd2e65c08bf71e464eb1d1b20af0b2.png)

How can I ensure that a new row is generated for each table (or each calculator) so that each user has their own data as “Row Owner”?

I know how to do this with a form. But you have to click the “Submit” button" every time.

And the form only adds the email address (as a value for “row owner”) in one table and not in several different tables.

Sorry for the long explanation and many thanks for your help!

---

<div class="post-metadata">

**Author:** ![Samuel\_Bergstein](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/samuel_bergstein/32/81546_2.png) [@Samuel\_Bergstein](https://community.glideapps.com/u/Samuel_Bergstein)\
**Post date:** [November 5, 2024, 12:17pm UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/8 "2024-11-05T12:17:01Z")

</div>

Hi Darren, I think I found a similar topic in the forum. But I don’t understand how to get the user’s email address into the table without a new form?

How do I populate that with the Users Email adress?

> [@Row Owners Shared Between Glide Tables](https://community.glideapps.com/t/row-owners-shared-between-glide-tables/61160/2):
>
> You need a (non-computed) owner column in every table. In terms of populating that, you can add the Users Email address as a Special Value when a User adds a thing.

I know how to do it with a form but then users would have to submit the form and it not dynamic…

Thanks!

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [November 5, 2024, 1:06pm UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/9 "2024-11-05T13:06:08Z")

</div>

Okay, after now having read through your last couple of posts, I’m now thinking that you should in fact be using User Specific columns rather than row owners.

If I’m understanding correctly, it sounds like all you need is a single row in each table with a series of User Specific columns, plus whatever computed columns you need for the calculations.

If you want to use any of the entered values in other tables, you can use Single Value columns to bring them across. Either that, or have all user supplied values added directly to columns in the User Profile row, then they can be accessed directly from anywhere.

The above will achieve your goals of:

- each user has their own values, which no other user can see
- users can change the values without having to use a form or create new rows

---

<div class="post-metadata">

**Author:** ![Samuel\_Bergstein](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/samuel_bergstein/32/81546_2.png) [@Samuel\_Bergstein](https://community.glideapps.com/u/Samuel_Bergstein)\
**Post date:** [November 6, 2024, 7:14am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/10 "2024-11-06T07:14:22Z")

</div>

Thank you very much, Darren!

I think I’m starting to understand what my options are.

Single values, or computed colums in general, cannot be user specific.

So if I don’t want to have a form or a submit button to enter data, then the user has to re-enter the data for each calculator or table.

Otherwise I have to make a form (table crossing) and work with row owners or catch the email as value each time.

I will think about how to proceed. Thanks again for your support!

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [November 6, 2024, 7:19am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/11 "2024-11-06T07:19:15Z")

</div>

> [@Samuel\_Bergstein](#):
>
> Single values, or computed colums in general, cannot be user specific.

That’s not exactly true.  
If a single value column (or any computed column) references a non-computed user specific column, then the results will necessarily become user specific. That is, every user will see a different result based upon their value in the user specific column.

---

<div class="post-metadata">

**Author:** ![Samuel\_Bergstein](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/samuel_bergstein/32/81546_2.png) [@Samuel\_Bergstein](https://community.glideapps.com/u/Samuel_Bergstein)\
**Post date:** [November 6, 2024, 9:01am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/12 "2024-11-06T09:01:23Z")

</div>

Oh well…

Once again, that’s a game changer 🙂

I have copied my app and am trying it out all options.  
Learning by doing is best in my opinion.

I’ll get back to you if I have any questions and thank you very much for your support!

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/system/32/53398_2.png) [@system](https://community.glideapps.com/u/system)\
**Post date:** [November 13, 2024, 9:02am UTC](https://community.glideapps.com/t/data-architecture-and-row-owners/77567/13 "2024-11-13T09:02:16Z")

</div>

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.
