computer science 204

profileAbhi3735
Untitleddocument-8.pdf

About this Assignment This is a Database Programming course. This course covers advanced topics in databases. It

starts by reviewing basic knowledge on databases and ends with advanced database concepts

like security.

In this project, you will use the knowledge you acquired throughout the course to build a simple

database and query it to extract information from it. You will create tables and relationships

among them, in addition to the necessary keys and indexes. The next step will be to populate

the database with suitable data. Populating the tables with sufficient and appropriate example

data is an important step in testing and validating your design. When your database is ready,

you will write SQL queries to retrieve information.

Note: This assignment was created with MySQL in mind. Therefore, dates, numbers, etc. have

been set up with that tool in mind.

Upon completion of this project, you will be able to:

● Write SQL queries to create tables

● Write SQL queries to create relationships among tables

● Identify indexes and create them in a database

● Write queries to extract important information from a database

Prompt In this project you will build a database for a public library. This database is aimed to collect and

analyze information about the clients' reading interests. The project concentrates only on books

and the clients' interests in books. The analyses that will result from this project will be used by

the library's management to decide on the future purchasing policy.

A. Write the SQL statements in order to create the tables for the database. Use the Entity

Relationship Diagram (ERD) of the database shown in Figure 1. For simplicity, we are assuming

in this project that a book cannot be written by more than one author. You need to create the

tables as well as the required constraints, including the keys (primary and foreign), and the

relationships between tables.

B. Populate your database with the sample set of data given to you in the tables below the

assignment prompts.

C. Write the following queries to retrieve the information detailed below.

1. Display all contents of the Clients table

2. First names, last names, ages and occupations of all clients

3. First and last names of clients that borrowed books in March 2018

4. First and last names of the top 5 authors clients borrowed in 2017

5. Nationalities of the least 5 authors that clients borrowed during the years 2015-2017

6. The book that was most borrowed during the years 2015-2017

7. Top borrowed genres for client born in years 1970-1980

8. Top 5 occupations that borrowed the most in 2016

9. Average number of borrowed books by job title

10. Create a VIEW and display the titles that were borrowed by at least 20% of clients

11. The top month of borrows in 2017

12. Average number of borrows by age

13. The oldest and the youngest clients of the library

14. First and last names of authors that wrote books in more than one genre

As you work on these queries, create indexes that will increase your queries' performance.

You must include comments in your code that address the purpose of your query and explains

each step. Save your queries and results in a plain-text file that you will submit as your assignment.

Author table:

AuthorID AuthorFirstName AuthorLastName AuthorNationality

1 Sofia Smith Canada

2 Maria Brown Brazil

3 Elena Martin Mexico

4 Zoe Roy France

5 Sebastian Lavoie Canada

6 Dylan Garcia Spain

7 Ian Cruz Mexico

8 Lucas Smith USA

9 Fabian Wilson USA

10 Liam Taylor Canada

11 William Thomas Great Britain

12 Logan Moore Canada

13 Oliver Martin France

14 Alysha Thompson Canada

15 Isabelle Lee Canada

16 Emily Clark USA

17 John Young China

18 David Wright Canada

19 Thomas Scott Canada

20 Helena Adams Canada

21 Sofia Carter USA

22 Liam Parker Canada

23 Emily Murphy USA

Book table:

BookID BookTitle BookAuthor Genre

1 Build your database system 1 Science

2 The red wall 2 Fiction

3 The perfect match 3 Fiction

4 Digital Logic 4 Science

5 How to be a great lawyer 5 Law

6 Manage successful negotiations 6 Society

7 Pollution today 7 Science

8 A gray park 2 Fiction

9 How to be rich in one year 8 Humor

10 Their bright fate 9 Fiction

11 Black lines 10 Fiction

12 History of theater 11 Literature

13 Electrical transformers 12 Science

14 Build your big data system 1 Science

15 Right and left 13 Children

16 Programming using Python 1 Science

17 Computer networks 14 Science

18 Performance evaluation 15 Science

19 Daily exercise 16 Well being

20 The silver uniform 17 Fiction

21 Industrial revolution 18 History

22 Green nature 19 Well being

23 Perfect football 20 Well being

24 The chocolate love 21 Humor

25 Director and leader 22 Society

26 Play football every week 20 well being

27 Maya the bee 13 Children

28 Perfect rugby 20 Well being

29 The end 23 Fiction

30 Computer security 1 Science

31 Participate 22 Society

32 Positive figures 3 Fiction

Client table:

ClientID ClientFirstName ClientLastName ClientDoB Occupation

1 Kaiden Hill 2006 Student

2 Alina Morton 2010 Student

3 Fania Brooks 1983 Food Scientist

4 Courtney Jensen 2006 Student

5 Brittany Hill 1983 Firefighter

6 Max Rogers 2005 Student

7 Margaret McCarthy 1981 School Psychologist

8 Julie McCarthy 1973 Professor

9 Ken McCarthy 1974 Securities Clerk

10 Britany O'Quinn 1984 Violinist

11 Conner Gardner 1998 Licensed Massage Therapist

12 Mya Austin 1960 Parquet Floor Layer

13 Thierry Rogers 2004 Student

14 Eloise Rogers 1984 Computer Security Manager

15 Gerard Jackson 1979 Oil Exploration Engineer

16 Randy Day 1986 Aircraft Electrician

17 Jodie Page 1990 Manufacturing Director

18 Coral Rice 1996 Window Washer

19 Ayman Austin 2002 Student

20 Jaxson Austin 1999 Repair Worker

21 Joel Austin 1973 Police Officer

22 Alina Austin 2010 Student

23 Elin Austin 1962 Payroll Clerk

24 Ophelia Wolf 2004 Student

25 Eliot McGuire 1967 Dentist

26 Peter McKinney 1968 Professor

27 Annabella Henry 1974 Nurse

28 Anastasia Baker 2001 Student

29 Tyler Baker 1984 Police Officer

30 Lilian Ross 1983 Insurance Agent

31 Thierry Arnold 1975 Bus Driver

32 Angelina Rowe 1979 Firefighter

33 Marcia Rowe 1974 Health Educator

34 Martin Rowe 1976 Ship Engineer

35 Adeline Rowe 2005 Student

36 Colette Rowe 1963 Professor

37 Diane Clark 1975 Payroll Clerk

38 Caroline Clark 1960 Dentist

39 Dalton Clayton 1982 Police Officer

40 Steve Clayton 1990 Bus Driver

41 Melanie Clayton 1987 Computer Engineer

42 Alana Wilson 2007 Student

43 Carson Byrne 1995 Food Scientist

44 Conrad Byrne 2007 Student

45 Ryan Porter 2008 Student

46 Elin Porter 1978 Computer Programmer

47 Tyler Harvey 2007 Student

48 Arya Harvey 2008 Student

49 Serena Harvey 1978 School Teacher

50 Lilly Franklin 1976 Doctor

51 Mai Franklin 1994 Dentist

52 John Franklin 1999 Firefighter

53 Judy Franklin 1995 Firefighter

54 Katy Lloyd 1992 School Teacher

55 Tamara Allen 1963 Ship Engineer

56 Maxim Lyons 1985 Police Officer

57 Allan Lyons 1983 Computer Engineer

58 Marc Harris 1980 School Teacher

59 Elin Young 2009 Student

60 Diana Young 2008 Student

61 Diane Young 2006 Student

62 Alana Bird 2003 Student

63 Anna Becker 1979 Security Agent

64 Katie Grant 1977 Manager

65 Joan Grant 2010 Student

66 Bryan Bell 2001 Student

67 Belle Miller 1970 Professor

68 Peggy Stevens 1990 Bus Driver

69 Steve Williamson 1975 HR Clerk

70 Tyler Williamson 1999 Doctor

71 Izabelle Williamson 1990 Systems Analyst

72 Annabel Williamson 1960 Cashier

73 Mohamed Waters 1966 Insurance Agent

74 Marion Newman 1970 Computer Programmer

75 Ada Williams 1986 Computer Programmer

76 Sean Scott 1983 Bus Driver

77 Farrah Scott 1974 Ship Engineer

78 Christine Lambert 1973 School Teacher

79 Alysha Lambert 2007 Student

80 Maia Grant 1984 School Teacher

Borrower table:

BorrowID ClientID BookID BorrowDate

1 35 17 2016-07-20

2 1 3 2017-04-19

3 42 8 2016-10-03

4 62 16 2016-04-05

5 53 13 2017-01-17

6 33 15 2015-11-26

7 40 14 2015-01-21

8 64 2 2017-09-10

9 56 30 2017-08-02

10 23 2 2018-06-28

11 46 19 2015-11-18

12 61 20 2015-11-24

13 58 7 2017-06-17

14 46 16 2017-02-12

15 80 21 2018-03-18

16 51 23 2015-09-01

17 49 18 2015-07-28

18 43 18 2015-11-04

19 30 2 2018-08-10

20 48 24 2015-05-13

21 71 5 2016-09-05

22 35 3 2016-07-03

23 57 1 2015-03-17

24 23 25 2017-08-16

25 20 12 2018-07-24

26 25 7 2015-01-31

27 72 29 2016-04-10

28 74 20 2017-07-31

29 53 14 2016-02-20

30 32 10 2017-07-24

31 12 15 2018-04-25

32 77 13 2017-06-09

33 30 4 2017-10-24

34 37 24 2016-01-14

35 27 26 2017-06-05

36 1 16 2018-05-06

37 21 9 2016-03-19

38 69 28 2017-03-29

39 17 19 2017-03-14

40 8 9 2016-04-22

41 63 18 2015-01-25

42 65 20 2016-10-10

43 51 19 2015-07-28

44 23 12 2017-01-25

45 17 4 2017-04-18

46 68 5 2016-09-06

47 46 13 2017-09-30

48 15 13 2017-07-05

49 11 19 2017-12-14

50 78 15 2017-01-26

51 47 9 2015-03-03

52 68 7 2016-05-26

53 37 26 2017-02-06

54 48 27 2015-12-30

55 9 21 2017-10-21

56 29 8 2018-04-01

57 64 18 2017-08-29

58 61 26 2018-02-21

59 39 28 2016-07-26

60 73 18 2018-08-22

61 11 13 2018-01-17

62 45 6 2016-07-20

63 33 13 2018-03-18

64 10 17 2016-06-06

65 28 18 2017-02-17

66 51 3 2016-12-09

67 29 2 2015-09-18

68 28 30 2017-09-14

69 74 20 2015-12-12

70 15 22 2015-01-14

71 57 8 2017-08-20

72 2 5 2015-01-18

73 74 12 2018-04-14

74 51 10 2016-02-25

75 25 17 2015-02-24

76 45 21 2017-02-10

77 27 25 2016-08-03

78 32 28 2016-06-15

79 71 21 2017-05-21

80 75 26 2016-05-03

81 56 32 2015-12-23

82 26 32 2015-05-16

83 66 32 2015-05-30

84 57 18 2017-09-15

85 40 15 2016-09-02

86 65 4 2017-08-17

87 54 7 2015-12-19

88 29 4 2017-07-22

89 44 9 2017-12-31

90 56 31 2015-06-13

91 17 4 2015-04-01

92 35 16 2018-07-19

93 22 18 2017-06-22

94 39 24 2015-05-29

95 63 14 2018-01-20

96 53 21 2016-07-31

97 40 9 2016-07-10

98 52 4 2017-04-05

99 27 20 2016-09-04

100 72 29 2015-12-06

101 49 16 2017-12-19

102 6 12 2016-12-04

103 74 31 2016-07-27

104 48 32 2016-06-29

105 69 2 2016-12-27

106 60 32 2017-10-29

107 45 22 2017-06-12

108 42 15 2017-05-14

109 79 8 2016-10-13

110 70 18 2016-12-04

111 34 8 2016-03-06

112 43 8 2015-12-19

113 42 32 2016-04-20

114 67 5 2017-03-06

115 80 25 2015-06-23

116 54 11 2017-05-03

117 34 28 2017-08-30

118 65 20 2017-08-26

119 61 19 2018-01-05

120 38 12 2018-01-17

121 51 4 2016-05-13

122 7 16 2016-03-17

123 46 16 2016-11-25

124 75 30 2018-08-12

125 72 32 2015-03-12

126 44 17 2015-06-15

127 68 15 2016-02-21

128 21 1 2016-06-19

129 14 25 2016-10-10

130 68 21 2016-05-27

131 35 20 2015-03-19

132 16 27 2016-08-08

133 79 31 2018-03-07

134 14 17 2018-04-28

135 29 28 2018-03-11

136 41 4 2018-08-08

137 42 3 2016-02-23

138 45 3 2017-07-10

139 36 16 2018-07-19

140 36 30 2015-08-07

141 54 32 2018-03-14

142 61 15 2017-03-28

143 1 13 2018-05-17

144 43 1 2015-05-14

145 37 14 2015-07-30

146 62 17 2015-09-19

147 50 22 2016-12-02

148 45 1 2016-07-24

149 32 17 2018-03-10

150 13 28 2016-02-14

151 15 9 2018-08-11

152 10 19 2018-08-29

153 66 3 2016-11-27

154 68 29 2017-07-12

155 21 14 2018-06-27

156 35 9 2016-01-22

157 17 24 2016-08-25

158 40 21 2015-07-09

159 1 24 2016-03-28

160 70 27 2015-07-10

161 80 26 2016-04-24

162 29 5 2015-10-18

163 76 12 2018-04-25

164 22 4 2016-12-24

165 2 2 2017-10-26

166 35 13 2016-02-28

167 40 8 2017-10-02

168 68 9 2016-01-03

169 32 5 2016-11-13

170 34 17 2016-09-15

171 34 16 2018-04-13

172 80 30 2016-10-13

173 20 32 2015-11-17

174 36 10 2017-09-01

175 78 12 2018-06-27

176 57 8 2016-03-22

177 75 11 2017-06-27

178 71 10 2015-08-01

179 48 22 2015-09-29

180 19 16 2016-02-21

181 79 30 2018-08-20

182 70 13 2016-09-16

183 30 6 2017-02-10

184 45 12 2017-10-12

185 30 27 2016-11-23

186 26 3 2016-08-13

187 66 6 2017-01-14

188 47 15 2016-02-10

189 53 30 2018-08-08

190 80 16 2016-03-31

191 70 13 2018-02-03

192 14 25 2016-03-27

193 46 22 2016-01-13

194 30 32 2015-08-06

195 60 14 2016-11-27

196 14 13 2018-05-23

197 71 15 2016-06-22

198 38 21 2015-12-27

199 69 30 2017-04-29

200 49 31 2018-06-03

201 28 28 2015-05-29

202 49 3 2016-08-30

203 75 1 2015-10-29

204 78 3 2017-05-12

205 43 18 2015-03-25

206 27 21 2016-02-22

207 64 22 2015-04-03

208 21 11 2017-12-09

209 66 29 2016-12-20

210 45 13 2017-04-15

211 48 30 2015-01-31

212 20 25 2017-12-20

213 41 20 2018-01-29

214 51 12 2015-07-05

215 5 1 2015-04-12

216 40 3 2018-02-24

217 79 4 2018-06-27

218 15 10 2016-11-01

219 42 22 2016-12-28

220 17 9 2018-01-29

221 38 13 2016-05-09

222 79 2 2017-12-06

223 74 3 2015-12-07

224 46 8 2016-06-05

225 78 22 2018-08-11

226 45 2 2015-04-20

227 72 31 2015-11-11

228 18 17 2015-03-21

229 29 3 2017-08-13

230 66 11 2018-06-05

231 36 16 2016-04-28

232 26 2 2016-10-23

233 32 1 2017-10-31

234 62 14 2017-07-25

235 12 4 2015-07-08

236 38 32 2015-02-24

237 29 16 2016-07-28

238 36 25 2017-05-07

239 76 7 2015-06-13

240 28 16 2016-08-15

241 60 13 2016-08-26

242 8 3 2017-07-28

243 25 1 2016-07-30

244 62 29 2018-08-24

245 51 8 2016-09-01

246 27 23 2015-02-08

247 69 12 2018-06-25

248 51 12 2015-07-04

249 7 4 2015-05-01

250 31 15 2017-10-29

251 14 23 2015-01-15

252 14 1 2018-05-21

253 39 25 2015-12-26

254 79 24 2016-05-31

255 40 15 2016-03-18

256 51 13 2018-04-13

257 61 1 2015-02-11

258 15 24 2018-03-02

259 10 22 2018-01-21

260 67 10 2017-07-08

261 79 11 2016-12-11

262 19 32 2016-05-04

263 35 11 2017-08-01

264 27 13 2017-12-15

265 30 22 2015-12-22

266 8 7 2015-06-26

267 70 9 2016-03-20

268 56 18 2016-01-29

269 13 19 2015-03-06

270 61 2 2016-06-18

271 47 13 2017-09-18

272 30 22 2016-02-19

273 18 22 2016-12-31

274 34 29 2017-10-27

275 32 21 2015-06-03

276 9 28 2016-03-30

277 62 24 2015-03-23

278 44 22 2017-04-29

279 27 5 2015-03-25

280 61 28 2017-07-14

281 5 13 2016-12-04

282 43 19 2018-03-15

283 34 19 2016-06-05

284 35 5 2018-02-19

285 13 12 2016-09-23

286 74 18 2016-12-26

287 70 31 2017-08-15

288 42 17 2016-06-15

289 51 24 2018-07-30

290 45 30 2015-01-15

291 70 17 2017-10-07

292 77 7 2017-01-06

293 74 25 2015-09-25

294 47 14 2018-02-01

295 10 2 2017-04-18

296 16 21 2016-10-03

297 48 5 2016-09-17

298 72 3 2017-02-10

299 26 23 2016-03-01

300 49 23 2016-10-25

Related Lessons & References This assignment covers material presented in the course. You can refer to the following lessons

for guidance:

● Database Table: Design & Conventions

● Advanced SQL Query Syntax

● SQL Views: Definition & Example

● Advanced SQL Subqueries: Use & Examples

● SQL: Create Index

Other lessons you can reference to help with using MySQL include:

● MySQL Commands: Lists and Examples

● Practical Application for Introduction to SQL: Installing Sample Data for MySQL

● Practical Application for Relational Databases & SQL: Creating a Database in MySQL

Note: Students typically use Excel and other tools to create the INSERT statements. They put

each line on a row in Excel and then wrap an INSERT around the whole thing, like this:

INSERT INTO tblMyTable VALUES

(1, 25, 17, STR_TO_DATE('20/07/2016', '%d/%m/%Y')),

(2, 125, 13, STR_TO_DATE('20/07/2017', '%d/%m/%Y'));

And so on

Grading Rubric Your project will be graded based on the following rubric:

Category Unacceptabl e (0-1)

Needs Improvement (2-3)

Good (4) Excellent (5) Total Possibl e Points

Create the database tables

All tables are not created correctly

2 or more tables are not created correctly

Correct created tables, queries are not optimal

Correct queries and correct resulted tables

5

Define the primary keys of the tables

All primary keys are not created correctly

2 or more primary keys are not created correctly

NA All primary keys are created correctly

5

Create the relationships among the tables using foreign keys

All relationships are not created correctly

2 or more relationships are not created correctly

NA All relationships are created correctly

5

Populate the tables with data

Tables are not populated by the given data

Some tables are populated by part of the given data

All tables are populated by part of the given data

All tables are correctly populated with the given data

5

Query 1 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 2 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 3 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 4 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 5 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 6 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 7 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 8 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 9 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes

5

written to explain query.

Query 10 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 11 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 12 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 13 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Query 14 Query does not exist

Query is close to correct, results are not correct

Correct results, query is not optimal

Correct query and correct results. Notes written to explain query.

5

Create the required indexes

No indexes chosen

Indexes are poorly chosen, queries are not correct

Indexes are poorly chosen, queries are correct

Indexes are correctly chosen, queries are correctly written

5

Create required view

No view created

The syntax of the view creation is not correct

The view is correctly created but not correctly used

The view is correctly created and used

5

Total 100

Before You Submit When you complete your assignment, we suggest taking some time to check for any errors or to

add any finishing touches. We also suggest that you use online plagiarism checkers such as

PlagScan or DupliChecker to make sure that your assignment is not too similar to any existing

materials. Plagiarized submissions will NOT be graded.

How to Submit Your Assignment When you are ready to submit your assignment, please fill out the submission form and

attach your assignment in Microsoft Word, PDF, or Text document. You should receive your

assignment grade within one week.

If you are not satisfied with the score you receive on your assignment, you may revise or rewrite

it, and resubmit them for grading using the same submission form above. Keep in mind that the

grade you receive on your assignment is only a portion of your overall grade for the course.

Please see the course syllabus for a more detailed breakdown of the grading policy.