Draw an ER diagram for this database. Make sure to indicate primary keys, cardinality constraints, weak entities (if any), and participation constraints. There might be extra constraints which cannot be captured by the E/R diagram, make sure you mention them below the diagram. List any assumptions you make in the process.
At a minimum, you will find there are at least seven entities.
For each entity set and relationship, write a concise description describing all model components. One or two sentences per entity set and relationship is enough. Make sure these are in PROPER English and follow technical best-practice guidelines.
You will work with book information, user information, ratings of books, and users’ social network.
Each book has an id, title, publication date, publisher, ISBN, functional category, page count, price (publisher), and product description
There are 3 categories of book: fiction, non-fiction, and specialty.
An author can write one or more books.
An author can also be associated with one or more publishers.
An author’s book can have one or more editions.
A publisher can have many authors and many books.
Many ISBNs can also be associated with a given publisher but only one ISBN per book.
An author can write many books.
The book can have one or more editions.
There can be one or more formats to a given book series.
A book can be associated with many authors.
UCBooks needs to keep track of user ratings for each book and author (e.g., 1-5 and 1 for ‘Dislike’, to 5, for ‘Awesome!’).
A particular user rates a particular book at a given time.
A user CANNOT rate the same multiple times unless there are multiple editions of the book.
Each edition can be rated separately. Each user who submits a rating will be identified by a unique id and has a name, gender, age, and location. Nothing is anonymous.
There is also the social network between users. Users can send communication requests (i.e. instant messages/emails) to other users. Such requests can be accepted or ignored.
Once accepted, the two users are considered ‘book buddies.’ If ignored, the user can send the request again.
We want to add a store when the requests were sent (timestamp), the result of the requests and when the request was answered (timestamp).