area_end found for "tehtava-kohdetyypit" without corresponding start. Fix this to get rid of this warning.
area_end found for "tehtava-suhteet" without corresponding start. Fix this to get rid of this warning.
area_end found for "tehtava-kardinaliteetti" without corresponding start. Fix this to get rid of this warning.
area_end found for "tehtava-attribuutit" without corresponding start. Fix this to get rid of this warning.
area_end found for "tehtava-avainattribuutit" without corresponding start. Fix this to get rid of this warning.

English version of the materials are work in progress!

Expect bugs, typos, and other issues. The English version is expected to be completed during spring 2026.

Exercise: Drawing ER Diagrams

This is a guided exercise where we learn to design databases. In the exercise, we go through the design of a small database and drawing an ER diagram. At the same time, we get to know the ERDPlus diagram editor used in the course.

The exercise has several subtasks. You progress in the exercise by completing each subtask at a time.

Huomautus

Jos huomaat virheitä tai sinulla on kysyttävää tehtävistä, ota yhteyttä kurssin opettajiin

ER Diagram Editor

With ER diagrams, the conceptual model of a database can be visually described. In the conceptual model, the structure of the database is described at an abstract level using domain concepts and relationships between them.

Let's briefly go through the appearance and most common functions of the ER diagram editor:

  1. Editing selections
    • Select: Selection mode where an object can be selected
    • Connect: Connection mode with which different objects can be connected to each other with a line
    • Undo, Redo: Undoes or redoes the last action
    • Delete: Deletes the selected object
  2. Drawing objects
    • Entity: Add a new entity set by clicking on the editing area
    • Attribute: Add a new attribute by clicking on the editing area
    • Relationship: Add a new relationship by clicking on the editing area
    • Text: Add a comment to the editing area
  3. Drawing area
  4. Properties area: when an object is selected, shows its properties

The buttons on the top bar of the editor change the mode of the editor. For example, when clicking the Select button, the editor goes into selection mode. In selection mode, you can select or move objects. Different modes are explained later in this assignment.

Changes in the diagram editor can be saved with the Save button below the editor. If you want to completely clear the editor to its initial state, you can use the Reset link.

Requirements Specification

In this assignment, let's go through the design of a small student database.

The following things are required from our database:

  • Essential information about students must be stored, i.e., at least social security number, email address, name, address, phone numbers, and starting year.
  • The database must find the names of university departments and faculties and information on which department student each student is.
  • The database is also desired to have information about courses, their scope (number of credits), course codes, which department the course is about, and which courses which student has completed, when, and with what grade.

In conceptual modelling, it is usually easiest to proceed as follows:

  1. Identify clear entity sets and draw them
  2. Identify relationships between entity sets and draw them
  3. Note and mark cardinalities of relationships, i.e., how many entities are involved in the relationship
  4. Finally, attach attributes or properties of entities and relationships in place

Entity Sets

{#openEntity Sets plugin="jsrunner" id="CR3KriY0RDj2" nocache="true"} groups: - Anonymous showInView: true button: Avaa osatehtävä "Entity Sets" fields: - 947075.ex21-er-kohteet.ALL=ex21-er-kohteet - 947075.ex21-er-suhteet.ALL=ex21-er-suhteet - 947075.ex21-er-kardinaalisuus.ALL=ex21-er-kardinaalisuus - 947075.ex21-er-attribuutit.ALL=ex21-er-attribuutit - 947075.ex21-er-avainattribuutit.ALL=ex21-er-avainattribuutit program: |!! if ("<span class="error" ng-non-bindable>The `belongs` filter requires `nocache=true` attribute.</span>" !== "True") { } gtools.outdata.saveAreaVisibility = false; gtools.outdata.areaVisibility = { "tehtava-kohdetyypit": true, }; !!

Let's first pick all clear entity sets based on the database requirements specification. There are no exact rules for finding entity sets, so there is no clear single correct solution either.

Entity sets can be searched from the requirements specification by identifying recurring concepts, and concrete real-world things. Try to choose entity sets so that they model the domain. For example, in a student database, a sensible entity set could be "student", but "name" is already too general to be its own entity set.

Based on the requirements specification, we pick the following clear entity sets:

  • Student
  • Department
  • Faculty
  • Course

Next, let's draw entity sets in the ER diagram editor below:

  1. Scroll down to the diagram editor.
  2. Select Entity from the object drawing tools on the top bar.
  3. Click on a spot in the drawing area where the entity will come. A new entity set appears in the drawing area and the editor goes back to selection mode.
  4. Click the added entity once.
  5. Set the entity name to STUDENT from the properties area.
  6. Repeat the same for each entity set.
Example: adding an entity to the ER diagram editor

You can float the diagram editor with the Float button. Then the text moves to the right edge, and space is freed up for the editor on the right.

Harjoitus: ER-kaavioiden piirtäminen

Tämä on ohjattu harjoitus, jossa opitaan suunnittelemaan tietokantoja. Harjoituksessa käydään läpi pienen tietokannan suunnittelu ja ER-kaavion piirtämistä. Samalla tutustutaan opintojaksolla käytettävään ERDPlus-kaavioeditoriin.

Harjoituksessa on useita osatehtäviä. Pääset harjoituksessa eteenpäin suorittamalla jokainen osatehtävä kerrallaan.

Huomautus

Jos huomaat virheitä tai sinulla on kysyttävää tehtävistä, ota yhteyttä kurssin opettajiin

ER-kaavioeditori

ER-kaavioilla voidaan visuaalisesti kuvata tietokannan käsitteellinen malli. Käsitteellisessä mallissa tietokannan rakenne kuvataan abstraktilla tasolla käyttäen kohdealueen käsitteitä ja niiden välisiä suhteita.

Käydään lyhyesti läpi ER-kaavioeditorin ulkoasu ja yleisimmät toiminnot:

  1. Muokkausvalinnat
    • Valitse: Valintatila, jossa voi valita jotain objektia
    • Yhdistä: Yhdistämistila, jolla eri objekteja voi yhdistää toisiinsa viivalla
    • Kumoa, Toista: Kumoaa tai toistaa viimeisen toiminnon
    • Poista: Poistaa valitun objektin
  2. Objektien piirto
    • Kohde: Lisää uusi kohdetyyppi klikkaamalla muokkausalueesta
    • Attribuutti: Lisää uusi attribuutti klikkaamalla muokkausalueesta
    • Suhde: Lisää uusi suhde klikkaamalla muokkausalueesta
    • Teksti: Lisää kommentti muokkausalueeseen
  3. Piirtoalue
  4. Ominaisuusalue: kun jokin objekti on valittu, näyttää sen ominaisuudet

Editorin yläpalkin painikkeet muuttavat editorin tilaa. Esimerkiksi, kun klikkaa Valitse-painiketta, editori menee valintatilaan. Valintatilassa voit valita tai siirtää objekteja. Eri tiloista kerrotaan myöhemmin tässä tehtävässä.

Kaavioeditorin muutokset voi tallentaa editorin alapuolella olevalla Tallenna-painikkeella. Jos editorin haluaa täysin tyhjentää sen alkutilaan, voi käyttää Alusta-linkkiä.

Vaatimusmäärittely

Käydään tässä tehtävässä läpi pienen opiskelijatietokannan suunnittelu.

Tietokannastamme vaaditaan seuraavanlaisia asioita:

  • Opiskelijoista on tallennettava oleellisimmat tiedot eli ainakin henkilötunnus, sähköpostiosoite, nimi, osoite, puhelinnumerot ja aloitusvuosi.
  • Tietokannasta on löydyttävä yliopiston laitosten ja tiedekuntien nimet sekä tieto siitä, minkä laitoksen opiskelija kukin opiskelija on.
  • Tietokantaan halutaan myös tiedot kursseista, niiden laajuudesta (opintoviikkomäärä), kurssikoodit, minkä laitoksen kurssi on kyseessä ja mitä kursseja kukakin opiskelija on suorittanut, milloin ja millä arvosanalla.

Käsitteellisessä mallintamisessa on yleensä helpointa edetä seuraavasti:

  1. Tunnistetaan selkeät kohdetyypit ja piirretään ne
  2. Tunnistetaan kohdetyyppien väliset suhteet ja piirretään ne
  3. Mietitään ja merkitään suhteiden kardinaalisuudet, eli kuinka monta kohdetta on mukana suhteessa
  4. Liitetään lopuksi kohteiden ja suhteiden attribuutit eli ominaisuudet paikalleen

Kohdetyypit

# openKohdetyypit

Poimitaan ensin tietokannan vaatimusmäärittelyn perusteella kaikki selkeät kohdetyypit. Kohdetyyppien etsimiselle ei ole tarkkoja sääntöjä, joten ei ole myöskään aina selkeää yksittäistä oikeaa ratkaisua.

Kohdetyypit voi etsiä vaatimusmäärittelystä tunnistamalla toistuvia käsitteitä, ja konkreettisia reaalimaailman asioita. Pyri valitsemaan kohdetyypit niin, että ne mallintavat kohdealuetta. Esimerkiksi opiskelijatietokannassa järkevä kohdetyyppi voisi olla "opiskelija", mutta "nimi" on jo liian yleinen omaksi kohdetyypiksi.

Vaatimusmäärittelyn perusteella poimitaan seuraavat selkeät kohdetyypit:

  • Opiskelija
  • Laitos
  • Tiedekunta
  • Kurssi

Piirretään seuraavaksi kohdetyypit alla olevaan ER-kaavioeditoriin:

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse yläpalkin objektin piirtotyökaluista Kohde.
  3. Klikkaa piirtoalueella jotakin kohtaa, johon kohde tulee. Uusi kohdetyyppi ilmestyy piirtoalueelle ja editori menee takaisin valintatilaan.
  4. Klikkaa lisättyä kohdetta kerran.
  5. Aseta kohteen nimeksi OPISKELIJA ominaisuusalueelta.
  6. Toista sama jokaiselle kohdetyypille.
Esimerkki: kohteen lisääminen ER-kaavioeditoriin

Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.

# 780197.ex21-er-kohteet

Finally save your diagram

Relationships

# openRelationships

Let's think next about what relationships exist between entities. Like in the case of entity sets, there are no exact rules for searching for relationships either.

Try to find relationships that are relevant to database modelling, i.e., is there reason to even store them in the database. Relationships can relate, for example, to the existence of entities, events between entities, or activities of entities.

Based on the requirements specification, we find the following relationships:

  • Students take exams for courses
  • Every student studies in some department
  • Every department belongs to some faculty
  • Every course is organized by some specific department

Let's now draw relationship sets corresponding to relationships and connect them to entity sets.

Draw changes in the ER diagram editor below.

  1. Scroll down to the diagram editor.
  2. Select Connect from the editing selections on the top bar.
  3. Click the STUDENT entity set and hold the mouse button down.
  4. Move the cursor to the COURSE entity set. You see how a line appears at both entity sets.
  5. Let go of the mouse button. STUDENT and COURSE entity sets were connected to each other with a relationship. The editor simultaneously switched back to selection mode.
  6. Click the relationship once, so that properties related to the relationship appear in the properties area.
  7. Set the relationship name to TakesExam.
  8. Repeat steps 2-7 for all four relationships. Give the relationships sensible names.
  9. Finally, move the entity and relationship sets slightly apart from each other so that the diagram looks easily readable.
Example: adding relationships to the ER diagram editor

You can float the diagram editor with the Float button. Then the text moves to the right edge, and space is freed up for the editor on the right.

Tallenna lopuksi kaaviosi

Suhteet

# openSuhteet

Mietitään seuraavaksi, mitä suhteita kohteiden välillä esiintyy. Kuten kohdetyyppien tapauksessa, myöskään suhteiden etsimiselle ei ole tarkkoja sääntöjä.

Yritä etsiä suhteet, jotka ovat tietokannan mallintamisen kannalta oleellisia, eli onko niitä syytä edes tallentaa tietokantaan. Suhteet voivat liittyä esimerkiksi kohteiden olemassaoloon, kohteiden välisiin tapahtumiin tai kohteiden toimintaan.

Vaatimusmäärittelyn perusteella löydämme seuraavia suhteita:

  • Opiskelijat tenttivät kursseja
  • Jokainen opiskelija opiskelee jossain laitoksessa
  • Jokainen laitos kuuluu johonkin tiedekuntaan
  • Jokaisen kurssin järjestää jokin tietty laitos

Piirretään nyt suhteita vastaavia suhdetyyppejä ja yhdistetään ne kohdetyyppeihin.

Piirrä muutokset alla olevaan ER-kaavioeditoriin.

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse yläpalkin muokkausvalinnoista Yhdistä.
  3. Klikkaa OPISKELIJA-kohdetyyppiä ja pidä hiiren painike pohjassa.
  4. Siirrä kursori KURSSI-kohdetyypin luo. Näet, kuinka viiva ilmestyy kummankin kohdetyypin kohdalle.
  5. Päästä irti hiiren painikkeesta. OPISKELIJA ja KURSSI -kohdetyypit yhdistettiin toisiinsa suhteella. Editori samalla siirtyi takaisin valintatilaan.
  6. Klikkaa suhdetta kerran, jolloin ominaisuusalueeseen ilmestyvät suhteeseen liittyvät ominaisuudet.
  7. Aseta suhteen nimeksi Tenttii.
  8. Toista vaiheet 2-7 kaikille neljälle suhteelle. Anna suhteille järkevät nimet.
  9. Lopuksi siirrä kohde- ja suhdetyypit hieman erilleen toisistaan niin, että kuvio näyttää helposti luettavalta.
Esimerkki: suhteiden lisääminen ER-kaavioeditoriin

Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.

# 780197.ex21-er-suhteet

Finally save your diagram

Cardinalities

# openCardinality

Cardinality tells how many relationships an entity can or will participate in. There are two types of cardinalities: minimum cardinality tells the minimum necessary number of entities in the relationship, while maximum cardinality tells the maximum allowed number of entities. For example, in a marriage, maximum and minimum cardinalities are so-called one to one (1-1), as the parties in a marriage are two different people. As another example, in a library, the borrowing relationship between a person and a book is at minimum zero-zero (0-0, no one needs to borrow a book, a person can be without borrowing anything) and at maximum many-to-many (M-M, a book can be borrowed by multiple people, a person can have many books borrowed).

Cardinalities often have to be thought about yourself, as they are often not mentioned separately in requirements. However, cardinalities must be considered carefully, as they may have an impact when implementing the actual database.

Taking into account the domain (higher education student register), we deduce the following cardinalities:

  • Many students can take exams for one or more courses. On the other hand, a course does not have to have an exam, and a student can be without participating in an exam.
    • The minimum cardinality is thus 0-0, and the maximum cardinality is clearly M-M (Student, Course).
  • Every student belongs to one department (major). One department can have multiple students. Let's agree that a department can be without students too.
    • The minimum cardinality is thus 0-1 and the maximum is M-1 relationship (Student, Department)
  • Every department belongs to one faculty. One faculty can have multiple departments. Similarly, let's agree that a faculty can be without departments.
    • It is thus a 0-1 relationship at minimum and M-1 relationship at maximum (Department, Faculty)
  • Several courses are organized at a department. Every course is teaching under one specific department. However, a department could be without courses.
    • Minimum cardinality is 1-0 and maximum cardinality 1-M (Department, Course)

Let's draw cardinalities in the ER diagram. For ER diagrams, there are several different ways to mark cardinalities (see Chapter 2.2).

Let's draw cardinalities in our relationships. Draw changes in the ER diagram editor below.

  1. Scroll down to the diagram editor.
  2. Select the relationship Studies.
  3. Set minimum cardinality 0-1 in the editing area.
    • Select 1 as cardinality from the MIN column on the Student row (Student Studies in at least one department)
    • Select 0 as cardinality from the MIN column on the Department row (In Department Studies at least zero students)
  4. Set maximum cardinality M-1 similarly.
    • Select 1 as cardinality from the MAX column on the Student row (Student Studies in at most one department)
    • Select N as cardinality from the MAX column on the Department row (In Department Studies at most N i.e. many students)
  5. Repeat steps 2-4 for all other relationships. Be careful with the direction of cardinality. Think about it in plain language (e.g. "Student Takes Exam at least" -> Student row MIN column).
Example: marking cardinality in ER diagram editor

You can float the diagram editor with the Float button. Then the text moves to the right edge, and space is freed up for the editor on the right.

Tallenna lopuksi kaaviosi

Kardinaalisuudet

# openKardinaliteetti

Kardinaalisuus kertoo, kuinka moneen suhteeseen kohde voi tai tulee osallistumaan. Kardinaalisuuksia on kahdenlaista: minimikardinaalisuus kertoo pienimmän tarvittavan kohteiden määrän suhteeseen, kun taas maksimikardinaalisuus kertoo suurimman sallitun kohteiden määrän. Esimerkiksi avioliitossa maksimi- ja minikardinaalisuudet ovat ns. yksi suhteen yksi (1-1), sillä avioliitossa osapuolina on kaksi eri henkilöä. Toisena esimerkkinä kirjastossa henkilön ja kirjan lainaussuhde on minimissään nolla-nolla (0-0, kenenkään ei tarvitse lainata kirjaa, henkilö voi olla lainaamatta mitään) ja maksimissaan moni-moneen (M-M, kirjan voi lainata usea henkilö, henkilöllä voi olla monta kirjaa lainassa).

Kardinaalisuuksia joutuu usein miettimään itse, sillä niitä usein ei mainita vaatimuksissa erikseen. Kardinaalisuudet kuitenkin tulee pohtia tarkasti, sillä niillä voi olla vaikutusta varsinaista tietokantaa toteutettaessa.

Ottaen huomioon kohdealueen (korkeakoulun opiskelijarekisteri), päättelemme seuraavat kardinaalisuudet:

  • Monet opiskelijat voivat tenttiä yhtä tai useampaa kurssia. Toisaalta kurssilla ei ole pakko olla tenttiä, ja opiskelija voi olla osallistumatta tenttiin.
    • Minimikardinaalisuus on siis 0-0, ja maksimikardinaalisuus on selkeästi M-M (Opiskelija, Kurssi).
  • Jokainen opiskelija kuuluu yhteen laitokseen (pääaine). Yhdellä laitoksella voi olla useita opiskelijoita. Sovitaan, että laitos saa olla ilman opiskelijoitakin.
    • Minimikardinaalisuus on täten 0-1 ja maksimi on puolestaan M-1-suhde (Opiskelija, Laitos)
  • Jokainen laitos kuuluu yhteen tiedekuntaan. Yhdessä tiedekunnassa voi olla useita laitoksia. Vastaavasti sovitaan, että tiedekunta voi olla ilman laitoksia.
    • Kyseessä on siis 0-1-suhde minimissään M-1-suhde maksimissaan (Laitos, Tiedekunta)
  • Laitoksella järjestetään useita kursseja. Jokainen kurssi on yhden tietyn laitoksen alaista opetusta. Laitos kuitenkin voisi olla ilman kursseja.
    • Minimikardinaalisuus on 1-0 ja maksimikardinaalisuus 1-M (Laitos, Kurssi)

Piirretään kardinaalisuudet ER-kaavioon. ER-kaavioissa kardinaalisuuksille on olemassa useita eri merkintätapoja (ks. Luku 2.2).

Piirretään kardinaalisuudet meidän suhteisiin. Piirrä muutokset alla olevaan ER-kaavioeditoriin.

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse suhde Opiskelee.
  3. Aseta muokkausalueessa minimikardinaalisuus 0-1.
    • Valitse MIN-sarakkeesta Opiskelija-riviltä kardinaaliteetiksi 1 (Opiskelija Opiskelee vähintään yhdessä laitoksessa)
    • Valitse MIN-sarakkeesta Laitos-riviltä kardinaaliteetiksi 0 (Laitoksessa Opiskelee vähintään nolla opiskelijaa)
  4. Aseta vastaavasti maksimikardinaalisuus M-1.
    • Valitse MAX-sarakkeesta Opiskelija-riviltä kardinaaliteetiksi 1 (Opiskelija Opiskelee korkeintaan yhdessä laitoksessa)
    • Valitse MAX-sarakkeesta Laitos-riviltä kardinaaliteetiksi N (Laitoksessa Opiskelee korkeintaan N eli monta opiskelijaa)
  5. Toista vaiheet 2-4 kaikille muille suhteille. Ole tarkkana kardinaalisuuden suunnan kanssa. Mieti asia esimerkiksi selkokielellä (esim. "Opiskelija Tenttii vähintään" -> Opiskelija-rivin MIN-sarake).
Esimerkki: kardinaalisuuden merkitseminen ER-kaavioeditorissa

Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.

# 780197.ex21-er-kardinaalisuus

Finally save your diagram

Attributes

# openAttributes

Next, let's attach properties (attributes) related to every entity and relationship. In searching for attributes, it is worth considering what things about each entity are desired to be stored in the database. All information is not necessarily relevant even if it is mentioned in the requirement. Think at the same time if some attribute is special (multivalued, derived, composite). At this stage, key attributes should not be thought about yet; it is more important to get all necessary attributes defined.

From our student register requirements, we identify the following attributes:

  • Student
    • social security number
    • email address
    • name, which consists of first name and last name
    • address
    • phone numbers
    • starting year
  • Course
    • name
    • course code
    • scope
  • Department
    • name
  • Faculty
    • name
  • TakesExam
    • date
    • grade

Note that based on the description, we found a couple of essential attributes for the relationship TakesExam as well. Taking an exam always involves a date and a grade received from the exam.

Let's draw attributes visible next. Draw changes in the ER diagram editor below.

  1. Scroll down to the diagram editor.
  2. Select entity STUDENT.
  3. Click the Add attribute button in the properties area. This adds a new attribute to the entity STUDENT and selects it as active.
  4. Set the name of the added attribute to email address.
  5. Move the attribute in the drawing area slightly to the side to a better location.
  6. Select entity Student again and add a new attribute with the Add attribute button.
  7. Set the attribute name to name.
  8. Mark the attribute as composite as defined in the requirement.
    • Select the checkbox Composite from the properties area
    • Press the Add child attribute button that appeared next to it and set its name to first name
    • Select name attribute in the drawing area and add last name as its child attribute as well
  9. Arrange attributes in the drawing area sensibly.
  10. Add the rest of the attributes. Set the correct type (composite, multivalued) for attributes based on the description above.
  11. Finally, clean up your diagram.
Example: drawing attributes in ER diagram editor

You can float the diagram editor with the Float button. Then the text moves to the right edge, and space is freed up for the editor on the right.

Tallenna lopuksi kaaviosi

Ominaisuudet

# openAttribuutit

Liitetään seuraavaksi jokaiseen kohteeseen ja suhteeseen niihin liittyvät ominaisuudet (attribuutit). Attribuuttien etsinnässä on syytä pohtia, mitä asioita jokaisesta kohteesta halutaan tallentaa tietokantaan. Kaikki tieto ei välttämättä ole oleellisia, vaikka se vaatimuksessa onkin mainittu. Mieti samalla, onko jokin attribuutti erityinen (moniarvoinen, johdettu, koottu). Tässä vaiheessa ei vielä avainattribuutteja kannata miettiä, vaan tärkeämpää on saada kaikki tarvittavat attribuutit määriteltyä.

Meidän opiskelijarekisterin vaatimuksista tunnistamme seuraavat attribuutit:

  • Opiskelija
    • henkilötunnus
    • sähköpostiosoite
    • nimi, joka koostuu etunimestä ja sukunimestä
    • osoite
    • puhelinnumerot
    • aloitusvuosi
  • Kurssi
    • nimi
    • kurssikoodi
    • laajuus
  • Laitos
    • nimi
  • Tiedekunta
    • nimi
  • Tenttii
    • päivämäärä
    • arvosana

Huomaa, että kuvauksen perusteella löysimme suhteelle Tenttii myös pari oleellista attribuuttia. Tenttimiseen liittyy aina päivämäärä sekä arvosana, joka tentistä on saatu.

Piirretään seuraavaksi attribuutit näkyviin. Piirrä muutokset alla olevaan ER-kaavioeditoriin.

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse kohde OPISKELIJA.
  3. Klikkaa ominaisuusalueella olevaa Lisää attribuutti-painiketta. Tämä lisää uuden attribuutin kohteeseen OPISKELIJA ja valitsee sen aktiiviseksi.
  4. Aseta lisätyn attribuutin nimeksi sähköpostiosoite.
  5. Siirrä attribuutti piirtoalueella hieman sivulle parempaan sijaintiin.
  6. Valitse taas kohde Opiskelija ja lisää uusi attribuutti Lisää attribuutti-painikkeella.
  7. Aseta attribuutin nimeksi nimi.
  8. Merkitse attribuutti kootuksi, kuten vaatimuksessa on määritelty.
    • Valitse ominaisuusalueesta ruksi Koottu
    • Paina viereen ilmestynyttä Lisää osa-attribuutti-painiketta ja aseta sen nimeksi etunimi
    • Valitse nimi-attribuutti piirtoalueella ja lisää sille vielä osa-attribuutiksi sukunimi
  9. Asettele piirtoalueelle attribuutit järkeväksi.
  10. Lisää loput attribuutit. Aseta attribuuteille oikea tyyppi (koottu, moniarvoinen) yllä olevan kuvauksen perusteella.
  11. Siisti lopuksi kuviosi.
Esimerkki: attribuuttien piirto ER-kaavioeditorissa

Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.

# 780197.ex21-er-attribuutit

Finally save your diagram

Key Attributes

{#openKey Attributes plugin="jsrunner" id="KHbABUe4bv6e" nocache="true"} groups: - Anonymous showInView: true button: Avaa osatehtävä "Key Attributes" fields: - 947075.ex21-er-kohteet.ALL=ex21-er-kohteet - 947075.ex21-er-suhteet.ALL=ex21-er-suhteet - 947075.ex21-er-kardinaalisuus.ALL=ex21-er-kardinaalisuus - 947075.ex21-er-attribuutit.ALL=ex21-er-attribuutit - 947075.ex21-er-avainattribuutit.ALL=ex21-er-avainattribuutit program: |!! if ("<span class="error" ng-non-bindable>The `belongs` filter requires `nocache=true` attribute.</span>" !== "True") { let v = tools.getValue("ex21-er-attribuutit", undefined); if (!v) { tools.println("Fill and save the \"Attributes\" subtask diagram before opening this subtask!"); return; } } gtools.outdata.saveAreaVisibility = false; gtools.outdata.areaVisibility = { "tehtava-avainattribuutit": true, }; !!

Finally, from the set of attributes, those properties must be chosen that uniquely identify each entity (and if necessary relationship). In the beginning, it is worth choosing one or a few candidate keys, i.e., all those attributes with which the entity could in principle be uniquely identified.

In this example, we find the following candidate keys:

  • Student: social security number or email address
  • Course: name or course code
  • Department: name
  • Faculty: name
  • TakesExam: student, course, and date combined

From candidate keys, it is worth choosing one best as the key attribute. A good key attribute is usually smallest in size and most certainly remains unique. For the future, at this stage, it might be sensible to also invent new attributes that would act purely as a key.

Based on the candidate keys above, we can deduce:

  • For a student, ssn is certainly short (11 characters), but it may change in some cases. For this reason, it is better to create a new key attribute id with which the student can be uniquely identified.

  • For a course, course code is certainly unique and short.

  • For a department, the name attribute takes up space unnecessarily to be a good key attribute. Instead, let's create a new attribute id that identifies the department.

  • Similarly, for a faculty, the name attribute can be too long to be a good key attribute. Let's create its own id attribute for it too and set it as the primary key.

  • For the TakesExam relationship, the most suitable key is STUDENT entity, COURSE entity, and date attribute combined. Just date is not enough for identification because there can be multiple exams on the same day. Also, date + course are not enough because multiple students can take the same course exam on the same day. All three together are enough for identification because the same student cannot take the same course exam multiple times on the same day. For the ER diagram, it is enough to mark only date as a key attribute, as the relationship key is actually chosen in connection with transformation (Chapter 3.2).

Let's now mark key attributes and create a few new attributes to help. Draw changes in the ER diagram editor below.

  1. Scroll down to the diagram editor.
  2. Select course code attribute belonging to COURSE entity
  3. From properties area select Key Attribute. This makes course code attribute a key attribute.
  4. Add a new id attribute to STUDENT entity and mark it as a key attribute in the same way.
  5. Go through the entities and relationships mentioned above and mark key attributes in them. Make new attributes as needed.
  6. Finally, clean up the diagram a bit.
Example: marking key attribute in ER diagram editor

Tallenna lopuksi kaaviosi

Avainattribuutit

# openAvainattribuutit

Lopuksi attribuuttien joukosta tulee valita ne ominaisuudet, jotka yksilöivät kunkin kohteen (ja tarvittaessa suhteen). Alkuun kannattaa valita yksi tai muutama avainehdokas, eli kaikki ne attribuutit, joilla periaatteessa voisi yksilöidä kohteen.

Tässä esimerkissä löydämme seuraavia avainehdokkaita:

  • Opiskelija: henkilötunnus tai sähköpostiosoite
  • Kurssi: nimi tai kurssikoodi
  • Laitos: nimi
  • Tiedekunta: nimi
  • Tenttii: opiskelija, kurssi ja päivämäärä yhdistettynä

Avainehdokkaista on syytä valita sitten yksi paras avainattribuutiksi. Hyvä avainattribuutti on yleensä kooltaan pienin ja varmimmin yksilöllisenä pysyvä. Jatkon kannalta tässä vaiheessa saattaa olla järkevää myös keksiä uusia attribuutteja, jotka toimisivat pelkästään avaimena.

Yllä olevien avainehdokkaiden perusteella voimme päätellä:

  • Opiskelijalla hetu on varmasti lyhyt (11 merkkiä), mutta se voi joissain tapauksissa vaihtua. Tästä syystä parempi on luoda uusi avainattribuutti id, jolla opiskelijan voi yksilöidä.

  • Kurssilla kurssikoodi on varmasti yksilöllinen ja lyhyt.

  • Laitoksella nimi-attribuutti vie turhaan tilaa ollakseen hyvä avainattribuutti. Sen sijaan luodaan uusi attribuutti id, joka yksilöi laitoksen.

  • Vastaavasti tiedekunnalla nimi-attribuutti voi olla liian pitkä ollakseen hyvä avainattribuutti. Luodaan sillekin oma id-attribuutti ja asetetaan se perusavaimeksi.

  • Tenttii-suhteelle sopivin avain on OPISKELIJA-kohde, KURSSI-kohde ja päivämäärä-attribuutti yhdistettynä. Pelkkä päivämäärä ei riitä yksilöintiin, koska samana päivänä voi olla useita tenttejä. Myöskään päivämäärä + kurssi eivät riitä, koska samana päivänä voi samaa kurssia tenttiä useampi opiskelija. Kaikki kolme yhdessä riittävät yksilöintiin, koska sama opiskelija ei voi samana päivänä tenttiä samaa kurssia useampaan kertaan. ER-kaavioon riittää, että merkitään ainoastaan päivämäärä avainattribuutiksi, sillä suhteen avain varsinaisesti valitaan transformoinnin (Luku 3.2) yhteydessä.

Merkitään nyt avainattribuutit ja luodaan muutama uusi attribuutti avuksi. Piirrä muutokset alla olevaan ER-kaavioeditoriin.

  1. Siirry alas kaavioeditorin kohdalle.
  2. Valitse kurssikoodi-attribuutti, joka kuuluu KURSSI-kohteeseen
  3. Ominaisuusalueelta valitse Avainattribuutti. Tämä tekee kurssikoodi-attribuutista avainattribuutin.
  4. Lisää OPISKELIJA-kohteelle uusi id-attribuutti ja merkitse se avainattribuutiksi samalla tavalla.
  5. Käy läpi yllä mainitut kohteet sekä suhteet ja merkitse niihin avainattribuutit. Tee uudet attribuutit tarpeen mukaan.
  6. Siisti lopuksi kaavio hieman.
Esimerkki: avainattribuutin merkitseminen ER-kaavioeditorissa
# 780197.ex21-er-avainattribuutit

Finally save your diagram

Finally

When you are ready, you can continue forward to other exercises.

You can give a short self-assessment of your success and general feedback on the exercise below.

# palaute

Tallenna lopuksi kaaviosi

Lopuksi

Kun olet valmis, voit jatkaa eteenpäin muihin harjoitustehtäviin.

Voit antaa lyhyen itsearvion onnistumisestasi ja yleisesti palautteen harjoituksesta alla.

# palaute

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.