I have an old database to refactor and have faced this table:
Member
id | Name | Role
1 | Tyler | 6
2 | Jane | 16
3 | Jack | 20
Role
id | role | Level
1 | Visitor | 1
2 | Member | 2
3 | Monthly Member | 4
First, I was confused because role in member table didn't match with any data in role table. After analyzing source codes, I've learned that this programmer had come up with his own way of doing it...
selected roles = 2^(role's level).
ie) Jack is a Member & a monthly Member
Jack's role = 2^(member level) + 2^(monthly member level) = 2^2 + 2^4 = 20.
Well, Here is I want to do. I will create three tables representing many-to-many relationship.
Member
id | Name
1 | Tyler
2 | Jane
3 | Jack
Role
id | role
1 | Visitor
2 | Member
3 | Monthly Member
Member_Role
member_id | role_id
1 | 1
1 | 2
3 | 2
Now, I want to select all members and insert appropriate member_id & rold_id to Member_Role table but not sure how to code this query. My general idea is this...
//Select all members from member table
//if role is 16
// insert his member id and monthly memberid to member_role table
//if role is 20
// insert his member id and member(role) id to member_role table
// insert his member id and monthly member id to member_role table
// and so on....
The important thing is I want to manually insert values depending on its condition. This is because I will rearrange the role's order and this "selected roles = 2^(role's level)" formula will not work anymore. Thus, I prefer it to be hardcoded instead of generic. It's one-time use code anyway...
Thanks !!