Table of Contents

Qookie Database Design

Design goals

The following is a prioritized list of design goals for the Qookie database.

  1. Simplicity, the database should not (necessarily) require external services to run in order to work.
  2. Speed, the database should respond quickly to search queries.
  3. Ease of backup, the database should be easy to backup.
  4. Portability, the database should be easily ported to other formats/databases.

The following is a list of things that are not required by the Qookie database.

Database middleware

The database is implemented through a middleware layer, in order to abstract the physical database access away from the data itself.
This is also done in order to make porting the data storing to other databases an easy task.

Data definitions

Component

A component is the super class of all data components in Qookie. It contain all common attributes:

Attribute Type Description
uid Integer A unique number defining this component.
name String The name or title of the component.
description String A short description of the component.
image Binary An image of the component.

Preparation sequence

A named sequence of text blobs or images with a text blob, containing the atomic steps in a preparation procedure.

Ingredient

A basic ingredient, such as flour, an egg or a tomato.
An ingredient is made out of the following attributes:

Attribute Type Description
unit Unit The unit in which the ingredient is measured
season Season The season in which this ingredient can be acquired.
quantity Integer The usual quantity in which the ingredient can be acquired.
density Integer Units/pr gram.
category String To what category does this ingredient belong.

Recipe

A recipe is an atomic component of a dish, i.e. cheese sauce, fried potatoes, meat balls.

Attribute Type Description
ingredients List<Integer> A list of ingredient uids, used in the dish.

Course

A course is a combination of several dishes all served together at the same time, i.e. fried potatoes with meat balls and cheese sauce.

Attribute Type Description
dishes List<Integer> A list of dish uids, used in the course.

A menu is a combination of dishes to be served together or after each other. A standard menu is aperitif, starter, main course and desert.

Attribute Type Description
courses List<Integer> A list of course uids, used in the menu.