Mr.Tanav
Mr.Tanav

Reputation: 107

How to create a table for a user in a Database

I am creating an mobile application. In this app, I have created a Login and Register activity. I have also created a online Database using AWS(Amazon Web Service) to store all the login information of the user upon registering.

In my database, i have a table called 'users'. This table holds the following fields "fname","lname","username","password". This part works and successfully stores data from my phone to the database.

for example,

   | fname  |  lname | username | password | 
   | ------ | ------ | -------- | -------- |
   | john   |  doe   | jhon123  | 1234     |

Inside the app, I have an option where the user may click on "Start Log", which will record a start and end values on a seekBar.

How can i create a table under a user who is logged in.

(Essentially, i want to be able to create multiple tables under a user.)

for example,

This table should be under the user "john123":

   | servo  |  Start | End | 
   | ------ | ------ | --- | 
   |    1   |   21   |  30 |
   |    2   |   30   |  11 |
   |    3   |   50   |  41 |  
   |    4   |    0   |  15 |

I know its a confusing question, but

i am essentially just trying to have multiple tables linked to a user.

Upvotes: 1

Views: 686

Answers (2)

Artur Grigio
Artur Grigio

Reputation: 5553

As to:

How to create a table for a user in a Database

Here are some GUI tools you might find useful:

As for creating a separate table for each user, refer to @Polymath's answer. There is no benefit in creating separate tables for each user (you might as well use a json file).

What you should do is create a logs table that has a user_id attribute referencing the id in the users table.

 -------------------------------------------------------
| id | fname  |  lname | username | password            | 
| -- | ------ | ------ | -------- | ------------------- |
| 1  | john   |  doe   | jhon123  | encrypted(password) |
 -------------------------------------------------------
  |______
         |
         V
 ---------------------------------------
| id | user_id | servo_id | start | end |
| -- | ------- | -------- | ----- | --- |
| 1  | 1       | 1        | 21    | 30  |
| 2  | 1       | 2        | 30    | 11  |
 ---------------------------------------

You should also look into database normalization as your "john123" table is not in 3NF. The servo should be decomposed out of logs table if it will be logged by multiple users or multiple times (which I'm guessing is the case for you).

Upvotes: 3

Polymath
Polymath

Reputation: 125

In reading this I wonder if your design is right. It sounds like you are trying to create a table for each user. I also wonder how scalable it is to have a unique table per user. if you scale to millions of users you will have millions of tables to manage and will probably need a separate index table to find the right table for the user. Why a table for each? Why not a single table with the UserID as a use key value. You can extract the data just by filtering on the UserID.

Select * FROM UsersData ORDER BY DateTime WHERE User == UserID

However I will leave that for you to ponder.

You mentioned that this is a Mobile App. I think what you need to do is look at AWS Federated access and Cognito which will allow you to Identify a user using federate Identities. Pass the User unique Id , plus a temporary (one use) credentials linked to an access Role. Combined this way, you can scale to millions of users with full authentication without managing millions of accounts.

RL

Upvotes: 2

Related Questions