create table project
	(project_id integer primary key,
	project_name varchar[100] not null,
	owner_id integer references developer(user_id),
	description varchar[200] not null,
	status char[1] check status in ('y','n'),
	download_link varchar[50] not null,
	homepage_link varchar[50] 
	rank integer,
	activity  numeric(4,2),
	downloads integer
	);
create table project_patch
	(project_id integer references project(project_id),
	patch_id integer,
	patch_name varchar[50] not null,
	description varchar[200] not null,
	status char[1] check status in ('y','n'),
	primary key(project_id,patch_id));
create table developer
	(user_id integer primary key,
	user_login varchar[30] not null unique,
	passwd varchar[10] not null,
	name varchar[50] not null,
	email varchar[50] not null,
	homepage varchar[50]
	);
create table non_developer
	(user_id integer primary key,
	user_login varchar[30] not null unique,
	passwd varchar[10] not null,
	name varchar[50] not null,
	email varchar[50] not null,
	homepage varchar[50]
	);
create view subscribed_user(user_id,user_login,passwd,name,email)
	((select user_id,user_login,passwd,name
	from developer)
	union
	(select user_id,user_login,passwd,name
	from non_developer));
create table proj_category
	(project_id integer references project(project_id),
	category varchar[100],
	primary key(project_id,category));
create table project_rank 
	(project_id integer references project(project_id),
	user_id integer references subscribed_user(user_id),
	rank integer not null
	) 
create table proj_dependency
	(project_id integer references project(project_id),
	dependent_proj integer references project(project_id),
	primary key(project_id,dependent_proj));
create table subscribe_proj
	(project_id integer references project(project_id),
	user_id integer references subscribed_user(user_id),
	status char[1] check status in ('y','n'),
	join_date date,
	designation varchar[10] check designation in ('admin','developer','pending'),
	primary key(project_id,user_id)
	);
create table transact_addon
	(
	transcation_id integer primary key
	); 
create table develop_project
	(user_id integer references subscribed_user(user_id),
	submit_date date,
	description varchar[100],
	transaction_id integer references transact_addon(transaction_id) primary key,
	addon_type varchar[10] not null,
	project_id integer references project(project_id)
	);
create table addon
	(addon_id integer,
	addon_name varchar[20] not null,
	addon_type varchar[10] not null,
	status char[1] check status in ('y','n'),
	description varchar[200] not null,
	project_id integer references project(project_id),
	primary key(addon_id,project_id)
	);
create table bug
	(
	bug_id integer primary key
	);
create table submit_bug
	(user_id integer references subscribed_user(user_id),
	project_id integer references project(project_id),
	description varchar[200] not null,
	bug_id integer references bug(bug_id) primary key
	)


