NPRG036 - Data Formats - Homework 1 assignment

Choose a domain/topic for your homework. Create a conceptual model of that domain using UML Class Diagrams and a structured textual description (see e.g. this data specification) of what is represented in the domain model. The consecutive homework parts will then be governed by this conceptual model. Quantitative requirements:
  1. 5 to 8 classes
  2. Each class 2 to 4 attributes, some with multiplicity 0..*. Attributes inherited from a parent class in an inheritance hierarchy count as well, i.e. it is ok not to create attributes for a child class if parent class already has 2 to 4.
  3. At least 4 associations. Include association end multiplicities 0..*, 0..1, 1..1
Use a tool that allows you to draw UML Class Diagrams and export them, ideally as SVG, PNG if SVG not possible. For example,, PlantUML or LucidChart. Beware that the free version of LucidChart does not support "copy as new" functionality. The homework is to be turned in via the study system by a group leader.
  1. A zipped file named NPRG036-<groupID>, e.g.
  2. Folder 1 containing domain.svg (or .png) with the image of the conceptual model and domain.txt in UTF-8 containing the structured textual description of the domain model.
Common mistakes
  1. Some of you were still thinking about data in terms of an application, and what the application means, instead of focusing on what the data represents in the real world.
  2. Attributes should be primitive values (strings, dates, booleans) of the real world entity represented by the class. When they are more complex, they typically represent another real world entity and its primitive attributes.
  3. Common mistake was including attribute of another real world entity, which should be solved by introducing a new class and a relationship to it. Typically something, which exists independently of the current entity, and has a label. For instance, "country" attribute of a "customer". Country exists independently of the customer. Country name is an attribute of the "country" real world entity, not of the "customer". "Customer" lives in a country - is a relationship.
  4. Using 1..* multiplicities means that the source entity cannot exists in your data without at least one relationship to the other entity. For instance, having a food producer connected to their items sold in an eshop this way means, that when their last item from the eshop is removed, data about the producer needs to be removed as well. I.e. there cannot be data about any producers, which (even temporarily) do not have any items... might be problematic.