The document summarizes the design of a classified ads database for a university student council website. It will allow users to post classified listings to sell items which will be stored in the database and searchable by other users. Administrators can view all posts and remove inappropriate ones. The database will have tables for users, listings for books, cars, items, sublets, photos, and categories. It was designed to meet student needs and integrate with the existing student council website.
The document summarizes the design of a classified ads database for a university student council website. It will allow users to post classified listings to sell items which will be stored in the database and searchable by other users. Administrators can view all posts and remove inappropriate ones. The database will have tables for users, listings for books, cars, items, sublets, photos, and categories. It was designed to meet student needs and integrate with the existing student council website.
March 8, 2007 1 Project Domain This project will consist of creating a set of web pages that will allow users to post items that they wish to sell (i.e. classieds in the newspaper). These items will be stored in a database that other users will be able to view and search. The posters of items will be able edit and delete their own postings from the database. There will also be administrators that will be able to view all postings and remove any inappropriate postings. The administrators will also have other rights that ordinary users can not access. 2 Customer Desires The Flying A, a Mount Allison clothing business, used to send out emails to students containing information about sublets, items for sale, and other things you would nd in the classied section of a newspaper. With the university taking over the business, the store closed and no longer oers this service. Other services exist but they lack the ability to properly handle this new domain because they were not designed to oer accommodating features. The MTA Co-op on Proboards and Student Administrative Council (SAC) forums can be used to post information about things and threads about selling items. The problem with this is that there is no easy way of searching or organizing the information to make it easily available. Facebook ads can be used to sell items but there is a cost for posting. Posters on bulletin boards can be eective because they convey the information easily and properly, but lack an easy way of searching, mass distribution, and cost money. Therefore the SAC decided that they needed to develop their own classied website to serve this need. Recently the SAC has been trying to become the information hub to students both on campus and o, therefore it crucial that the new site be both widely accessible and easy to use. The goal of the database driven website is to hold all relevant information for the classied listings of students and sta. The original decisions about relevant information were given by the SAC in Figure 4. From this, the initial database design was constructed. 3 Development Environment This project will be developed to t in with the current MTA SAC website as an addition module. It will be developed seperately from the MTA SAC and then merged with the site upon completion and testing. The MTA SAC currently hosts their site on an external UNIX server running an Apache web server and will soon be transfering its page over to servers operated by MTAs Computing Services Department. Both the current and future location for the site are running PHP4 and MySQL 4. These are the tools used for development of this project as they are fairly simple to use and available freely to the public. Code will be developed either locally on independant machines and uploaded to the site using FTP or will be edited on the y by using a secure shell and text based editors. The site will be backed up frequently to help recover from any mistakes that may occur throughout the development process. 4 Current Design The MTA SAC site already has some of the basic structures setup for use within this project. The user management of the site will be done through the MTA SAC website as it already has the functions required to perform these operations. The users will log in using their MTA username and password. If they havent previously registered then they will be asked to ll in information such as their mailbox number or a brief personal biography. A templating system similar to the one used by the MTA SAC will be used to create consistency through- out the various pages. Keeping with the same ow as the current site will make it simpler and more intuitive for the users to navigate the site. This templating system is built to accomodate modules for menus based on user and administrative rights, only showing what a given user is allowed to do. 5 Database Design The overall design of the database came from Figure 4. These concept were then translated into tables that are keyed by unique, auto-incrementing intergers. The use of integer keys was chosen because it simplies passing of ids through various functions and cuts down on repetition of text in multiple tables. Through discussions with the client we decided to add in a couple of very simple additional tables to help store some repeated values. E.g. Price Cond, and Category. Although these could have been implemented as ENUMs, breaking them o into separate tables allows for simple modication of the lists with less chance of currupting the table on a given change. 2 5.1 Structure The database will consist of 10 tables; User, Book, Category, Book Listing , Carpool Listing, Item Listing, Sublet Listing, User Priv, Price Cond, Item Photo. The primary keys for each entity (table) are written in bold-italic, unique keys are written in bold, foreign keys are written in teletype, and descriptions of all the attributes are provided below. 5.2 User entity user id INTEGER Unique identier for user username VARCHAR The users MTA username password VARCHAR The users password (stored as a SHA1 hash of the actual password) name VARCHAR The users full name mailbox INTEGER The users text mailbox registered BOOL If the user has successfully be registered banned BOOL If the user has been banned from the site temp pass BOOL If the users password is only temporary. 5.3 Book entity book id INTEGER Unique identier for book ISBN short VARCHAR The International Standard Book Number 10 ISBN long VARCHAR The International Standard Book Number 13 last edited by INTEGER The last user to have edited the book entry title VARCHAR The title of the book edition VARCHAR The edition of the book publisher VARCHAR The publisher of the book year DATETIME The year the book was published author VARCHAR The author of the book 3 5.4 Book Listing entity book list num INTEGER Unique identier for book listing user id INTEGER The user that owns the listing book id INTEGER The book being listed price cond id INTEGER The price condition of the listing price INTEGER The price the user wants for the book courses used VARCHAR The course codes for the books being used (comma separated) condition VARCHAR The condition of the book expire time DATETIME The removal time of the book listing 5.5 Carpool Listing entity carpool id INTEGER Unique identier for carpool listing user id INTEGER The user who created the carpool listing start loc VARCHAR The starting location of the driving route end loc VARCHAR The destination of the driving route frequency ENUM The frequency of travel num space INTEGER The number of available seats expire time DATETIME The removal time of the carpool listing 5.6 Item Listing entity item id INTEGER Unique identier for item listing user id INTEGER The user who created the item listing price cond id INTEGER The price condition of the listing cat id INTEGER The category identier of the item title VARCHAR The title of the item description TEXT The description of the item condition VARCHAR The condition of the item price INTEGER The price of the item expire time DATETIME The removal time of the item listing 4 5.7 Sublet Listing entity sublet list num INTEGER Unique identier for sublet listing user id INTEGER The user who created the sublet listing price cond id INTEGER The price condition of the sublet listing address VARCHAR The address of the sublet walking dist INTEGER The walking distance to campus num rooms ENUM The number of rooms available description TEXT The description of the sublet listing price INTEGER The price of the sublet listing expire time DATETIME The removal time of the sublet listing occupancy INTEGER The number of total rooms type ENUM Choice of (summer, roommate, school) 5.8 Item Photo entity photo id INTEGER Unique identier for photos item id INTEGER The item contained in the photo photo small BLOB The thumbnail version of the photo photo large BLOB The larger version of the photo 5.9 User Priv entity user id INTEGER Combined identier for user privilege priv name INTEGER Combined identier for user privilege 5.10 Category entity cat id INTEGER Unique identier for categories cat name VARCHAR The category name 5.11 Price Cond entity price cond id INTEGER Unique identier for price conditions cond name VARCHAR The price condition name 6 Functional Dependencies and Normalization Our database is normalized using Third Normal Form. Each one of the keys functionally determines every attribute in its table. There also exists other functional dependencies, but they do not violate third normal form. 5 These functional dependencies are: username every attribute of the Users table ISBN short every attribute of the Book table ISBN long every attribute of the Book table cat name cat id cond name price cond id If we used the Boyce-Codd method then these functional dependencies would be violations and restruc- turing would need to take place. In our application, the current structure is optimal because all violations are one to one dependencies with the keys of their table. Functional dependencies also exist based on foriegn keys which can be seen in Fig 1. 6 Figure 1: Database Design 7 Figure 2: E/R Diagram showing basic structure of the database 8 Figure 3: Use cases that the site and database are based on 9 Figure 4: Design ideas presented by the S.A.C. 10
Building Serverless Apps with Azure Functions and Cosmos DB: Leverage Azure functions and Cosmos DB for building serverless applications (English Edition)
Building Modern Web Applications with ASP.NET Core Blazor: Learn how to use Blazor to create powerful, responsive, and engaging web applications (English Edition)