Get Instant Help From 5000+ Experts For
question

Writing: Get your essay and assignment written from scratch by PhD expert

Rewriting: Paraphrase or rewrite your friend's essay with similar meaning at reduced cost

Editing:Proofread your work by experts and improve grade at Lowest cost

And Improve Your Grades
myassignmenthelp.com
loader
Phone no. Missing!

Enter phone no. to receive critical updates and urgent messages !

Attach file

Error goes here

Files Missing!

Please upload all relevant files for quick & complete assistance.

Guaranteed Higher Grade!
Free Quote
wave

Step 1: Think of a practical application to a database backend, you may research this portion and provide citations within your report. Your proposed application must need a complicated database with at least six tables. Provide a two to three paragraph description of this application. A great example would be an inventory management system backend for a company with multiple products.


Step 2: Design the database utilizing an ER diagram (or several if it makes sense to do so),following by that create the UML class diagram for that database. Please include your diagram within your report.
Step 3: Analyze the database for performance and redundancy (this means you need to ensure your database is in 3NF). Include the analysis within your report. If it does not make sense to go all the way up to 3NF justify why.
Step 4: Analyze whether or not the database is in Boyce–Codd normal form, if it is not then why not? Would you benefit from the database being in Boyce-Codd normal form? Justify your answer. Include this within your report.
Step 5: Implement the database. Include the code within your report (with screenshots if applicable).
Step 6: Populate the database utilizing some mock data. This can be obtained from websites such as Mockaroo (https://www.mockaroo.com/). Show proof of this utilizing a screenshot that is included in your report.


Step 7: Run 5 useful SQL queries depending on your application for this database. Provide the screenshot output and include it in your report.
Step 8: Research how to make the database more efficient for scale and write a two to three paragraph description of what you found when you completed your research (please ensure that you cite credible sources).
Step 9: One of the most common scripts required for a database job is to export that database to a CSV or a text file. Write a script in any language that will do this, include the code in your submission.
Step 10: This is a bonus step. Design a front end for your system. This will vary depending on your application. The front end does not have to encompass your entire database, but it should include information being displayed or altered that is pertinent. This step is not required, but if you would like a bonus mark you can complete it! 

Application Description

The proposed application is a hotel booking system that will be used to manage hotel facilities and services as well as guest and booking records generated on a daily basis by the hotel. To discuss the requirements of the proposed application a hotel named comfy-inn is considered as the case study. Comfy-inn accepts invitations for bookings from its guests via phone call. Once a call is received, if the guest is a new guest, the details of the guest are recorded.

The receptionist then gives a list of rooms that are available for booking and some of the services that are available at the rooms. The guest gives the booking details and a booking for a room is made for that customer. The customer can also specify other services that he or she would like to be included in the room. On the day of check in the guest checks in and continues with the stay. During checkout, the amount accrued for the guest is calculated and the customer pays using any of the payment methods accepted by the hotel. The customer can also give notes on how the stay was or can review the staff that served them.

Based on the requirements an application can be developed to help manage the hotel. The application should be able to record guest details. It should also keep records of all the rooms and services that are available in those rooms. The application should enable bookings to be made for guests and should record any notes that are made by guests. On the checkout date, the application should be able to record payment details resulting to a payment. It should also keep a record of the staff working in the hotel and their roles within the system.

 Database analysis

Analysis of the database for performance and redundancy involves making sure that all the tables are in 3NF and for those tables that are not in 3NF, providing a justification on why there is no sense in going all the way to 3NF. Based on the ERD shown in step 3 above, all the relations shown in the ERD are in 3NF because they all meet the following conditions;

  • No table has repeating groups thus all relations are qualify to be in 1NF.
  • No table has partial dependencies thus they all qualify to be in 2NF. This means that no relation has a non-prime attribute that is functionally dependent on part the candidate key for each table.
  • No table has any transitive dependencies thus all relations qualify to be in 3NF. This means that each entity shown in the entity relationship diagram has only one key attribute which is the primary key of the table. The key attribute functionally determines all the other attributes.

By using this bottom-up approach, the database design can be verified to be in 3NF meaning that the database will perform optimally and no data redundancies will occur in the database.

For a relation to be in BCNF the following conditions must hold for that relation;

  • The relation must be in 3NF.
  • For any dependency XàY, X should be a super key.

Based on the ERD shown in step 2 above, all the relations meet all the conditions for BCNF because all relations are in 3NF and for any dependency XàY, X is the superkey.

Normalization to BCNF is important for a database it helps achieve more prevention of data redundancy in the database. This in turn helps in minimizing the disk space used for the database.

Database implementation

Code

CREATE DATABASE IF NOT EXISTS hotel DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

USE hotel;

CREATE TABLE IF NOT EXISTS booking (

Database Analysis

bookingID int(11) NOT NULL,

  `date` date NOT NULL,

  noOfAdults int(11) NOT NULL,

  noOfChildren int(11) NOT NULL,

  expectedArrivalTime datetime NOT NULL,

  expectedDepartureTime datetime NOT NULL,

  `status` varchar(10) NOT NULL,

  guestID int(11) NOT NULL,

  roomNO int(11) NOT NULL

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS booking_services (

  bokingID int(11) NOT NULL,

  serviceID int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS guest (

guestID int(11) NOT NULL,

  firstName varchar(100) NOT NULL,

  lastName varchar(100) NOT NULL,

  suburb varchar(100) NOT NULL,

  telNo varchar(25) DEFAULT NULL,

  email varchar(250) NOT NULL

) ENGINE=InnoDB AUTO_INCREMENT=160028 DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS guest_notes (

noteID int(11) NOT NULL,

  note text NOT NULL,

  guestID int(11) NOT NULL,

  staffID int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS payment (

  paymentID int(11) NOT NULL,

  bookingID int(11) NOT NULL,

  paymentTypeID int(11) NOT NULL,

  amount double NOT NULL,

  `date` date NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS payment_types (

paymentTypeID int(11) NOT NULL,

  `type` varchar(50) NOT NULL,

  `name` varchar(50) NOT NULL

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS rooms (

roomNO int(11) NOT NULL,

  `type` varchar(50) NOT NULL,

  rate double NOT NULL,

  noOfBeds int(11) NOT NULL

) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS services (

serviceID int(11) NOT NULL,

  `type` varchar(50) NOT NULL,

  details varchar(50) NOT NULL,

  charges double NOT NULL,

  roomNO int(11) NOT NULL

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS staff (

stafID int(11) NOT NULL,

  firstName varchar(100) NOT NULL,

  lastName varchar(100) NOT NULL,

  email varchar(250) NOT NULL,

  address varchar(250) NOT NULL

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS users (

  staffID int(11) NOT NULL,

  `function` varchar(25) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE booking

 ADD PRIMARY KEY (bookingID), ADD KEY roomNO (roomNO), ADD KEY guestID (guestID);

ALTER TABLE booking_services

 ADD KEY bokingID (bokingID,serviceID), ADD KEY serviceID (serviceID);

ALTER TABLE guest

 ADD PRIMARY KEY (guestID);

ALTER TABLE guest_notes

 ADD PRIMARY KEY (noteID), ADD KEY guestID (guestID), ADD KEY guestID_2 (guestID), ADD KEY staffID (staffID), ADD KEY staffID_2 (staffID);

ALTER TABLE payment

 ADD KEY bookingID (bookingID,paymentTypeID), ADD KEY paymentTypeID (paymentTypeID);

ALTER TABLE payment_types

 ADD PRIMARY KEY (paymentTypeID);

ALTER TABLE rooms

 ADD PRIMARY KEY (roomNO);

ALTER TABLE services

 ADD PRIMARY KEY (serviceID), ADD KEY roomNO (roomNO);

ALTER TABLE staff

 ADD PRIMARY KEY (stafID);

ALTER TABLE users

 ADD KEY staffID (staffID);

ALTER TABLE booking

MODIFY bookingID int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;

ALTER TABLE guest

MODIFY guestID int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=160028;

ALTER TABLE guest_notes

MODIFY noteID int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE payment_types

MODIFY paymentTypeID int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=5;

ALTER TABLE rooms

MODIFY roomNO int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=24;

ALTER TABLE services

MODIFY serviceID int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=5;

ALTER TABLE staff

MODIFY stafID int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=5;

ALTER TABLE booking

ADD CONSTRAINT booking_ibfk_3 FOREIGN KEY (guestID) REFERENCES guest (guestID) ON UPDATE CASCADE,

ADD CONSTRAINT booking_ibfk_4 FOREIGN KEY (roomNO) REFERENCES rooms (roomNO) ON UPDATE CASCADE;

ALTER TABLE booking_services

ADD CONSTRAINT booking_services_ibfk_2 FOREIGN KEY (serviceID) REFERENCES services (serviceID) ON DELETE CASCADE ON UPDATE CASCADE,

Database Implementation

ADD CONSTRAINT booking_services_ibfk_3 FOREIGN KEY (bokingID) REFERENCES booking (bookingID) ON UPDATE CASCADE;

ALTER TABLE guest_notes

ADD CONSTRAINT guest_notes_ibfk_1 FOREIGN KEY (guestID) REFERENCES guest (guestID) ON DELETE CASCADE ON UPDATE CASCADE,

ADD CONSTRAINT guest_notes_ibfk_2 FOREIGN KEY (staffID) REFERENCES staff (stafID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE payment

ADD CONSTRAINT payment_ibfk_1 FOREIGN KEY (paymentTypeID) REFERENCES payment_types (paymentTypeID) ON DELETE CASCADE ON UPDATE CASCADE,

ADD CONSTRAINT payment_ibfk_2 FOREIGN KEY (bookingID) REFERENCES booking (bookingID) ON UPDATE CASCADE;

ALTER TABLE services

ADD CONSTRAINT services_ibfk_1 FOREIGN KEY (roomNO) REFERENCES rooms (roomNO) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE users

ADD CONSTRAINT users_ibfk_1 FOREIGN KEY (staffID) REFERENCES staff (stafID) ON DELETE CASCADE ON UPDATE CASCADE;

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

-- Database: `hotel`

-- Dumping data for table `booking`

INSERT INTO `booking` VALUES(1, '2017-09-18', 1, 0, '2017-10-01 14:33:37', '2017-11-02 12:33:37', 'Confirmed', 1, 18);

INSERT INTO `booking` VALUES(2, '2018-10-11', 2, 0, '2018-10-16 07:17:17', '2018-11-16 07:17:17', 'confirmed', 2, 19);

INSERT INTO `booking` VALUES(3, '2018-10-21', 1, 0, '2018-10-31 07:21:22', '2018-11-02 06:17:16', 'pending', 2, 19);--

-- Dumping data for table `booking_services`

INSERT INTO `booking_services` VALUES(1, 1);

INSERT INTO `booking_services` VALUES(2, 2);

-- Dumping data for table `guest`

INSERT INTO `guest` VALUES(1, 'peter', 'Griffin', 'Rhode island hill', NULL, '[email protected]');

INSERT INTO `guest` VALUES(2, 'cleveland ', 'brown', 'cleveland drive', '+567890233', '[email protected]');

INSERT INTO `guest` VALUES(5, 'JOn ', 'snow', 'Winterfell avenue', '+456723434', '[email protected]');

INSERT INTO `guest` VALUES(6, 'arya', 'stark', 'winterfell drive', '', '[email protected]');

INSERT INTO `guest` VALUES(7, 'Samwell', 'Tally', 'Nights watch avenue', '+32434234', '[email protected]');

INSERT INTO `guest` VALUES(8, 'cercei', 'lannister', 'Kings landing hill', '+567823434', '[email protected]');

INSERT INTO `guest` VALUES(9, 'Geoffrey ', 'baratheon', 'Kings landing', '+324324534', '[email protected]');

-- Dumping data for table `payment`

INSERT INTO `payment` VALUES(1, 1, 4, 3422, '2014-10-04');

INSERT INTO `payment` VALUES(2, 2, 4, 2342, '2017-10-25');

INSERT INTO `payment` VALUES(0, 3, 4, 3443, '2017-11-07');

INSERT INTO `payment` VALUES(3, 3, 4, 3443, '2017-11-07');

-- Dumping data for table `payment_types`

INSERT INTO `payment_types` VALUES(1, 'Credit Card', 'Visa');

INSERT INTO `payment_types` VALUES(2, 'Credit Card', 'Mastercard');

INSERT INTO `payment_types` VALUES(3, 'Credit Card', 'American Express');

INSERT INTO `payment_types` VALUES(4, 'Cash', 'Cash');

-- Dumping data for table `rooms`

INSERT INTO `rooms` VALUES(18, 'deluxe', 200, 2);

INSERT INTO `rooms` VALUES(19, 'deluxe', 150, 1);

INSERT INTO `rooms` VALUES(20, 'Suite', 2434, 1);

INSERT INTO `rooms` VALUES(21, 'Suite', 3242, 1);

INSERT INTO `rooms` VALUES(22, 'Twinshare', 2343, 2);

INSERT INTO `rooms` VALUES(23, 'Twinshare', 2312, 2);--

-- Dumping data for table `services`

INSERT INTO `services` VALUES(1, 'Jacuzi', 'Jacuzi on the balcony', 50, 18);

INSERT INTO `services` VALUES(2, 'Wifi', 'Wifi in the whole room', 20, 19);

INSERT INTO `services` VALUES(3, 'service', 'spa', 21, 20);

INSERT INTO `services` VALUES(4, 'service', 'massage', 21, 21);

umping data for table `staff`

INSERT INTO `staff` VALUES(1, 'Jon', 'Snow', '[email protected]', 'winterfell');

INSERT INTO `staff` VALUES(2, 'Cersei', 'Lannister', '[email protected]', 'kings landing');

INSERT INTO `staff` VALUES(3, 'khaleesi', 'dragon queen', '[email protected]', '123 the north');

INSERT INTO `staff` VALUES(4, 'peter', 'griffin', '[email protected]', '213 AVENUE');

 Dumping data for table `users`

INSERT INTO `users` VALUES(1, 'payments');

INSERT INTO `users` VALUES(2, 'booking');

  1. Name of customers who have bookings that are still pending.

SELECT concat(firstname,' ' , lastname), booking.date from guest inner join booking on booking.guestid=guest.guestid where booking.status='pending';

  1. A list of rooms and their facilities

SELECT rooms.*,services.* from rooms inner join services on services.roomno=rooms.roomno;

  1. The total amount of money paid used each type of payment method.

SELECT pt.name,pt.type,sum(p.amount) from payment_types pt inner join payment p on p.paymenttypeID=p.paymenttypeID group by pt.paymenttypeID;

 How to make the database more efficient for scale

To make the database more efficient for scale, there are a number of factors that can be considered; these factors include;

  • Identifying any bottlenecks that can affect scalability in the future- Scaling the database can cause degraded performance leading to a slow database. It’s important to identify factors that might cause the database to slow down if it was to be scaled in the future. It’s not right to just increase resources without identifying the bottlenecks that might cause slowing down if the database were to be scaled even further.
  • Ensuring the database has no data redundancy. This should be done at the design stage and testing stage of the development such that when the database is scaled in the future, the database will occupy the right amount of space thus it can be scaled without adding too much memory.
  • Considering new technologies during the design of the database. Database systems are constantly and new types of databases are on the rise every day thus its important to consider how the database can be changed to be used in the new database systems which offer more scalability.Code to export database to csv

This can be done using PHP as shown in this code

Function exportToFile($table,$fileName){

header('Content-Type: text/csv; charset=utf-8');  

      header('Content-Disposition: attachment; filename=$filename);  

      $output = fopen("php://output", "w"); 

$db= new mysqli("localhost","root","","db_name") or die('could not connect to database');

      $query = $db->query("SELECT * from $table");

      while($row = mysqli_fetch_array($result))  

Cite This Work

To export a reference to this article please select a referencing stye below:

My Assignment Help. (2021). Design And Implementation Of A Hotel Booking System Database Essay.. Retrieved from https://myassignmenthelp.com/free-samples/cois3400-introduction-to-databases/payment-methods.html.

"Design And Implementation Of A Hotel Booking System Database Essay.." My Assignment Help, 2021, https://myassignmenthelp.com/free-samples/cois3400-introduction-to-databases/payment-methods.html.

My Assignment Help (2021) Design And Implementation Of A Hotel Booking System Database Essay. [Online]. Available from: https://myassignmenthelp.com/free-samples/cois3400-introduction-to-databases/payment-methods.html
[Accessed 16 April 2024].

My Assignment Help. 'Design And Implementation Of A Hotel Booking System Database Essay.' (My Assignment Help, 2021) <https://myassignmenthelp.com/free-samples/cois3400-introduction-to-databases/payment-methods.html> accessed 16 April 2024.

My Assignment Help. Design And Implementation Of A Hotel Booking System Database Essay. [Internet]. My Assignment Help. 2021 [cited 16 April 2024]. Available from: https://myassignmenthelp.com/free-samples/cois3400-introduction-to-databases/payment-methods.html.

Get instant help from 5000+ experts for
question

Writing: Get your essay and assignment written from scratch by PhD expert

Rewriting: Paraphrase or rewrite your friend's essay with similar meaning at reduced cost

Editing: Proofread your work by experts and improve grade at Lowest cost

loader
250 words
Phone no. Missing!

Enter phone no. to receive critical updates and urgent messages !

Attach file

Error goes here

Files Missing!

Please upload all relevant files for quick & complete assistance.

Plagiarism checker
Verify originality of an essay
essay
Generate unique essays in a jiffy
Plagiarism checker
Cite sources with ease
support
Whatsapp
callback
sales
sales chat
Whatsapp
callback
sales chat
close