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 textual description 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 10 classes
  2. Each class 3 to 5 attributes, some with multiplicity 0..*
  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 as SVG. For example, The homework is to be turned in via the study system by a group leader.
  1. A zipped file named NPRG036-<groupID>.zip, e.g.
  2. Folder 1 containing domain.svg with the image of the conceptual model and domain.txt in UTF-8 containing the 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.