home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / Chip_2004-04_cd1.bin / chplus / interval / clanek04.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-02-01  |  25.9 KB  |  244 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='0' />
  10. <meta name='robots' content='index, follow' />
  11. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  12. <meta name='keywords' content='Interval' />
  13. <meta http-equiv='imagetoolbar' content='no' />
  14. <meta http-equiv='MSThemeCompatible' content='no' />
  15. <meta name='MSSmartTagsPreventParsing' content='true' />
  16. <title>Interval.cz - denn∞ o tvorb∞ webu a e-komerci</title>
  17. <style media='all' type='text/css'>
  18. @import '__services/styles/interval_articles.css';
  19. </style>
  20. </head>
  21. <body class='interval interval-articles'>
  22. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  23. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  24. <div id='page-body'><div id='page-left'><div id='article'>
  25.  
  26.  
  27.  
  28. <h2>WebML - datovΘ modelovßnφ</h2>
  29. <p id='prepend'>DatovΘ modelovßnφ p°edstavuje jednu ze zßkladnφch souΦßstφ anal²zy ka₧dΘho softwarovΘho projektu, tedy i projektu, jeho₧ cφlem je vytvo°it internetovou aplikaci. Sprßvn² nßvrh datovΘ struktury m∙₧e do znaΦnΘ mφry ovlivnit bezporuchovost, udr₧ovatelnost a rozÜi°itelnost v²slednΘ aplikace. Jak se s touto problematikou vypo°ßdala metodologie WebML, se dozvφte v nßsledujφcφm Φlßnku.</p>
  30.  
  31.  
  32. <h3>┌vod do datovΘho modelovßnφ</h3>
  33. <p>Cφlem datovΘho modelovßnφ je navrhnout kvalitnφ datovou strukturu pro konkrΘtnφ aplikaci a databßzov² systΘm, kter² bude tato aplikace vyu₧φvat k ulo₧enφ dat.</p> 
  34. <p>P°i datovΘm modelovßnφ obvykle vytvß°φme nejprve <strong>konceptußlnφ datov² model</strong>. Konceptußlnφ datov² model p°edstavuje urΦitΘ zobecn∞nφ oproti konkrΘtnφ implementaci datovΘ struktury v relaΦnφ, objektovΘ, p°φpadn∞ nativnφ XML databßzi. Zobecn∞nφm zφskßme nezßvislost modelu na konkrΘtnφm databßzovΘm systΘmu, ale zßrove≥ jsme schopni tento model kdykoliv p°evΘst do konkrΘtnφho implementaΦnφho prost°edφ.</p>
  35. <p>Pokud bychom od zaΦßtku anal²zy "Üili" datovou strukturu na mφru nap°φklad databßzovΘmu systΘmu MySQL a pozd∞ji zjistili, ₧e zßkaznφk hodlß p°ejφt na Oracle nebo dokonce na n∞jakou XML databßzi, museli bychom pravd∞podobn∞ cel² nßvrh opakovat. Vhodn∞jÜφ je tedy vytvo°it nejprve obecn∞jÜφ konceptußlnφ datov² model a teprve na jeho zßklad∞ ve fßzi implementace navrhnout datovou strukturu pro konkrΘtnφ databßzov² systΘm. Pokud pou₧φvßme n∞jak² CASE nßstroj, mßme tΘm∞° v₧dy mo₧nost nechat si z p°φsluÜnΘho modelu databßzovou strukturu automaticky vygenerovat (nap°φklad ve form∞ SQL skript∙).</p>
  36. <p>Pokr²t problematiku datovΘho modelovßnφ v jednom Φlßnku p°edstavuje vzhledem k rozsahu a obtφ₧nosti tΘmatiky zcela nemo₧n² ·kol. Proto je cφlem tohoto Φlßnku pouze ukßzat, jak k datovΘmu modelovßnφ p°istupuje metodologie WebML.</p>
  37.  
  38. <h3>Datov² model WebML</h3>
  39. <p>Datov² model WebML slou₧φ pro nßvrh datovΘ struktury, kterß reprezentuje informace zpracovßvanΘ a prezentovanΘ v internetovΘ aplikaci. Jednß se o konceptußlnφ model, kter² je velice podobn² klasick²m ER diagram∙m pou₧φvan²m pro nßvrh struktury relaΦnφch databßzφ nebo UML Class diagram∙m pou₧φvan²ch v objektovΘ anal²ze a nßvrhu.</p> 
  40. <p><strong>Model je tvo°en sadou entit, kterΘ jsou mezi sebou provßzßny pomocφ vazeb s p°φsluÜnou kardinalitou (nßsobnostφ).</strong></p> 
  41.  
  42. <h3>Entity</h3>
  43. <p>Entita reprezentuje urΦitou skupinu objekt∙ reßlnΘho sv∞ta, kterΘ se oznaΦujφ jako <strong>instance entity</strong>. VÜechny instance danΘ entity se naz²vajφ <strong>populacφ</strong> a vyznaΦujφ se stejnou vnit°nφ datovou strukturou, kterß se vyjad°uje mno₧inou <strong>atribut∙</strong>. Pouhß shoda atribut∙ ale samoz°ejm∞ nestaΦφ, vÜechny instance danΘ entity musφ mφt i logickou souvislost. Typickou entitou m∙₧e b²t nap°φklad entita "zßkaznφk" a instancemi tΘto entity mohou b²t nap°φklad "Jan Novßk", "Petra ╚echovß" a dalÜφ. Entitou samoz°ejm∞ nemusφ b²t jen n∞jakΘ reßlnΘ fyzickΘ objekty (zbo₧φ, zßkaznφk), ale m∙₧e se jednat i o objekty  abstraktnφ  (kategorie zbo₧φ, objednßvka a podobn∞).</p> 
  44. <p>Ka₧dß entita je popsßna sv²m nßzvem a sadou atribut∙. Nap°φklad entita zbo₧φ bude mφt pravd∞podobn∞ atributy (k≤d, nßzev, popis, cena, zßruka a dalÜφ). Ka₧d² z t∞chto atribut∙ mß samoz°ejm∞ p°i°azen i <strong>datov² typ</strong>. WebML definuje nßsledujφcφ obecnΘ datovΘ typy:</p>
  45.  
  46. <div class='list'>
  47. <ul>
  48. <li>Integer</li>
  49. <li>Float</li>
  50. <li>String</li>
  51. <li>Text</li>
  52. <li>Date</li>
  53. <li>Time</li>
  54. <li>Boolean</li>
  55. <li>Blob</li>
  56. </ul>
  57. </div>
  58.  
  59. <p>Tyto datovΘ typy jsou navr₧eny tak, aby nebyly p°φmo zßvislΘ na konkrΘtnφm databßzovΘm systΘmu. Jde o zßkladnφ datovΘ typy, se kter²mi se pravd∞podobn∞ setkßme ve v∞tÜin∞ databßzov²ch systΘm∙. P°i generovßnφ konkrΘtnφ databßzovΘ struktury z navr₧enΘho modelu jsou tyto datovΘ typy nahrazeny p°φsluÜn²mi ekvivalenty konkrΘtnφho databßzovΘho systΘmu. Nap°φklad "string" m∙₧e b²t implementovßn jako "char(n)" nebo "varchar(n)". WebML navφc nabφzφ mo₧nost jednoduÜe definovat vlastnφ datovΘ typy.</p> 
  60. <p>Pokud pou₧φvßme CASE nßstroj WebRatio, bude ke ka₧dΘ entit∞ automaticky generovßn atribut s nßzvem <strong>OID</strong> (object identification). Jednß se o p°irozenΘ Φφslo, kterΘ jednoznaΦn∞ identifikuje vÜechny instance danΘ entity. P°i generovßnφ konkrΘtnφ databßzovΘ struktury bude OID nahrazeno zp∙sobem, kter² odpovφdß danΘmu typu databßze. V relaΦnφch databßzφch to bude primßrnφ klφΦ.</p>
  61. <p>Grafickß notace pro entity ve WebML nikterak nevyboΦuje ze za₧it²ch zp∙sob∙. Entitu zobrazujeme pomocφ obdΘlnφku, ve kterΘm jsou vepsßny nßzev a pod Φarou atributy (viz obrßzek Φ. 1).</p>
  62.  
  63. <div class='image'>
  64. <img src='podklady/zelenka/723/ent_zbozi.png' alt='entita zbozi' title='entita zbozi' />
  65. <br /><span class='comment'>Obrßzek Φ. 1 û p°φklad entity "zbozi"</span>
  66. </div>
  67.  
  68. <p>Jak bylo uvedeno v p°edchozφm Φlßnku, <strong>vÜechny modely WebML jsou intern∞ uklßdßny ve formßtu XML</strong>. Nßsledujφcφ v²pis p°edstavuje XML zßpis pro entitu "zbozi":</p>
  69.  
  70. <div class='sample'>
  71. <ENTITY id="zbozi">
  72. <br /><ATTRIBUTE id="kod" type="String"/>
  73. <br /><ATTRIBUTE id="nazev" type="String"/>
  74. <br /><ATTRIBUTE id="popis" type="Text"/>
  75. <br /><ATTRIBUTE id="cena" type="Float"/>
  76. <br /><ATTRIBUTE id="zaruka" type="Integer"/>
  77. <br /><ATTRIBUTE id="novnika" type="Boolean"/>
  78. <br /></ENTITY>
  79. </div>
  80.  
  81. <h3>Vazby mezi entitami, kardinalita</h3>
  82. <p>Vazba mezi entitami p°edstavuje <strong>logick² vztah mezi entitami</strong>. V datovΘm modelu WebML jsou povoleny pouze vazby mezi dv∞ma entitami (binßrnφ vazby). Vychßzφ se z mo₧nosti realizovat jakoukoliv N-ßrnφ vazbu (mezi N entitami) pomocφ N vazeb binßrnφch a jednΘ centrßlnφ (vazebnφ) entity.</p>
  83. <p>Stejn∞ jako entita mß svΘ instance, takΘ binßrnφ vazba mß svΘ instance. Pokud je binßrnφ vazba definovßna jako logick² vztah mezi dv∞ma entitami, potom je instance binßrnφ vazby vztah mezi dv∞ma instancemi dvou entit. Nap°φklad vazba mezi entitou zbo₧φ a kategorie, m∙₧e mφt instanci "st∙l od firmy xy pat°φ do kategorie kuchy≥skΘ stoly".</p> 
  84. <p>Na vazbu m∙₧eme pohlφ₧et jako na dv∞ vazby v opaΦn²ch sm∞rech. V tomto smyslu se hovo°φ o takzvan²ch <strong>rolφch</strong>, kterΘ p°edstavujφ pohled na danou vazbu ve sm∞ru od jednΘ entity ke druhΘ. Nap°φklad na vazbu mezi kategoriφ zbo₧φ a zbo₧φm m∙₧eme pohlφ₧et tak, ₧e se ptßme, do jakΘ kategorie danß polo₧ka zbo₧φ pat°φ, nebo tak, ₧e se ptßme, jakΘ zbo₧φ pat°φ do p°φsluÜnΘ kategorie.</p> 
  85. <p>Ke ka₧dΘ z rolφ p°i°azujeme takzvanou <strong>kardinalitu</strong>. Kardinalita p°edstavuje omezenφ v poΦtu instancφ druhΘ entity, kterΘ majφ vztah s jakoukoliv instancφ prvnφ entity. Definuje se v₧dy <strong>maximßlnφ a minimßlnφ kardinalita</strong>. Minimßlnφ kardinalita m∙₧e nab²vat hodnot 0 nebo 1 a maximßlnφ kardinalita 1 nebo N. K osv∞tlenφ problematiky vazeb a kardinality by mohl pomoci obrßzek Φ. 2.</p>
  86.  
  87. <div class='image'>
  88. <img src='podklady/zelenka/723/vazby.png' alt='binarni relace' title='binarni relace' />
  89. <br /><span class='comment'>Obrßzek Φ. 2 û p°φklad binßrnφ vazby</span>
  90. </div>
  91.  
  92. <p>Na obrßzku Φ. 2 m∙₧eme vid∞t vazbu pojmenovanou "zbozi_kategorie", kterß vyjad°uje vztah mezi zbo₧φm a kategoriφ. Vazbu charakterizujφ dv∞ role podle toho, kter²m sm∞rem ji Φteme. K rolφm jsou p°i°azeny kardinality. Pokud vazbu Φteme sm∞rem od zbo₧φ ke kategorii (role: zbozi na  kategorii), zajφmß nßs, v kolika kategoriφch m∙₧e b²t zbo₧φ ulo₧eno. Kardinalita "1,1" znamenß, ₧e zbo₧φ m∙₧e b²t ulo₧eno v jednΘ a prßv∞ jednΘ kategorii. Pokud vztah Φteme z druhΘ strany (role: kategorie_na_zbozi), zajφmß nßs, kolik druh∙ zbo₧φ m∙₧e b²t v jednΘ kategorii. Kardinalita "0,N" znamenß, ₧e kategorie m∙₧e b²t prßzdnß nebo obsahuje N druh∙ zbo₧φ (teoreticky nekoneΦno).</p> 
  93. <p><span class='note-author'>Pozn. aut.: èipky v obrßzku pouze zd∙raz≥ujφ sm∞r, ve kterΘm se vztah Φte ve spojenφ s danou rolφ a kardinalitou. Sm∞r je zde zd∙razn∞n p°edevÜφm z toho d∙vodu, ₧e kardinalita v datovΘm modelu WebML je p°ipisovßna k entitßm <strong>v opaΦnΘm sm∞ru ne₧ je obvyklΘ v klasick²ch ER diagramech</strong>. Role ani nßzvy vazeb se do modelu nezakreslujφ, jsou ovÜem nedφlnou souΦßstφ modelu.</span></p>
  94. <p>P°i generovßnφ struktury databßze z modelu WebML do n∞jakΘ relaΦnφ databßze, odpovφdß ka₧dΘ entit∞ jedna relaΦnφ tabulka. V datovΘm modelu WebML se <em>nedefinujφ explicitn∞</em> atributy, kterΘ v relaΦnφch databßzφch oznaΦujeme jako <strong>cizφ klφΦe</strong>. Pokud bychom v relaΦnφ databßzi cht∞li implementovat schΘma z obrßzku Φ. 2, museli bychom k tabulce zbo₧φ p°idat atribut id kategorie, kter² by nßm zajistil provßzßnφ tabulek zbo₧φ a kategorie. V modelu WebML ovÜem ₧ßdnΘ klφΦe nedefinujeme z d∙vodu nezßvislosti na konkrΘtnφm databßzovΘm systΘmu. Cizφ klφΦ toti₧ nenφ z hlediska konceptußlnφho modelu logickou souΦßstφ entity zbo₧φ, ale je definovßn pomocφ vazby, jejφ₧ implementace se m∙₧e v r∙zn²ch databßzov²ch systΘmech liÜit. Pokud se ale rozhodneme, ₧e v naÜφ aplikaci pou₧ijeme relaΦnφ databßzi, budou z modelu p°i generovßnφ datovΘ struktury automaticky vygenerovßny i atributy cizφch klφΦ∙. P°i vyskytnutφ vztahu "1,N : 1,N" (jedna instance prvnφ entity mß vztah s vφce instancemi druhΘ entity a naopak ) se automaticky generuje vazebnφ tabulka, kterß se bude sklßdat ze dvou cizφch klφΦ∙.</p>
  95. <p>Rovn∞₧ vazby mezi entitami jsou uklßdßny ve formßtu XML. Zßpis pro entitu zbo₧φ by po rozÜφ°enφ naÜeho p°φkladu o vazbu na kategorii zbo₧φ vypadal nßsledovn∞:</p>
  96.  
  97. <div class='sample'>
  98. <ENTITY id="zbozi">
  99. <br /><ATTRIBUTE id="kod" type="String"/>
  100. <br /><ATTRIBUTE id="nazev" type="String"/>
  101. <br /><ATTRIBUTE id="popis" type="Text"/>
  102. <br /><ATTRIBUTE id="cena" type="Float"/>
  103. <br /><ATTRIBUTE id="zaruka" type="Integer"/>
  104. <br /><ATTRIBUTE id="novnika" type="Boolean"/>
  105. <br /><RELATIONSHIP id="zbozi_na_kategorii" to="kategorie" inverse="kategorie_na_zbozi" minCard="1" maxCard="1"/>
  106. <br /></ENTITY>
  107. </div>
  108.  
  109. <h3>Generalizace mezi entitami</h3>
  110. <p>Datov² model WebML umo₧≥uje sestavovat <strong>hierarchie entit</strong>, takzvanΘ IûSA hierarchie. Znamenß to, ₧e nad°azenß entita (super-entity) m∙₧e mφt svΘ pod°azenΘ entity (sub-entities). Pod°azenß entita p°edstavuje specißlnφ p°φpad nad°azenΘ entity, d∞dφ od nφ vÜechny atributy a m∙₧e k nim p°idat svΘ specifickΘ atributy. Hierarchie m∙₧e mφt vφce ·rovnφ. Ka₧dß pod°φzenß entita nesmφ mφt vφc jak jednu nad°φzenou entitu. Jednoduch² p°φklad generalizace viz obrßzek Φ. 3:</p>
  111.  
  112. <div class='image'>
  113. <img src='podklady/zelenka/723/generalizace.png' alt='generalizace' title='generalizace' />
  114. <br /><span class='comment'>Obrßzek Φ. 3 û jednoduch² p°φklad generalizace</span>
  115. </div>
  116.  
  117. <h3>StrukturovanΘ atributy</h3>
  118. <p>P°i Φtenφ tohoto Φlßnku jist∞ ji₧ n∞koho napadlo, jak se datov² model WebML vypo°ßdß se strukturovan²mi datov²mi typy a s <strong>kolekcemi strukturovan²ch datov²ch typ∙</strong>. V praxi to znamenß p°φpad, kdy mß entita atribut nebo kolekci atribut∙, kterΘ nejsou tvo°eny jen atomickou hodnotou, ale majφ takΘ svou vnit°nφ strukturu. Kdo znß diagram t°φd (Class diagram) z UML, jist∞ vφ, ₧e v tomto p°φpad∞ se pou₧ije operace sklßdßnφ p°φpadn∞ kompozice, kdy se jeden objekt nebo celß kolekce objekt∙ stßvß souΦßstφ (vlastnostφ) jinΘho objektu.</p>
  119. <p>WebML se s touto problematikou vypo°ßdal pomocφ takzvan²ch <strong>slab²ch entit</strong> (weak entities). Princip spoΦφvß v tom, ₧e se k hlavnφ entit∞ vytvo°φ entita, kterß nem∙₧e existovat, ani₧ by existovala hlavnφ entita. Tato entita se propojφ s hlavnφ entitou pomocφ vazby s pot°ebnou kardinalitou.</p> 
  120. <p>Klasick²m p°φkladem m∙₧e b²t situace, kdy k jednΘ osob∞ sledujeme vφce kontaktnφch adres. Pokud bychom pou₧ili UML, pravd∞podobn∞ bychom vytvo°ili t°φdu adresa a t°φdu osoba. T°φda osoba by pak jako jeden ze sv²ch atribut∙ m∞la kolekci p°φsluÜn²ch adres (pou₧ili bychom sklßdßnφ). Ve WebML vytvo°φme nßsledujφcφ strukturu:</p>
  121.  
  122. <div class='image'>
  123. <img src='podklady/zelenka/723/strukt_typ.png' alt='strukturovanΘ atributy' title='strukturovanΘ atributy' />
  124. <br /><span class='comment'>Obrßzek Φ. 4 û realizace strukturovanΘho datovΘho typu</span>
  125. </div>
  126.  
  127. <h3>P°φklad nßvrhu datovΘho modelu WebML</h3>
  128. <p>Jako shrnutφ p°edeÜlΘho textu zde bude uveden p°φklad nßvrhu datovΘ struktury elektronickΘho obchodu. Tento p°φklad bude velice jednoduch² a ne·pln² a m∞l by slou₧it p°edevÜφm k objasn∞nφ toho, jak se vytvß°φ datov² model ve WebML a ne jako obecn² nßvod pro tvorbu datovΘ struktury elektronickΘho obchodu.</p> 
  129. <p>JakΘ entity se budou vyskytovat v naÜem systΘmu, musφme zjistit ve <strong>fßzi specifikace a sb∞ru funkΦnφch po₧adavk∙ na aplikaci</strong>. Tato fßze je nedφlnou a velice d∙le₧itou souΦßstφ vÜech metodologiφ anal²zy a nßvrhu SW. Rovn∞₧ WebML ji definuje jako ·vodnφ fßzi celΘho procesu v²voje internetovΘ aplikace. Na zßklad∞ rozhovor∙, konzultacφ se zßkaznφkem a vlastnφch zkuÜenostφ sestavφme seznam vÜech mo₧n²ch entit, kterΘ v aplikaci p°edpoklßdßme, a postupem Φasu tento seznam upravujeme (n∞kterΘ entity p°idßvßme, n∞kterΘ ruÜφme). K jednotliv²m entitßm postupn∞ p°idßvßme identifikovanΘ atributy a vazby, a₧ vznikne v²sledn² datov² model.</p>
  130. <p>Budeme p°edpoklßdat, ₧e prodßvßme zbo₧φ, kterΘ je organizovßno do kategoriφ. Kategorie jsou uspo°ßdßny v hierarchii. Zbo₧φ si objednßvß jen ten zßkaznφk, kter² se zaregistroval. Ke ka₧dΘmu typu zbo₧φ se m∙₧e diskutovat v jednoduchΘm diskusnφm f≤ru. U zbo₧φ sledujeme k≤d, nßzev, cenu, sazbu DPH, popis a libovolnΘ mno₧stvφ obrßzk∙. Konceptußlnφ datov² model by mohl vypadat nßsledovn∞:</p>
  131.  
  132. <div class='image'>
  133. <img src='podklady/zelenka/723/model.png' alt='datov² model elektronickΘho obchodu' title='datov² model elektronickΘho obchodu' />
  134. <br /><span class='comment'>Obrßzek Φ. 5 û v²sek datovΘ struktury elektronickΘho obchodu</span>
  135. </div>
  136.  
  137. <p>Zßkaznφk m∙₧e vytvo°it 0 a₧ N objednßvek. Ka₧dß objednßvka se sklßdß z jednΘ a₧ N polo₧ek, kterΘ jsou provßzßny s urΦit²m druhem zbo₧φ a udßvajφ, kolik kus∙ danΘho zbo₧φ se objednßvß a za jakou cenu (ceny se v Φase m∞nφ). Specißlnφ typ zßkaznφka p°edstavuje prßvnickß osoba, u kterΘ navφc sledujeme I╚O a DI╚. Zbo₧φ pat°φ v₧dy do jednΘ kategorie. Kategorie m∙₧e a nemusφ mφt podkategorie. Byla zde pou₧ita vazba entity na sebe samu. (Tφmto zp∙sobem se obvykle modeluje hierarchie.) Ke ka₧dΘmu zbo₧φ dßle uklßdßme diskusnφ p°φsp∞vky, kterΘ jsou op∞t organizovßny hierarchicky. V databßzi budeme mφt k dispozici takΘ Φφselnφk DPH. Ke ka₧dΘmu zbo₧φ m∙₧eme uklßdat libovolnΘ mno₧stvφ fotografiφ. (Zodpov∞d∞t otßzku, zda je vhodnΘ uklßdat fotografie jako Blob polo₧ku, nenφ cφlem tohoto Φlßnku.) Datovß struktura nenφ ·plnß a pou₧ity byly pouze zßkladnφ atributy. V reßlu bychom datovou strukturu up°esnili podle po₧adavk∙ zßkaznφka.</p>
  138. <p>Z modelu m∙₧eme pomocφ CASE nßstroje vygenerovat datovou strukturu podle pot°eby pro konkrΘtnφ databßzov² systΘm. Pro libovolnou relaΦnφ databßzi by byla ke ka₧dΘ entit∞ automaticky vygenerovßna relaΦnφ tabulka s p°φsluÜn²mi atributy. Tabulky by byly dßle dopln∞ny o primßrnφ a cizφ klφΦe podle stanovenΘ jmennΘ konvence.</p>
  139.  
  140. <h3>Derivation model: WebML - OQL</h3>
  141. <p>Jako dopln∞nφ datovΘho modelu WebML se vytvß°φ takzvan² <strong>Derivation model</strong> (vhodn² Φesk² nßzev se mi nepoda°ilo nalΘzt). Hlavnφm cφlem tohoto modelu je:</p>
  142.  
  143. <div class='list'>
  144. <ul>
  145. <li>rozÜφ°it entity o tzv. dopoΦitatelnΘ atributy, kterΘ nejsou explicitn∞ uklßdßny v databßzi</li>
  146. <li>odvodit novΘ entity a vztahy od ji₧ existujφcφch entit a vztah∙</li>
  147. </ul>
  148. </div>
  149.  
  150. <p>K tomuto ·Φelu slou₧φ pom∞rn∞ jednoduch² dotazovacφ jazyk <strong>WebML û OQL</strong>. Kdo znß alternativu k SQL v objektov²ch databßzφch - OQL, nebude tφmto jazykem v∙bec zaskoΦen. V²hodu OQL p°edstavuje jednoduchß transformace nap°φklad prßv∞ do jazyka SQL. P°i odvozovßnφ vytvß°φme takzvanΘ odvozovacφ dotazy. Pokud pou₧ijeme CASE nßstroj WebRatio, mßme k dispozici pomocnφka, tak₧e OQL nemusφme um∞t.</p> 
  151. <p>Princip derivation modelu se velice podobß <strong>vytvß°enφ pohled∙</strong> (views) v relaΦnφch databßzφch. Vytvß°φme r∙znΘ pohledy na datovou strukturu odvozenφm od struktury, kterß je explicitn∞ ulo₧ena v databßzovΘm systΘmu. V podstat∞ datovou strukturu rozÜi°ujeme bezpeΦn²m zp∙sobem o redundantnφ data. JednotlivΘ dotazy OQL jsou p°φmo p°evoditelnΘ jako pohled nap°φklad do databßzovΘho systΘmu Oracle.</p>
  152. <p>Odvozovßnφ probφhß ve t°ech oblastech:</p>
  153.  
  154. <div class='list'>
  155. <ul>
  156. <li><em>Odvozovßnφ atribut∙</em> û typick²m p°φkladem m∙₧e b²t dopln∞nφ entity objednßvka o atribut "celkovß cena objednßvky", kter² se vypoΦte jako suma souΦin∙ poΦtu a ceny zbo₧φ ze vÜech polo₧ek objednßvky.</li>
  157. <li><em>Odvozovßnφ entit</em> û jednß se o pohledy na entitu, kdy vybφrßme pouze ty instance danΘ entity, kterΘ vyhovujφ urΦitΘ podmφnce. P°φkladem m∙₧e b²t pohled na entitu "zßkaznφk", kdy nßs zajφmajφ pouze zßkaznφci, kte°φ majφ sumu objednßvek v∞tÜφ ne₧ urΦitou Φßstku. Jin² p°φklad odvozenΘ entity m∙₧e b²t takΘ nejprodßvan∞jÜφ zbo₧φ v e-shopu.</li> 
  158. <li><em>Odvozovßnφ vazeb</em> û p°i odvozovßnφ vazeb se m∙₧e spojit vφce existujφcφch vazeb do vazby jednΘ, nebo m∙₧eme vazby n∞jak²m zp∙sobem omezit. P°φkladem spojenφ vazeb m∙₧e b²t vazba mezi polo₧kou objednßvky a kategoriφ zbo₧φ, kterß se odvodφ z vazby mezi polo₧kou objednßvky a zbo₧φm a z vazby mezi zbo₧φm a kategoriφ zbo₧φ. Omezenφm vazby m∙₧e vzniknout nap°φklad vazba mezi kategoriφ zbo₧φ a nejprodßvan∞jÜφmi v²robky v kategorii.</li> 
  159. </ul>
  160. </div>
  161.  
  162. <h3>Zßv∞r</h3>
  163. <p>DatovΘ modelovßnφ v metodologii WebML se velice podobß konceptußlnφmu modelovßnφ pomocφ ER diagram∙ nebo Class diagram∙. P°esto se zde nachßzejφ urΦitΘ rozdφly, kterΘ by mohly n∞komu vadit (mn∞ osobn∞ nejvφce vadφ opaΦnΘ zapisovßnφ kardinalit k entitßm oproti ERD nebo Class diagram∙m). Krom∞ derivaΦnφho modelu a jazyka WebML-OQL nep°inßÜφ WebML v podstat∞ nic novΘho. Datov² model WebML ovÜem p°edstavuje zßklad pro tvorbu <strong>hypertextovΘho modelu</strong>, kter² ji₧ v klasick²ch metodologiφch obdobu nemß. S hypertextov²m modelem a se zp∙sobem, jak je propojen s datov²m modelem, se seznßmφme v n∞kterΘm z dalÜφch Φlßnk∙.</p>
  164.  
  165. <div class='list'>
  166. <h3>DalÜφ zdroje</h3>
  167. <ul>
  168. <li><a href='http://www.webml.org'>domovskß strßnka projektu WebML</a></li>
  169. <li><a href='http://www.webratio.com'>domovskß strßnka projektu WebRatio</a></li>
  170. <li><a href='http://www.csc.lsu.edu/~chen/chen.html'>domovskß strßnka autora konceptußlnφho modelovßnφ pomocφ ER diagram∙</a></li>
  171. <li><a href='http://www.rational.com'>informace o UML</a></li>
  172. </ul>
  173. <h3>P°edchozφ Φlßnky</h3>
  174. <ul>
  175. <li><a href='http://interval.cz/clanek.asp?article=2893'>WebML - projektovßnφ webov²ch aplikacφ</a></li>
  176. </ul>
  177. </div>
  178.  
  179.  
  180.  
  181. <div id='article-author'>
  182. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=216'>Zelenka, Petr</a> (9.12. 2003)
  183.  
  184. </div>
  185.  
  186.  
  187.  
  188. </div></div>
  189. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  190. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  191.  
  192.  
  193.  
  194. <div class='page-right-box book'>
  195.     <h3>Kni₧nφ novinka</h3>
  196.     <div class='page-right-box-in'>
  197.         <div class='book-top'>
  198.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=236'>NauΦte se ASP. NET za 21 dnφ</a></h4>
  199.         </div>
  200.     </div>
  201.     <div class='image'>
  202.         <a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=236'><img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  203.     </div>
  204.     <div class='book-bottom'>Cena: <span class='book-price-old'>690,00 KΦ</span> <span class='book-price-new'>621,00 KΦ</span></div>
  205. </div>
  206.  
  207.  
  208.  
  209. <div class='page-right-box reading'>
  210.     <h3>NejΦten∞jÜφ</h3>
  211.     <div class='page-right-box-in'>
  212.         <ul>
  213. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1211'>Statistika p°φstup∙ v PHP - detekce operaΦnφho systΘmu</a></li>
  214. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3041'>SMARTY - funkce</a></li>
  215. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3044'>Elektronick² ·°ednφk - pozvoln² zaΦßtek</a></li>
  216. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3064'>Interval v roce 2004: Publish or perish!</a></li>
  217. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3034'>Jak budovat a rozvφjet e-shop - transakce</a></li>
  218.         </ul>
  219.     </div>
  220. </div>
  221.  
  222.  
  223.  
  224. <div class='page-right-box cauldron'>
  225.     <h3>Diskuznφ kotel</h3>
  226.     <div class='page-right-box-in'>
  227.         <ul>
  228. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2561'>Internet Explorer 7 se jmenuje MyIE2</a><div>149 komentß°∙ </div></li>
  229. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2388'>otvovice.cz</a><div>148 komentß°∙ </div></li>
  230. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1304'>BezpeΦnost p°edevÜφm û include v PHP</a><div>95 komentß°∙ </div></li>
  231. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2965'>ImplementaΦnφ chyby v prohlφ₧eΦφch I.</a><div>59 komentß°∙ </div></li>
  232. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2980'>xoprivate.com</a><div>59 komentß°∙ </div></li>
  233.         </ul>
  234.     </div>
  235. </div>
  236.  
  237.  
  238.  
  239. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  240. </div>
  241. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  242. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  243. </body>
  244. </html>