CSCI 370 Spring 2024 - Assignment 1
Due: 11:59pm, 25 January 2023, Thursday

Problem Description

You are asked to design a relational database for a company that maintains an online discussion forum (such as Discord).

There are many users in this forum. Upon sign up to the forum, each user is assigned a unique username, chose a personalized nickname, provide some contact information such as email. The date when the user signed up to this forum should also be captured and stored.

Some users are designated as hosts. Only hosts can create channels. One host can create multiple channels.

When a host creates a channel, the host must choose a unique channel name, give the channel a short description (up to 80 characters). And the creation time will be collected and stored. Each channel must be created by only one host. That host is the owner of the channel. A channel can be subscribed by multiple users. The owner of the channel doesn't necessarily need to subscribe to the channel.

Each user (including hosts) can subscribe to multiple channels multiple times (quit and subscribe again). The subscription/termination date/time should also be captured and stored.

When a user is actively subscribed to a channel, the user can view all messages posted in the channel. And the user can create a new message thread by posting a message or join an existing message thread by replying to a message in the message thread.

Each message shows a message body (up to 250 characters), posting time and its poster's username.

The owner of a channel can always view, post, reply and even delete messages in the channel.

No data about the actual viewing messages are collected and stored. Data relevant to all other activities will be collected and stored.

This problem description may have ambiguities and may miss some information for the application domain. You are welcome to document your own interpretation and assumption.

Your Tasks:

Draw an ER diagram to capture the data information described in the Problem Description.

Choose meaningful names for the entity sets, the attributes/properties, and the relationship sets. Identify appropriate constraints that should be held in the diagram (e.g., cardinality constraints on the relationship sets, the weak entity sets and aggregations if there are any, etc.). Indicate the identifiers and/or discriminators of the entity sets.

In your ER diagram, try to capture as much relevant information as possible. There may be properties or constraints that you cannot capture in your model. If you cannot model something exactly, it is preferable to be under-constrained rather than over-constrained. If there are constraints that you recognize but cannot capture in your ER model, document them clearly.

How to Submit


Last updated: January 18, 2024