COP 4708 · Assignment 3 · Database Design

Foundation Design Board

You are the consultant. Four draft entities, a set of functional dependencies, and twenty minutes with the director. Turn it into a database design that satisfies every constraint.

The director's interview

The fundraising or donations can be through donors or through events. One donor can make recurrent donations or one time donation, which means that a donation must have a donor but a donor does not have to donate always. If donations are not enough an event will be initiated. Usually the collected donation will support one project or several projects. So a project must be supported by a donation, and donations have to be used for projects. Executive Director, Halifax Community Foundation

Every sentence above becomes a constraint your design has to enforce. So does every functional dependency.

Functional dependencies you recorded

Sample records from the current spreadsheets

Begin

What you're building

The board opens with the consultant's four draft tables already filled in. They are a starting point, not an answer — two of them are wrong.

For every column you set a data type, a size where the type needs one, whether it is a primary key, whether it is unique, whether it is a foreign key and to which table, and whether it accepts NULL.

Constraints turn green as your design starts to enforce them. All fifteen have to be green.

Two things to watch

Minimum cardinality is nullability. "A donation must have a donor" is not a diagram decoration — it is NOT NULL on the foreign key. That is the whole translation.

A column holds one value. If the director says a donation can support several projects, no single column in the donation table can carry that.