User Tools

Site Tools


qookie:database

This is an old revision of the document!


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.

  • Size, the database size will not be an issue, since it will probably never contain more than a couple of thousands entries.

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:
FIXME define common attributes.

Ingredient

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

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

Dish

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

Attribute Type Description
uid Integer A unique number defining this dish.
name String The name or title of the dish.
description String A description of the dish.
image Binary An image showing the dish.
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
uid Integer A unique number defining this course.
name String The name or title of the course.
description String A description of the course.
image Binary An image showing the course.
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
uid Integer A unique number defining this menu.
name String The name or title of the menu.
description String A description of the menu.
image Binary An image showing the menu.
courses List<Integer> A list of course uids, used in the menu.
qookie/database.1227440585.txt.gz · Last modified: 2008/11/23 12:43 by deva