Mitä on ER-mallinnus? Opi esimerkin avulla

⚡ Älykäs yhteenveto

Entiteetti-suhteiden mallintaminen on graafinen lähestymistapa tietokannan suunnitteluun, jossa reaalimaailman objektit esitetään entiteetteinä, kuvataan ne ominaisuuksilla ja tallennetaan niiden yhteys suhteiden kautta, jolloin luodaan selkeä suunnitelma ennen taulukoiden rakentamista.

  • 🧩 Mitä se on: ER-mallinnus on korkean tason graafinen datamalli, joka määrittelee dataelementit ja niiden väliset suhteet.
  • 🗂️ Rakennuspalikoita: Entiteetit edustavat reaalimaailman asioita, attribuutit kuvaavat niiden ominaisuuksia ja suhteet kuvaavat, miten entiteetit ovat vuorovaikutuksessa keskenään.
  • 🔗 Kardinaalisuus: Suhteet ovat yksi-yhteen, yksi-moneen tai monta-moneen -suhteita, ja ne ratkaistaan ​​liitosentiteetin avulla.
  • 🚀 EER-malli: Parannettu ER-malli käyttää UML-merkintätapaa ja lisärakenteita erittäin monimutkaisille tietokannoille.
  • 🎬 MyFlixin tapaustutkimus: Videokirjastoesimerkki yhdistää jäsenet, elokuvat, kategoriat, vuokraukset ja maksut ER-kaavioon.
  • 🤖 AI-apu: Tekoälytyökalut ja GitHub Copilot muuttavat luonnollisen kielen kuvaukset ER-kaavioiksi ja SQL-skeemoiksi.

ER-mallinnus

Mitä on ER-mallinnus?

Entiteettisuhdemalli (ER Modeling) on ​​graafinen lähestymistapa tietokannan suunnitteluun. Se on korkean tason tietomalli, joka määrittelee tietoelementit ja niiden suhteen tietylle ohjelmistojärjestelmälle. ER-mallia käytetään edustamaan todellisia objekteja.

Entiteetti on todellisessa maailmassa oleva asia tai objekti, joka on erotettavissa ympäröivästä ympäristöstään. Esimerkiksi jokainen organisaation työntekijä on erillinen yksikkö. Seuraavassa on joitakin yksiköiden tärkeimmistä ominaisuuksista.

  • Entiteetillä on joukko ominaisuuksia.
  • Kokonaisuuden ominaisuuksilla voi olla arvoja.

Tarkastellaan ensimmäistä esimerkkiämme uudelleen. Organisaation työntekijä on entiteetti. Jos ”Peter” on ohjelmoija (työntekijä) organisaatiossa Microsoft, hänellä voi olla ominaisuuksia, kuten nimi, ikä, paino, pituus jne. On selvää, että näillä on hänelle merkityksellisiä arvoja.

Jokaisella attribuutilla voi olla arvoja. Useimmissa tapauksissa yhdellä attribuutilla on yksi arvo. Mutta attribuuteilla voi olla myös useita arvoja. Esimerkiksi Peterin iällä on yksi arvo. Mutta hänen ”puhelinnumerot”-ominaisuudellaan voi olla useita arvoja.

Entiteetit voivat olla toisiinsa suhteissa. Tarkastellaan yksinkertaisinta esimerkkiä. Oletetaan, että jokainen Microsoft Ohjelmoijalle annetaan tietokone. On selvää, että myös Peterin tietokone on olio. Peter käyttää kyseistä tietokonetta, ja Peter käyttää samaa tietokonetta. Toisin sanoen, Peterin ja hänen tietokoneensa välillä on molemminpuolinen suhde.

Entiteettisuhteiden mallintamisessa mallinnamme entiteettejä, niiden ominaisuuksia ja entiteettien välisiä suhteita.

Miksi käyttää ER-mallia?

Nyt saatat miettiä, miksi käyttää ER-mallinnusta, kun voimme yksinkertaisesti luo tietokanta ja kaikki sen objektit ilman ER-mallinnusta? Yksi tietokannan suunnittelun haasteista on se, että suunnittelijat, kehittäjät ja loppukäyttäjät näkevät tiedot ja sen käytön eri tavalla. Jos tämä tilanne jätetään tarkistamatta, voimme päätyä tuottamaan tietokantajärjestelmän, joka ei täytä käyttäjien vaatimuksia.

Kaikkien sidosryhmien (sekä teknisten että ei-teknisten käyttäjien) ymmärtämät viestintävälineet ovat ratkaisevan tärkeitä käyttäjien vaatimukset täyttävien tietokantajärjestelmien tuottamisessa. ER-mallit ovat esimerkkejä tällaisista työkaluista.

ER-kaaviot lisäävät myös käyttäjien tuottavuutta, koska ne voidaan helposti muuntaa relaatiotaulukoiksi.

Enhanced Entity Relationship (EER) -malli

Enhanced Entity Relationship (EER) -malli on korkean tason datamalli, joka tarjoaa laajennuksia alkuperäiseen Entity Relationship (ER) -malliin. EER-mallit tukevat yksityiskohtaisempaa suunnittelua. EER-mallinnus nousi esiin ratkaisuna erittäin monimutkaisten tietokantojen mallintamiseen.

EER käyttää UML-merkintätapaa. UML on lyhenne sanoista Yhtenäinen mallinnuskieli; se on yleiskäyttöinen mallinnuskieli, jota käytetään oliopohjaisten järjestelmien suunnittelussa. Entiteetit esitetään luokkakaavioina. Suhteet esitetään entiteettien välisinä assosiaatioina. Alla oleva kaavio havainnollistaa ER-kaaviota käyttäen UML-merkintä.

Enhanced Entity Relationship (EER) -malli

Case-tutkimus: ER-kaavio "MyFlix"-videokirjastolle

Työskentelemme nyt MyFlix Video Library -tietokannan kanssa ymmärtääksemme ER-kaavioiden käsitteen. Käytämme tätä tietokantaa kaikessa tämän opetusohjelman käytännön työssä.

MyFlix on liiketoimintayksikkö, joka vuokraa elokuvia jäsenilleen. MyFlix on tallentanut tietueensa manuaalisesti. Johto haluaa nyt muuttaa a DBMS.

Katsotaanpa vaiheita EER-kaavion kehittämiseksi tälle tietokannalle:

  1. Tunnista entiteetit ja määritä niiden väliset suhteet.
  2. Jokaisella entiteetillä, attribuutilla ja suhteella tulisi olla asianmukaiset nimet, jotka myös ei-tekniset henkilöt ymmärtävät helposti.
  3. Suhteet eivät saa olla suoraan yhteydessä toisiinsa. Suhteiden tulee yhdistää kokonaisuuksia.
  4. Jokaisella tietyn entiteetin attribuutilla tulee olla yksilöllinen nimi.

”MyFlix”-kirjaston yksiköt

Yksiköt, jotka sisällytetään meidän ER-kaavio ovat:

  • Jäsenet – tämä yksikkö säilyttää jäsentietoja.
  • Elokuvat – tämä yksikkö sisältää tietoja elokuvista.
  • Luokat – tämä yksikkö sisältää tietoja, jotka luokittelevat elokuvat eri luokkiin, kuten "Draama", "Toiminta" ja "Eeppinen" jne.
  • Elokuvavuokraukset – tämä yksikkö säilyttää tietoja jäsenille vuokratuista elokuvista.
  • Maksut – tämä yksikkö säilyttää tietoja jäsenten tekemistä maksuista.

Entiteettien välisten suhteiden määrittäminen

Jäsenet ja elokuvat

Seuraava pätee näiden kahden kokonaisuuden välisiin vuorovaikutuksiin.

  • Jäsen voi vuokrata useamman kuin yhden elokuvan tietyllä ajanjaksolla.
  • Useampi kuin yksi jäsen voi vuokrata elokuvan tietyn ajanjakson aikana.

Yllä olevasta skenaariosta voimme nähdä, että suhteen luonne on monta-moneen. Relaatiotietokannat eivät tue monta-moneen-suhteita. Meidän on otettava käyttöön junction-entiteetti. Tämä on rooli, jota MovieRentals-entiteetti suorittaa. Sillä on yksi-moneen-suhde Jäsenet-taulukkoon ja toinen yksi-moneen-suhde Elokuvat-taulukkoon.

Elokuvat ja luokkakokonaisuudet

Seuraava koskee elokuvia ja luokkia.

  • Elokuva voi kuulua vain yhteen kategoriaan, mutta kategoriassa voi olla useampi kuin yksi elokuva.

Voimme tästä päätellä, että kategorioiden ja elokuvataulukoiden välinen suhde on luonteeltaan yksi-moneen.

Jäsenet ja maksuyksiköt

Seuraava pätee jäseniin ja maksuihin.

  • Jäsenellä voi olla vain yksi tili, mutta hän voi suorittaa useita maksuja.

Voimme tästä päätellä, että jäsenten ja maksuyksiköiden välinen suhde on luonteeltaan yksi-moneen.

Luo EER-malli käyttämällä MySQL Työpöytä

In MySQL Työpöytä, napsauta ”+”-painiketta.

Luo EER-malli käyttämällä MySQL Työpöytä

Double Avaa ER-kaavioiden työtila napsauttamalla Lisää kaavio -painiketta.

Lisää kaavio sisään MySQL Työpöytä

Seuraava ikkuna tulee näkyviin.

MySQL Workbench EER -mallinnusympäristö

Katsotaanpa kahta kohdetta, joiden kanssa työskentelemme.

  • Taulukko-objekti pöytätyökalu antaa meille mahdollisuuden luoda entiteettejä ja määritellä tiettyyn entiteettiin liittyvät ominaisuudet.
  • Paikan suhde paikkasuhdetyökalu -painikkeen avulla voimme määritellä entiteettien väliset suhteet.

Jäsenten entiteetillä on seuraavat ominaisuudet

  • Jäsennumero
  • Koko nimet
  • Sukupuoli
  • Syntymäaika
  • Fyysinen osoite
  • postiosoite

Luodaan nyt Jäsenet-taulukko

1. Vedä taulukko-objekti työkalupaneelista.

2. Pudota se työtilaan. Näkyviin tulee taulukko 1 -niminen entiteetti.

3. Double napsauta sitä. Alla oleva ominaisuusikkuna tulee näkyviin.

Jäsentaulukon ominaisuudet kohdassa MySQL Työpöytä

Seuraavaksi

  1. Muuta taulukko 1 muotoon Jäsenet.
  2. Muokkaa oletusarvoista idtable1-arvoa jäsenyysnumeroksi.
  3. Lisää seuraava kenttä napsauttamalla seuraavaa riviä.
  4. Tee sama kaikille Jäsenet-entiteetissä tunnistetuille määritteille.

Ominaisuudet-ikkunasi pitäisi nyt näyttää tältä.

Jäsenten entiteetin määritteet

Toista yllä olevat vaiheet kaikille tunnistetuille kokonaisuuksille.

Kaavion työtilasi pitäisi nyt näyttää alla esitetyltä.

MyFlix-entiteetit kaaviotyötilassa

Luodaan suhde jäsenten ja elokuvavuokraajien välille

  1. Valitse paikkasuhde olemassa olevien sarakkeiden työkalulla.
  2. Napsauta jäsenyysnumero-kohtaa Jäsenet-taulukossa.
  3. Napsauta viitenumeroa Elokuvavuokraukset-taulukossa.

Jäsenten ja Elokuvavuokraamon välisen suhteen luominen

Toista yllä olevat vaiheet muille suhteille. ER-kaaviosi pitäisi nyt näyttää tältä –

Valmis MyFlixin ER-kaavio

UKK

ER-kaaviossa on kolme ydinosaa: suorakulmiot, soikiomuotoiset attribuutit ja vinoneliöt. Alleviivatut attribuutit merkitsevät ensisijaisia ​​avaimia.

Yleisiä attribuuttityyppejä ovat yksinkertaiset (atomiset), yhdistelmäattribuutit (jaolliset), johdetut (lasketut), moniarvoiset (useita arvoja) ja avainattribuutit, jotka yksilöivät entiteetin.

Kardinaalisuus määrittää, kuinka monta esiintymää yhdestä entiteetistä liittyy toiseen: yksi-yhteen, yksi-moneen tai monta-moneen. Liitosentiteetti ratkaisee ei-tuetut monta-moneen-linkit.

Vahvalla entiteetillä on oma ensisijainen avaimensa ja se toimii itsenäisesti. Heikolla entiteetillä ei ole täydellistä avainta ja se on riippuvainen omistajaentiteetistä.

Variksenjalka-merkintä osoittaa kardinaalisuuden, ja viivanpäät muistuttavat linnunjalkaa. Piikit osoittavat monta sivua; palkit ja ympyrät osoittavat yhden ja valinnaisen.

ER-malli on kokonaisuuksien ja suhteiden korkean tason visuaalinen suunnitelma. Relaatiomalli toteuttaa sen taulukoina, riveinä, sarakkeina ja avaimina tietokannan hallintajärjestelmän sisällä.

Tekoälytyökalut muuttavat luonnollisen kielen kuvaukset ER-kaavioiksi, ehdottavat entiteettejä ja suhteita sekä luovat SQL-skeemoja. Suunnittelijat tarkistavat ja korjaavat tulosteen ennen sen käyttöönottoa.

Kyllä. GitHub Copilot ehdottaa entiteettejä, suhteita ja taulukkorakenteita ja luo SQL-koodin niiden rakentamiseksi. Se voi myös luonnostella kaavioita koodina, kuten Mermaid, joka renderöi ER-kaavioksi.

Tiivistä tämä viesti seuraavasti: