CMSI 486: Homework Assignment #2
General Details
Due Date: 2019-11-23, Wednesday of week 09
The following guidelines are expected for all homework submissions:
- All homework must be typed. Homework which is not typed will be returned ungraded and will be
subject to the late homework guidelines as set out on the syllabus page. PLEASE DO NOT scribble
something on lined paper and rip it out of your spiral notebook — hanging chads went out
with the presidential election in 2000.
- I don't care too much about what font you use or how large your margins are; however, you might
want to check out a monospaced font for typing code, as it will be easy to see the indentations.
- Speaking of indenting, PLEASE DON'T USE TABS TO INDENT YOUR CODE. Tabs can often get interpreted
differently by different computers and applications, and could make code that is nicely formatted
on your computer look "all over the map" on my computer or printer. USE SPACES INSTEAD.
You can set up almost every modern text editor to insert spaces whenever you press the TAB key, or
you can simply pound the spacebar.
- Work with a partner. This mimics an industry code development model called "pair
programming" which is part of the Extreme Programming software development method. Feel free to
collaborate in your pairs as much as you want, preferably doing the entire assignment together. If you
would like to have the same homework partner that you have for your database semester project, that is
a convenient way to handle things. HOWEVER……
- DO NOT share your work between groups. Doing so will count as plagiarism. If you wish
to discuss solutions with another group over coffee in the Lair, that's fine as long as it is kept at the
conceptual level, but each group needs to turn in its own version of the solutions.
- In addition, DO NOT DIVIDE UP THE WORK on your homework assignments. You MUST work on
the entire assignment together. Failure to do so will cost you a letter grade on the assignment, so it
is enlightened self-interest to do things this way.
- You only need to turn in one copy of the assignment per group.
- If you'd like to use the sqlfiddle website to do your programs,
that is great. Simply save the program in jsfiddle as a shared fiddle, then copy and embed a link
to the fiddle into your homework where the answer goes for that problem. I'll use the link to go
to YOUR fiddle and run the code. To save your fiddles you'll need to sign up for an account…
- You should submit your homework in a GitHub repository. MAKE SURE YOUR GITHUB REPO IS PRIVATE [for the
reasons explained on the syllabus page].
Problems From Elmasri Chapter 9
- Ch 9, #3: Try to map the relational schema in Figure
6.14 [page 189] into an ER schema. This is part of a process known as reverse engineering, in
which a conceptual schema is created for an existing implemented database. State any assumptions you
make.
- Ch 9, #7: Is it possible to successfully map a binary
M:N relationship type without requiring a new relation? Why or why not?
Problems From Elmasri Chapter 10
- Ch 10, #3: Why is it important to design the schemas
and applications in parallel?
- Ch 10, #4: Why is it important to use an
implementation-independent data model during conceptual schema design? What models are used in current
design tools? Wny?
- Ch 10, #6: Consider an actual application of a database
system of interest. [NOTE: this means pick one you are familiar with to use for this exercise.] Define
the requirements of the different levels of users in terms of data needed, types of queries, and
transactions to be processed.
Problems From Elmasri Chapter 15
- Ch 15, #5: What is a functional dependency? What are
the possible sources of the information that defines the functional dependencies that hold among the
attributes of a relation schema?
- Ch 15, #9: What undesirable dependencies are avoided
when a relation is in 2NF?
- Ch 15, #10: What undesirable dependencies are avoided
when a relation is in 3NF?
- Ch 15, #13: What is a multivalued dependencey? When
does it arise?
Problems From Elmasri Chapter 21
- Ch 21, #1: What is meant by the concurrent execution
of database transactions in a multiuser system? Dicscuss why concurrency control is needed, and give
informal examples.
- Ch 21, #6: Discuss the atomicity, durability,
isolation, and consistency preservations properties of a database transaction.
Problems From Van Bruggen Chapter 4
- Ch 4, #1: The four fundamental data constructs of Neo4j
are [select one and describe each of the items in your selection]:
- Table, record, field, and constraint
- Node, relationship, property, and schema
- Node, relationship, property, and label
- Document, relationship, property, and collection
- Ch 4, #3: If you have a few entities in your dataset
that have lots of relationships to other entities, then you can't use a graph database because of the
dense node problem.
- True – you will have to use a relational system
- True – but there is no alternative, so you will have to live with it
- False – you can still use a graph database but it will be painfully slow for all queries
- False – you can very effectively use a graph database, but you should take precautions, for
example, applying a fan-out pattern to your data