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
- lähettämällä sähköpostia osoitteeseen
itka2004-teachers@jyu.onmicrosoft.com - laittamalla viestiä kurssin Teams-ryhmään tai osallistumaalla ohjauksiin: Teams ja ohjaukset
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:

- 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
- 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
- Drawing area
- 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:
- Identify clear entity sets and draw them
- Identify relationships between entity sets and draw them
- Note and mark cardinalities of relationships, i.e., how many entities are involved in the relationship
- 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:
- Scroll down to the diagram editor.
- Select Entity from the object drawing tools on the top bar.
- 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.
- Click the added entity once.
- Set the entity name to
STUDENTfrom the properties area. - Repeat the same for each entity set.
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
- lähettämällä sähköpostia osoitteeseen
itka2004-teachers@jyu.onmicrosoft.com - laittamalla viestiä kurssin Teams-ryhmään tai osallistumaalla ohjauksiin: Teams ja ohjaukset
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:

- 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
- Objektien piirto
- Kohde: Lisää uusi kohdetyyppi klikkaamalla muokkausalueesta
- Attribuutti: Lisää uusi attribuutti klikkaamalla muokkausalueesta
- Suhde: Lisää uusi suhde klikkaamalla muokkausalueesta
- Teksti: Lisää kommentti muokkausalueeseen
- Piirtoalue
- 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:
- Tunnistetaan selkeät kohdetyypit ja piirretään ne
- Tunnistetaan kohdetyyppien väliset suhteet ja piirretään ne
- Mietitään ja merkitään suhteiden kardinaalisuudet, eli kuinka monta kohdetta on mukana suhteessa
- Liitetään lopuksi kohteiden ja suhteiden attribuutit eli ominaisuudet paikalleen
Kohdetyypit
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:
- Siirry alas kaavioeditorin kohdalle.
- Valitse yläpalkin objektin piirtotyökaluista Kohde.
- Klikkaa piirtoalueella jotakin kohtaa, johon kohde tulee. Uusi kohdetyyppi ilmestyy piirtoalueelle ja editori menee takaisin valintatilaan.
- Klikkaa lisättyä kohdetta kerran.
- Aseta kohteen nimeksi
OPISKELIJAominaisuusalueelta. - Toista sama jokaiselle kohdetyypille.
Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.
Finally save your diagram
Relationships
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.
- Scroll down to the diagram editor.
- Select Connect from the editing selections on the top bar.
- Click the
STUDENTentity set and hold the mouse button down. - Move the cursor to the
COURSEentity set. You see how a line appears at both entity sets. - Let go of the mouse button.
STUDENTandCOURSEentity sets were connected to each other with a relationship. The editor simultaneously switched back to selection mode. - Click the relationship once, so that properties related to the relationship appear in the properties area.
- Set the relationship name to
TakesExam. - Repeat steps 2-7 for all four relationships. Give the relationships sensible names.
- Finally, move the entity and relationship sets slightly apart from each other so that the diagram looks easily readable.
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
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.
- Siirry alas kaavioeditorin kohdalle.
- Valitse yläpalkin muokkausvalinnoista Yhdistä.
- Klikkaa
OPISKELIJA-kohdetyyppiä ja pidä hiiren painike pohjassa. - Siirrä kursori
KURSSI-kohdetyypin luo. Näet, kuinka viiva ilmestyy kummankin kohdetyypin kohdalle. - Päästä irti hiiren painikkeesta.
OPISKELIJAjaKURSSI-kohdetyypit yhdistettiin toisiinsa suhteella. Editori samalla siirtyi takaisin valintatilaan. - Klikkaa suhdetta kerran, jolloin ominaisuusalueeseen ilmestyvät suhteeseen liittyvät ominaisuudet.
- Aseta suhteen nimeksi
Tenttii. - Toista vaiheet 2-7 kaikille neljälle suhteelle. Anna suhteille järkevät nimet.
- Lopuksi siirrä kohde- ja suhdetyypit hieman erilleen toisistaan niin, että kuvio näyttää helposti luettavalta.
Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.
Finally save your diagram
Cardinalities
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.
- Scroll down to the diagram editor.
- Select the relationship
Studies. - Set minimum cardinality 0-1 in the editing area.
- Select
1as cardinality from the MIN column on theStudentrow (Student Studies in at least one department) - Select
0as cardinality from the MIN column on theDepartmentrow (In Department Studies at least zero students)
- Select
- Set maximum cardinality M-1 similarly.
- Select
1as cardinality from the MAX column on theStudentrow (Student Studies in at most one department) - Select
Nas cardinality from the MAX column on theDepartmentrow (In Department Studies at mostNi.e. many students)
- Select
- 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).
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
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.
- Siirry alas kaavioeditorin kohdalle.
- Valitse suhde
Opiskelee. - Aseta muokkausalueessa minimikardinaalisuus 0-1.
- Valitse MIN-sarakkeesta
Opiskelija-riviltä kardinaaliteetiksi1(Opiskelija Opiskelee vähintään yhdessä laitoksessa) - Valitse MIN-sarakkeesta
Laitos-riviltä kardinaaliteetiksi0(Laitoksessa Opiskelee vähintään nolla opiskelijaa)
- Valitse MIN-sarakkeesta
- Aseta vastaavasti maksimikardinaalisuus M-1.
- Valitse MAX-sarakkeesta
Opiskelija-riviltä kardinaaliteetiksi1(Opiskelija Opiskelee korkeintaan yhdessä laitoksessa) - Valitse MAX-sarakkeesta
Laitos-riviltä kardinaaliteetiksiN(Laitoksessa Opiskelee korkeintaanNeli monta opiskelijaa)
- Valitse MAX-sarakkeesta
- 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).
Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.
Finally save your diagram
Attributes
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.
- Scroll down to the diagram editor.
- Select entity
STUDENT. - Click the Add attribute button in the properties area. This adds a new attribute to the entity
STUDENTand selects it as active. - Set the name of the added attribute to
email address. - Move the attribute in the drawing area slightly to the side to a better location.
- Select entity
Studentagain and add a new attribute with the Add attribute button. - Set the attribute name to
name. - Mark the attribute as composite as defined in the requirement.
- Select the checkbox
Compositefrom the properties area - Press the Add child attribute button that appeared next to it and set its name to
first name - Select
nameattribute in the drawing area and addlast nameas its child attribute as well
- Select the checkbox
- Arrange attributes in the drawing area sensibly.
- Add the rest of the attributes. Set the correct type (composite, multivalued) for attributes based on the description above.
- Finally, clean up your diagram.
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
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.
- Siirry alas kaavioeditorin kohdalle.
- Valitse kohde
OPISKELIJA. - Klikkaa ominaisuusalueella olevaa Lisää attribuutti-painiketta. Tämä lisää uuden attribuutin kohteeseen
OPISKELIJAja valitsee sen aktiiviseksi. - Aseta lisätyn attribuutin nimeksi
sähköpostiosoite. - Siirrä attribuutti piirtoalueella hieman sivulle parempaan sijaintiin.
- Valitse taas kohde
Opiskelijaja lisää uusi attribuutti Lisää attribuutti-painikkeella. - Aseta attribuutin nimeksi
nimi. - 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-attribuutiksisukunimi
- Valitse ominaisuusalueesta ruksi
- Asettele piirtoalueelle attribuutit järkeväksi.
- Lisää loput attribuutit. Aseta attribuuteille oikea tyyppi (koottu, moniarvoinen) yllä olevan kuvauksen perusteella.
- Siisti lopuksi kuviosi.
Voit kelluttaa kaavioeditorin Kelluta-painikkeella. Silloin teksti siirtyy oikeaan laitaan, ja editorille vapautuu tilaa oikealle.
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,
ssnis certainly short (11 characters), but it may change in some cases. For this reason, it is better to create a new key attributeidwith which the student can be uniquely identified.For a course,
course codeis certainly unique and short.For a department, the
nameattribute takes up space unnecessarily to be a good key attribute. Instead, let's create a new attributeidthat identifies the department.Similarly, for a faculty, the
nameattribute can be too long to be a good key attribute. Let's create its ownidattribute for it too and set it as the primary key.For the
TakesExamrelationship, the most suitable key isSTUDENTentity,COURSEentity, anddateattribute 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 onlydateas 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.
- Scroll down to the diagram editor.
- Select
course codeattribute belonging toCOURSEentity - From properties area select Key Attribute. This makes
course codeattribute a key attribute. - Add a new
idattribute toSTUDENTentity and mark it as a key attribute in the same way. - Go through the entities and relationships mentioned above and mark key attributes in them. Make new attributes as needed.
- Finally, clean up the diagram a bit.
Tallenna lopuksi kaaviosi
Avainattribuutit
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
hetuon varmasti lyhyt (11 merkkiä), mutta se voi joissain tapauksissa vaihtua. Tästä syystä parempi on luoda uusi avainattribuuttiid, jolla opiskelijan voi yksilöidä.Kurssilla
kurssikoodion varmasti yksilöllinen ja lyhyt.Laitoksella
nimi-attribuutti vie turhaan tilaa ollakseen hyvä avainattribuutti. Sen sijaan luodaan uusi attribuuttiid, joka yksilöi laitoksen.Vastaavasti tiedekunnalla
nimi-attribuutti voi olla liian pitkä ollakseen hyvä avainattribuutti. Luodaan sillekin omaid-attribuutti ja asetetaan se perusavaimeksi.Tenttii-suhteelle sopivin avain onOPISKELIJA-kohde,KURSSI-kohde japä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 ainoastaanpä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.
- Siirry alas kaavioeditorin kohdalle.
- Valitse
kurssikoodi-attribuutti, joka kuuluuKURSSI-kohteeseen - Ominaisuusalueelta valitse Avainattribuutti. Tämä tekee
kurssikoodi-attribuutista avainattribuutin. - Lisää
OPISKELIJA-kohteelle uusiid-attribuutti ja merkitse se avainattribuutiksi samalla tavalla. - Käy läpi yllä mainitut kohteet sekä suhteet ja merkitse niihin avainattribuutit. Tee uudet attribuutit tarpeen mukaan.
- Siisti lopuksi kaavio hieman.
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.
Tallenna lopuksi kaaviosi
Lopuksi
Kun olet valmis, voit jatkaa eteenpäin muihin harjoitustehtäviin.
Voit antaa lyhyen itsearvion onnistumisestasi ja yleisesti palautteen harjoituksesta alla.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.