Since this is school project, we had to develop a design document for this project, the design document is now very out-dated, so I picked out some sections that are still relevant and post them here.
properties: conference_id, name, description, topic, location, start_date, end_date, url
====
properties: user_id, user_name, password, first_name, middle_name, last_name, affiliation, phone, email, addition_contact, create_date ^L
====
properties: user_id, user_name, password, first_name, middle_name, last_name, affiliation, phone, email, addition_contact, create_date
====
properties: user_id, user_name, password, first_name, middle_name, last_name, affiliation, phone, email, addition_contact, create_date
====
properties: paper_id, abstract, title, keywords, status, original_paper, file_name, content_type, last_modified
====
properties: review_id, recommendation, feedback, submitted_date, released
conference_id - primary key name - string:255 description - string:5000 topic - string:255 location - string:255 start_date - date (conference start date) end_date - date (conference end date) url - string:500 (conference url)
user_id - primary key user_name - string:8-30 password - string:8-30 first_name - string:255 middle_name - string:255 last_name - string:255 affiliation - string:500 (e.g. Drexel University) phone - string:255 email - string:255 additional_contact - string:5000 create_date - date user_type – enum: “ADMIN”, “EDITOR”, “REVIEWER”, etc
paper_id - primary key abstract - string:5000 title - string:500 keywords - string:255 status – enum: "ACTIVE", "PUBLISHED", etc content_type - string:255 (e.g. "content_type/pdf") file_name - string:255 (original paper file name) original_paper - Blob (binary object for storing the original paper) last_modified - Date user_id - fk<User.user_id> (user id of the submitter/author) conference_id - fk<Conference.conference_id> (the conference this paper is submitted to)
review_id - primary key paper_id - fk<Paper.paper_id> (the paper of this review) user_id - fk<User.user_id> (the reviewer of this review) recommendation - int<1~5> (publish recommendation, scale 1 to 5) feedback - string:5000 submitted_date - date released - boolean (is the review released)
user_id - fk<User.user_id> (the editor's user id) conference_id - fk<Conference.conference_id> (the conference id that the editor is associated with)
user_id - fk<User.user_id> (the reviewer's user id) conference_id - fk<Conference.conference_id> (the conference id that the reviewer is associated with)
user_id - fk<User.user_id> (the reviewer's user id) paper_id - fk<Paper.paper_id (the paper that is being reviewed)
CMS uses a multi-tier design to divide the system into three layers: Presentation Layer, Domain Layer, and Data Layer. This layering architecture is a very common design pattern in data-driven software systems with well documented benefits. These benefits include:
CMS is divided into the following layers given the fact that it performs the following three main tasks: gathering user input, storing the input as data, and manipulating the data as dictated by established operational procedures: