MP2: Notflix

Notflix needs a database. Can you help designing it?

SmallBank

Goal

Learn to create Entity Relationship Diagrams, the dominant data modeling technique and use a popular tool.

Prep work

Watch the Draw.io tutorial
Note: the tutorial shows a similar - not identical! - context and ERD as the exercise below. Do not just copy it.

Task

This is a single/pair miniproject. You may choose to do it individually, OR with one other student in class. It is graded and pledged. 
Create an ERD diagram for the business described below using Draw.io (aka app.diagrams.net).  Print out the ERD and deliver as a single sheet of paper in class by the beginning of class.
If you are working as a pair, hand in only one copy. Make sure that you write your names on it. Make copies for yourself.

Criteria

Use the notations demonstrated in class to provide:
    - Tables/Entities
    - Primary keys (with "PK")
    - Attributes
    - Foreign keys, shown both as relationships (lines) and as attributes (mark with "FK")
    - Relationships, labeled with text (usually a verb) to clarify their meaning
    - Upper and lower cardinalities
    - All many-to-many relationships need to be resolved, i.e., no many-to-many in your ERD.

Make it neat and legible without a magnifying lens. Use special care in avoiding having too many lines crossing each other. Use a white background. Printed font must be large enough to be easily legible.

The interview

You are working for a small consulting firm that specializes in helping clients manage their data. Your current engagement is Notflix, an internet startup that plans to compete in the streaming of indie and ULB (Ultra Low Budget) shows — the kind of show that would never be picked up by Netflix or Disney+, yet has the potential to achieve cult or viral status.
Notflix is just starting to build its database systems. You are interviewing Ms. Bella Moovee, the founder and CEO, who would like your help sketching the design of the database that will support her company's operations.

"Ms. Moovee, please tell me a little about how Notflix operates."
"Sure! Notflix is a competitor to the established streaming services. We have a unique market niche, but we operate in a similar way. Our customers open accounts with us, and naturally we collect several pieces of data on each customer — for example, name, email, and date of birth. We allow only one account per customer, but each account might have several Users. Each User has their own username and date of birth, but no password. By contrast, each account has an account number, a password, and a status (e.g., 'active,' 'suspended,' etc.)."

"How are you getting paid?"

"Accounts send us payments every month. For each payment, we need to record the date and the amount."

"Got it. What happens when a User uses your service?"

"We track Users' activities, which we call 'Viewings.' For example, a User might watch a certain show from showtime 0:00 to showtime 40:35, and then come back later to watch from 35:23 to 1:22:40. These are two separate Viewings. We also track the real-world time at which each one happened — so, for instance, the first Viewing in that example might have taken place on September 22nd at 9:23:00 PM, and the second on September 24th at 7:30:10 PM."

"What kind of information do you track about the shows?"

"Shows have a title, a length, and a release date, and each show falls under one or more genres — Sci-Fi, Western, Rom-Com, and so on. Each User may record their own genre preferences on a scale from -1 ('Painful to my eyes!') to +2 ('Loved it!'). Users can also express preferences on individual shows, using that same scale. We feed all of that preference data into our recommendation engine."

"Thank you, Ms. Moovee! I'll bring you an initial draft of the database design very soon, so we can keep working on it together."

Tips for success

The description of the assignment is somewhat vague. You will experience some discomfort because of that. That feeling is actually a common experience in data modeling. You will have to think hard about what data is needed. As a general recommendation, do not overdo. Be reasonable in your assumptions and keep your model simple. Stay faithful to the text. Handle the problems that are described above. Do not try to handle all the conceivable issues at Notflix.