Users and Roles is a many to many relationship, same goes for Roles and Permissions
Maybe this will give you an idea:
/**
* Table Name: users
*/
id int primary key unsigned not null auto increment
username varchar (30) unique
password varchar(60)
email_address varchar (50) unique
first_name varchar (30)
last_name varchar (30)
active boolean
remember_token varchar nullable
created_at timestamp
deleted_at timestamp
updated_at timestamp
/**
* Table Name: roles
*/
id int primary key unsigned not null auto increment
role varchar (30) unique
created_at timestamp
deleted_at timestamp
updated_at timestamp
/**
* Table name: role_user
* Type: Pivot table
*/
id int primary key unsigned not null auto increment
role_id int unsigned
user_id int unsigned
created_at timestamp
deleted_at timestamp
updated_at timestamp
/**
* Table name: permissions
*/
id int primary key not null unsigned auto increment
permission varchar (30) unique
description text
active boolean
created_at timestamp
deleted_at timestamp
updated_at timestamp
/**
* Table name: permission_role
* Type: Pivot table
*/
id int primary key not null unsigned auto increment
permission_id int unsigned
role_id int unsigned
created_at timestamp
deleted_at timestamp
updated_at timestamp
Also, you can check out some of the ACL packages on github, how the database structure for these tables is set up.