Generate the relational algebra, tuple relational calculus, and domain relational calculus expressions for the following queries:
(a) List all hotels.
(b) List all single rooms with a price below £20 per night.
(c) List the names and cities of all guests.
(d) List the price and type of all rooms at the Grosvenor Hotel.
(e) List all guests currently staying at the Grosvenor Hotel.
(f) List the details of all rooms at the Grosvenor Hotel, including the name of the guest staying in the room, if the room is occupied.
(g) List the guest details (guestNo, guestName, and guestAddress) of all guests staying at the Grosvenor Hotel.
(a) List all hotels.
RA: Hotel
TRC: {H | Hotel(H)}
DRC: {hotelNo, hotelName, city | Hotel(hotelNo, hotelName, city)}
(b) List all single rooms with a price below £20 per night.
RA: ? type=‘S’ ? price < 20 (Room)
TRC: {R | Room(R)???R.type = ‘S’ ? R.price < 20}
DRC: {roomNo, hotelNo, type, price | (Room(roomNo, hotelNo, type, price) ?
type = ‘S’ ? price < 20)}
(c) List the names and cities of all guests.
RA: ? guestName, guestAddress (Guest)
TRC: {G.guestName, G.guestAddress | Guest(G)}
DRC: {guestName, guestAddress | (?guestNo)
(Guest(guestNo, guestName, guestAddress))}
(d) List the price and type of all rooms at the Grosvenor Hotel.
RA: ? price, type (Room hotelNo (? hotelName = ‘Grosvenor Hotel’ (Hotel)))
TRC: {R.price, R.type | Room(R) ????H) (Hotel(H) ? (?R.hotelNo = H.hotelNo) ?
(H.hotelName = ‘Grosvenor Hotel’))}
DRC: {price, type | (?roomNo, hotelNo, hotelNo1, hotelName, city)
(Room(roomNo, hotelNo, type, price) ? Hotel(hotelNo1, hotelName, city) ?
(hotelNo = hotelNo1) ? (hotelName = ‘Grosvenor Hotel’))}
(e) List all guests currently staying at the Grosvenor Hotel.
RA: Guest guestNo (? dateFrom ? ‘01-01-15’ ? dateTo ? ‘01-01-15’ (Booking hotelNo (? hotelName = ‘Grosvenor Hotel’ (Hotel))))
(substitute ‘01-01-15’ for today’s date).
TRC: {G |Guest(G) ? ((?B)(?H) (Booking(B) ??Hotel(H) ???B.dateFrom ? ‘01-01-15’) ?
(B.dateTo ? ‘01-01-15’) ? (B.guestNo = G.guestNo) ?
(B.hotelNo = H.hotelNo) ? (H.hotelName = ‘Grosvenor Hotel’)))}
DRC: {guestNo, guestName, guestAddress | (?hotelNo, guestNo1, dateFrom, dateTo,
hotelNo1, hotelName, city)
(Guest(guestNo, guestName, guestAddress) ?
Booking(hotelNo, guestNo1, dateFrom, dateTo) ?
Hotel(hotelNo1, hotelName, city) ?? (guestNo = guestNo1) ??
(dateFrom ? ‘01-01-15’ ? dateTo ? ‘01-01-15’) ?
(hotelNo = hotelNo1) ???hotelName = ‘Grosvenor Hotel’))}
(f) List the details of all rooms at the Grosvenor Hotel, including the name of the guest
staying in the room, if the room is occupied.
RA: (Room hotelNo (? hotelName = ‘Grosvenor Hotel’ (Hotel))) // Outer Join
? guestName, hotelNo, roomNo (
(Guest guestNo (? dateFrom ? ‘01-01-15’ ? dateTo ? ‘01-01-15’ (
Booking hotelNo (? hotelName=‘Grosvenor Hotel’ (Hotel))))
(substitute ‘01-01-15’ for today’s date).
TRC: {R, G.guestName | (Room(R) ??(?H)(Hotel(H) ?
(R.hotelNo = H.hotelNo) ???H.hotelName = ‘Grosvenor Hotel’))) ?
(Guest(G) ??((?B)(?H) (Booking(B) ? Hotel(H) ??
(G.guestNo ? B.guestNo) ? (B.hotelNo = H.hotelNo) ???
(H.hotelName = ‘Grosvenor Hotel’) ??
(B.dateFrom ? ‘01-01-15’ ??B.dateTo ? ‘01-01-15’)))}
DRC: {roomNo, hotelNo, type, price, guestName |
(?hNo, hName, city, hNo1, gNo1, dFrom, dTo, rNo)
(Room(roomNo, hotelNo, type, price) ??Hotel(hNo1, hName, city) ??
(hotelNo = hNo1) ? (hName = ‘Grosvenor Hotel’) ) ?
(Guest(guestNo, guestName, guestAddress) ? Hotel(hNo, hName, city) ?
Booking(hNo1, gNo1, dFrom, dTo, rNo) ??
(guestNo ? gNo1) ? (hNo1 = hNo) ??(hName = ‘Grosvenor Hotel’) ??
(dFrom ? ‘01-01-15’ ??dTo ? ‘01-01-15’)))}
(g) List the guest details (guestNo, guestName, and guestAddress) of all guests staying at the
Grosvenor Hotel.
RA: ? guestNo, guestName, guestAddress (Guest guestNo (? dateFrom ? ‘01-01-15’ ? dateTo ? ‘01-01-15’ (
Booking hotelNo (? hotelName=‘Grosvenor Hotel’ (Hotel)))))
(substitute ‘01-01-15’ for today’s date).
TRC: {G | Guest(G) ? ((?B) (?H) (Booking(B) ? Hotel(H) ??(B.guestNo = G.guestNo) ?
(B.hotelNo = H.hotelNo) ???H.hotelName = ‘Grosvenor Hotel’) ?
(B.dateFrom ? ‘01-01-15’ ?? B.dateTo ? ‘01-01-15’) ))}
DRC: {guestNo, guestName, guestAddress |
((?hNo, gNo, dFrom, dTo, rNo, hNo1, hName, city)
(Guest(guestNo, guestName, guestAddress) ?
Booking(hNo, gNo, dFrom, dTo, rNo) ? Hotel(hNo1, hName, city) ??
(guestNo = gNo) ? (hNo = hNo1) ???hName = ‘Grosvenor Hotel’) ?
(dFrom ? ‘01-01-15’ ?? dTo ? ‘01-01-15’) ))}
You might also like to view...
Match the following terms to their meanings:
I. Sidebar gadget that displays how hard your computer is working A. virus II. Block of space on a drive B. CPU Meter III. Infects a computer system and runs without user's knowledge C. NTFS IV. Processes data and instructions D. CPU V. File system typically used by Windows Vista E. sector
Macros can add functionality to reports and forms, as well as the controls that forms and reports contain
Indicate whether the statement is true or false