You don't have to do it the Drupal way, if you need some Drupal things to work on you data too. I also have developed a module. It accesses a database, displays data from it, then an authorized user can update data and my module will save it. But these will not be nodes. Unless you need (for example) some hooks that run on nodes to run on your content, just use your PHP knowledge to create the content for the page.
You use hook_menu to define the paths that will display your pages. For example in my code (detail_pages module) the queries get two parameters in the path like example.com/strain/3/4, I define it like as follows, and I used php calls to database in my detail_page($arg1, $arg2) function definition.
function detail_pages_menu() {
$items = array();
$items['strain/%/%'] = array(
'title' => t('Strain Detail Page'),
//'page callback' => 'strain_form',
'page callback' => 'detail_page',//'drupal_get_form',
//'page arguments' => array('strain_detail_form'),
'page arguments' => array(1,2),
'access callback' => TRUE,
'access arguments' => array('access content'),
'description' => t('Detail Page'),
'type' => MENU_NORMAL_ITEM,
);
....
To answer your specific questions
Do I have to define a content type for it?
No. You can use page render array, or even add direct html to pages in PHP.
Is it easy if I don’t use content types and having permissions controlled manually?
Yes. In the above example I wrote, this line is for permissions:
'access callback' => TRUE
this allows everybody to view. You can assign a function in place of TRUE, to return a boolean to represent if user it authorized to view that page.
Supposing that I have to define a content type. My database has 5 tables. Should I define 5 different content types?
Especially if you need a nice database structure, you may want to avoid using nodes and defining content types. Drupal creates a table for what would be a column logically keyed by node ID. So you have many unnecessary tables...