6-1-2010Wolter Kaper - Model-objecten en hun relaties in Ruby on Rails Webprogrammeren, week 1.

Slides:



Advertisements
Verwante presentaties
SQL deel 2: datamodel ontwerp
Advertisements

18. Vermogen, verhaal en faillissement
Internationaal privaatrecht, het EVO-verdrag en Rome II
16. Merk- en Modelrecht.
15. Octrooi- en auteursrecht
© 2008 Wolf Knab Websitearchitectuur,
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Databases Informatica Ga verder met een muisklik. SQL FCO DBMS NE FA
10. Ontslagrecht.
Verordening Brussel I Week 5.
Contract, AV, incoterms, E-commerce en Weens koopverdrag
6 november 2012Jaap Jongejan De loopbaancoach van 2020 Welke oplossing voor welk probleem?
Het selecteren van data uit meerdere gekoppelde tabellen
Business Intelligence: DATA MINING
<Mdl01 hoorcollege 1>
Opleiding AI cursus Databases
Presentatie Stage/Q Roel Grit Info/Q automatisering
13 Rechtsgevolgen van een overeenkomst
Persoonlijkheidspsychologie Sensatie en perceptie
Sociale & gezondheidspsychologie Persoonlijkheid
LauwersCollege Buitenpost Informatica
ontwerp een datamodel Criteria voor een goed model Ontwerppatronen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Inleidend probleem Data structuur (hiërarchie van classes)
Wolter Kaper - Ruby on Rails Webtoepassing ontwerpen Webprogrammeren, week 1.
Wolter Kaper - AJAX en Javascript via Rails Deel 1 en 2.
Vandaag: Ruby als taal Introductie “Vaardigheden”, I. Bethke Rails modellen: zoeken, bewaren Rails views: view helpers Wolter Kaper -
Workshop PHP Een productencatalogus Met database.
Onderhandelingen en l.o.i.
Agentuur- en distributie overeenkomst, vervoer en intellectuele eigendomsrechten Week 7.
Verdragen en inleiding Europees Recht
1 Inleiding Hoofdstuk 1.
Onrechtmatige daad Week 4.
11. Collectief arbeidsrecht en staking
9. Rechten en plichten bij een arbeidsovereenkomst
Databases.
Persoonlijkheidspsychologie
NSTE-ACS GL ESC Eduard van den Berg, cardio.nl.
© 2008 Wolf Knab Websitearchitectuur,
Omgaan met kinderen die een verlies hebben geleden Herma Bode
SQL ( SERVER ) Les #02: T-SQL. A GENDA Herhaling les 4 Views SELECT…INTO Beheren van tabellen: CREATE ALTER DROP Opdracht voor de volgende les.
Mijn partner heeft Q-koorts, wat nu?
LauwersCollege Buitenpost Informatica
2 Ongevallen…..een risico?
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
Hoofdstuk 11 Databasemanagementsystem. hoofdstuk 112 STROKENDIAGRAMMEN llnrvoornaamtussenvachternaamstraathuisnummerpostcodeplaatstelefoongeslachtgebdatumklas.
Analyse 3 INFANL01-3 week 3 CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 2 CMI Informatica.
Week 6 BIMAIV03 les B1. DML en DDL ata D anipulation M anguage L ata D efinition D anguage L.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Java & het Web Programma: Databases (jdbc, JNDI, ORM, JPA)
1 KPN Mobiel – Introductie Repository Object Browser & Designer 10 Designer 10g & Repository Object Browser Maandag 28 februari 2005 Lucas Jellema (AMIS)
EERDER….. Tabellen rij (record, tuple, occurence) kolom (attribuut, veld) tabel (relatie) tabelstructuur : patient(PAT#,PNAAM,LEEFTIJD,GESLACHT,ARTS)
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
HET NIEUWE COINS CORE MODEL Peter Willems. HET NIEUWE COINS CORE MODEL 2 | Het nieuwe COINS core model Highlights Back to basics Meer gebruik van OWL.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Windows applicatieontwikkeling
Databases.
SQL Cursus deel
LauwersCollege Buitenpost Informatica
ASP.NET MVC Web Development
Databases.
SQL Les February 2019.
ASP.NET MVC Web Development
SQL Les 3 17 February 2019.
ASP.NET MVC Web Development
SQL Les 7 24 February 2019.
Transcript van de presentatie:

Wolter Kaper - Model-objecten en hun relaties in Ruby on Rails Webprogrammeren, week 1

Vandaag Domein model ontwerpen (UML)  Op papier >> rapport Views ontwerpen  Schetsjes Associaties realiseren in RoR  Model objecten  Database tabellen  Views: een klikmodel Wolter Kaper -

Wolter Kaper - Lagen in een applicatie User Interface Laag Domein Model, Modellen Laag Database Laag Gebruiker

Wolter Kaper - Domein model Bedrijf WerknemerTeam * 1..* * Aandeelhouder 1 1..* Persoon is een heeft bevat

Wolter Kaper - Wat is een domein model? Ontwerp voor een set object klassen Overeenkomst met buitenwereld Relaties zijn aangegeven  “is een” relaties: erfelijkheid  “heeft” relaties  “bevat” relaties (existentie afhankelijk) Datavelden Methoden

Wolter Kaper - Lagen in een applicatie User Interface Laag Domein Model, Modellen Laag Database Laag Gebruiker

Wolter Kaper - Lagen volgens MVC + ORM Gebruiker + browser ViewController Model object URL actie Database tabel

Wolter Kaper - Doel voor vrijdagmiddag: Domein model op papier:  Welke objectklassen, relaties ertussen,  Datavelden en methoden (hoeft niet compleet) Implementeren in Rails als “snel prototype”  Schermbeelden hangen zinnig samen met objecten,  Kliks brengen je van het ene naar het andere scherm,  Basisdingen – new, index, edit,… - werken.

Wolter Kaper - Relaties en hoe je ze realiseert In Ruby on Rails

Eén naar meer relatie Wolter Kaper - AB 0..1 * AB *

Wolter Kaper - “Een naar meer” relatie: in de database idadresbouwjaar 1Lodewijk laan Braambos Kennedy laan idnaamhuis- nummer flatgebouw _id 1Jansen3051 2Pietersen3061 3Klaassen252NULL flatgebouwsbewoners primaire sleutelverwijzende sleutel flatgebouw: references

Wolter Kaper - “Eén naar meer” relatie: in model klassen class Flatgebouw has_many :bewoners... end class Bewoner belongs_to :flatgebouw... end

Wolter Kaper - Ruby on Rails ORM regels Elke tabel een “id” kolom (autonummering) Tabelnaam: engels meervoud van object klassenaam Verwijzende sleutel: objectklasse waarnaar wordt verwezen + “_id” In objectklassen: has_many, has_one, belongs_to

Eén naar meer: schermontwerp Wolter Kaper - Flatgebouwen editdel editdel new Flatgebouw Adres Bouwjaar Bewoners new editdel editdel update Bewoner Naam Huisnummer Flatgebouw Finkelstein  update

Eén naar meer “bevat” (“contains”) Wolter Kaper - AB 1 *

Wolter Kaper - “Een naar meer” “bevat” relatie in de database idnaam 1Philips 2Shell 3Albert Heyn idnaambedrijf_id 1Gloeilampen1 2Electronica1 3Aardolieproducten2 bedrijfsdivisies primaire sleutelverwijzende sleutel

Wolter Kaper - “Eén naar meer” “bevat” relatie in de model klassen class Bedrijf has_many :divisies, \ :dependent => :destroy... end class Divisie belongs_to :bedrijf... end

“Eén naar meer” “bevat” relatie: URL routering GET /bedrijfs/1 GET /divisies/2…. …óf: GET /bedrijfs/1/divisies/2 map.resources :bedrijfs map.resources :divisies …. …óf: map.resources :bedrijfs, :has_many=>:divisies Wolter Kaper - bedrijfs_ididparams[…]in divisies_controller

“Meer naar meer” Wolter Kaper - AB * * AB 1 * A_B * 1

Wolter Kaper - “Meer naar meer”: database idtiteljaar 1Turks fruit1972 2Werkkleding1984 3Max Havelaar1880 4Proceedings of the 23th conference on fluorescence 2001 idachternaaminitialen 1WolkersJ. 2Douwes-DekkerE. 3JonesK. 4ButterworthL.F. boeksauteurs

Wolter Kaper - Oplossing: extra tabel boek_idauteur_id boekauteurs

Wolter Kaper - “Meer naar meer” relatie in de model klassen class Boek has_many :boekauteurs has_many :auteurs, \ :through => :boekauteurs... end class Auteur has_many :boekauteurs has_many :boeks, \ :through => :boekauteurs... end Notitie: “\” dient om een statement te verdelen over meerdere regels. Wellicht heb je hem hier niet nodig! Class Boekauteur belongs_to :boek belongs_to :auteur … end

Wolter Kaper - “Meer naar meer” relatie in de model klassen class Boek has_many :boeks_auteurs, \ :dependent => :destroy has_many :auteurs, \ :through => :boeks_auteurs... end class Auteur has_many :boeks_auteurs, \ :dependent => :destroy has_many :boeks, \ :through => :boeks_auteurs... end Class Boekauteur belongs_to :boek belongs_to :auteur … end

“Is een” relatie Wolter Kaper - Persoon Werknemer Aandeelhouder

Wolter Kaper - “is een” relatie – erfelijkheid in de database Single Table Inheritance Multiple Table Inheritance

Wolter Kaper - Single Table Inheritance Persoon naam Werknemer salaris Aandeelhouder kapitaal Modellen laag... Database laag... Persoons type naam salaris kapitaal

Wolter Kaper - Single Table Inheritance class Persoon < ActiveRecord::Base... end class Werknemer < Persoon... end class Aandeelhouder < Persoon... end

Wolter Kaper - Single table inheritance Subklassen worden in één tabel opgeslagen Tabel krijgt naam van de hoofdklasse (in meervoud) Kolom “type” geeft subklasse aan Veel cellen blijven leeg (null)

Wolter Kaper - Multiple Table Inheritance Persoon naam Werknemer salaris Aandeelhouder kapitaal Modellen laag... Database laag... Werknemer id naam salaris Aandeelhouder id naam kapitaal

Wolter Kaper - Multiple Table Inheritance class Persoon < ActiveRecord::Base self.abstract = true... end class Werknemer < Persoon... end class Aandeelhouder < Persoon... end

Wolter Kaper - Single of Multiple Table? Single Als je met één query objecten van diverse subtypen wilt ophalen Als je de subtypen zonder onderscheid wilt kunnen behandelen Multiple Als de subtypen veel verschillende kolommen hebben

Wolter Kaper - Gegevenstypen MySQL kolomtypenRails kolomtypenRuby variabelen TINYINT(1):booleanTrueclass / Falseclass DATE:dateDate DATETIME:datetimeTime DECIMAL:decimalBigDecimal / Integer FLOAT:floatFloat INT:integerFixnum VARCHAR(255):stringString TEXT:textString :references

Wolter Kaper - Voorbeeldjes “snel prototype” één-naar-meer:  Blog tutorial – rails site – ken je al meer-naar-meer  is-een 

Wolter Kaper - Doel voor vrijdagmiddag: Domein model op papier:  Welke objectklassen, relaties ertussen,  Datavelden en methoden (hoeft niet compleet) Implementeren in Rails als “snel prototype”  Schermbeelden hangen zinnig samen met objecten,  Kliks brengen je van het ene naar het andere scherm,  Basisdingen – new, index, edit,… - werken.