<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.dataprix.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Bases de datos</title>
 <link>http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos</link>
 <description>The taxonomy view with a depth of 0.</description>
 <language>ca</language>
<item>
 <title> Vistes materialitzades d&#039;Oracle per optimitzar un Datawarehouse</title>
 <link>http://www.dataprix.com/ca/vistes-materialitzades-doracle-optimitzar-un-datawarehouse</link>
 <description>&lt;div style=&quot;margin: 1ex;&quot;&gt;
&lt;div&gt;
&lt;p&gt;Com les c&amp;agrave;rregues d&#039;un &lt;strong&gt;Data  warehouse&lt;/strong&gt; es realitzen de manera peri&amp;ograve;dica, i a m&amp;eacute;s &amp;eacute;s habitual la  creaci&amp;oacute; de &lt;strong&gt;taules agregades&lt;/strong&gt; per millorar l&#039;efici&amp;egrave;ncia i temps de resposta dels nostres informes, un recurs d&#039;optimitzaci&amp;oacute; f&amp;iacute;sica que pot aportar grans millores &amp;eacute;s la utilitzaci&amp;oacute; de &lt;strong&gt;vistes materialitzades&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;La vista materialitzada no &amp;eacute;s m&amp;eacute;s que una vista, definida amb una sent&amp;egrave;ncia SQL, de la qual a m&amp;eacute;s d&#039;emmagatzemar la seva definici&amp;oacute;, s&#039;emmagatzemen les dades que retorna, realitzant una c&amp;agrave;rrega inicial i despr&amp;eacute;s cada cert temps un refresc dels mateixos.&lt;/p&gt;
&lt;p&gt;Aix&amp;iacute;, si tenim un Datawarehouse que s&#039;actualitza di&amp;agrave;riament, podr&amp;iacute;em utilitzar vistes materialitzades per anar actualitzant taules interm&amp;egrave;dies que alimentin els nostres esquemes de DWH, o directament per implementar taules agregades que es refrescaran a partir de les nostres taules basi.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La creaci&amp;oacute; d&#039;aquest tipus de vistes no tan complexa com pot semblar, el m&amp;eacute;s important &amp;eacute;s tenir clar cada quant temps volem actualitzar la informaci&amp;oacute; de les vistes, i quin m&amp;egrave;tode de refresc utilitzar.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Sintaxi b&amp;agrave;sica per la    creaci&amp;oacute; d&#039;una vista materialitzada&lt;/h3&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;CREATE MATERIALIZED VIEW la meva_vista_materialitzada&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [TABLESPACE el meu_tablespace]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [BUILD {IMMEDIATE | DEFERRED}]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [REFRESH {ON COMMIT | ON  DEMAND | [START WITH data_inici] NEXT data_interval } |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {COMPLETI | FAST | FORCE} ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [{ENABLE|DISABLE} QUERY REWRITE]&lt;br /&gt;
AS SELECT t1.camp1, t2.camp2&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  FROM la meva_taula1 t1&amp;nbsp; , la meva_taula2 t2&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  WHERE t1.camp_fk = t2.camp_pk&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AND &amp;hellip; &lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Comentaris sobre  les diferents  opcions:&lt;/h3&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;h4&gt;&lt;strong&gt;&lt;strong&gt;C&amp;agrave;rrega de dades en la vista&lt;/strong&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;BUILD IMMEDIATE:&lt;/em&gt;&lt;br /&gt;
Les dades de la vista es carreguen en el mateix moment de la creaci&amp;oacute;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;BUILD DEFERRED&lt;/em&gt;:&lt;br /&gt;
&amp;nbsp; Nom&amp;eacute;s es crea la definici&amp;oacute;, les dades es carregaran m&amp;eacute;s avanci. Per realitzar aquesta c&amp;agrave;rrega es pot utilitzar la funci&amp;oacute; REFRESH del package DBMS_MVIEW:&lt;br /&gt;
&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/em&gt;&lt;em&gt;begin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbms_mview.refresh(&#039;la meva_vista_&lt;/em&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;em&gt;materialitzada&#039;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/em&gt;&amp;nbsp;&lt;strong&gt;&lt;br type=&quot;_moz&quot; /&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;h4&gt;&lt;strong&gt;&lt;strong&gt;M&amp;egrave;tode i temporalitat    del refresc de les dades&lt;/strong&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;p&gt;&lt;span style=&quot;display: none;&quot; id=&quot;1218606759544S&quot;&gt;&amp;nbsp;&lt;/span&gt;Cada quant temps es  refrescaran:&lt;/p&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;p&gt;&lt;em&gt;REFRESH ON COMMIT&lt;/em&gt;:&lt;br /&gt;
    &amp;nbsp; &amp;nbsp; Cada cop que es faci un commit en els objectes origin definits en  la select &lt;/p&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;p&gt;&lt;em&gt;REFRESH ON DEMAND&lt;/em&gt;:&lt;br /&gt;
    &amp;nbsp;     Com amb l&#039;opci&amp;oacute; DEFERRED del BUILD, s&#039;utilitzaran els procedures REFRESH, REFRESH_ALL_MVIEWS o REFRESH_DEPENDENT del package DBMS_MVIEW &lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;REFRESH [START WITH data_inici]  NEXT data_interval&lt;/em&gt;:&lt;br /&gt;
&amp;nbsp; START WITH indica la data del  primer  refresc (data_inici sol ser un SYSDATE)&lt;br /&gt;
&lt;span id=&quot;1218606742062S&quot; style=&quot;display: none;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span id=&quot;1218606741321S&quot; style=&quot;display: none;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span id=&quot;1218606740630S&quot; style=&quot;display: none;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;nbsp; NEXT indica cada quant  temps s&#039;actualitzar&amp;agrave; (data_interval podria ser SYSDATE +1 per  realitzar el refresc una vegada al dia)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4&gt;&lt;strong&gt;&lt;strong&gt;De quina manera es refrescaran&lt;/strong&gt;&lt;/strong&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;REFRESH COMPLETE&lt;/em&gt;:&lt;br /&gt;
El refresc es far&amp;agrave; de totes les dades de la vista materialitzada, la recrear&amp;agrave; completament cada cop que es llanci el refresc&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;REFRESH FAST&lt;/em&gt;:&lt;br /&gt;
El refresc ser&amp;agrave; incremental, &amp;eacute;s l&#039;opci&amp;oacute; m&amp;eacute;s recomanable, el de &lt;em&gt; fast&lt;/em&gt; ya d&amp;oacute;na una idea del perqu&amp;egrave;. &lt;br /&gt;
Aquest tipus de refresc t&amp;eacute; bastants  restriccions segons el tipus de vista que s&#039;estigui creant. &lt;br /&gt;
Es poden  consultar en &lt;a target=&quot;_blank&quot; href=&quot;http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/basicmv.htm#sthref534&quot; rel=&quot;nofollow&quot;&gt;General Restrictions on Fast Refresh&lt;/a&gt; de la documentaci&amp;oacute; oficial d&#039;Oracle&lt;/p&gt;
&lt;p&gt;Una de les coses importants a tenir en compte &amp;eacute;s que per poder utilitzar aquest m&amp;egrave;tode gaireb&amp;eacute; sempre &amp;eacute;s necessari haver creat abans un LOG de la Vista materialitzada, indicant els camps clau en els quals es basar&amp;agrave; el manteniment de la vista. &lt;br /&gt;
S&#039;utilitza la instrucci&amp;oacute; CREATE MATERIALIZED VIEW LOG ON:&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp; C&lt;/em&gt;&lt;em&gt;CREATE MATERIALIZED VIEW LOG  ON la meva_taula_origen&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITH PRIMARY  KEY&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INCLUDING  NEW VALUES;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;REFRESH FORCE&lt;/em&gt;:&lt;br /&gt;
Amb aquest m&amp;egrave;tode s&#039;indica que si &amp;eacute;s possible s&#039;utilitzi el metodo FAST,  i si no el COMPLETI.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;Per saber si una vista materialitzada pot utilitzar el m&amp;egrave;tode FAST, el package DBMS_MVIEW proporciona el procedure EXPLAIN_MVIEW&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4&gt;&lt;strong&gt;Activaci&amp;oacute; de la reescritura de consultes&lt;/strong&gt;&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;ENABLE QUERY REWRITE&lt;/em&gt;:&lt;br /&gt;
Es permet a la base de dades la reescritura de consultes&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;DISABLE QUERY REWRITE&lt;/em&gt;:&lt;br /&gt;
Es desactiva la reescritura de consultes&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;L&#039;opci&amp;oacute; QUERY REWRITE &amp;eacute;s la que m&amp;eacute;s anem a utilitzar si volem les vistes materialitzades per optimitzar nostre Data warehouse. &lt;br /&gt;
Aquesta opci&amp;oacute; permet crear taules agregades en forma de vistes materialitzades, i que quan es llanci una SELECT la base de dades pugui reescriure-la per consultar la taula o vista que vagi a retornar les dades sol&amp;middot;licitades en menys temps, tot de manera totalment transparent &lt;em&gt;a l&#039;usuari&lt;/em&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;L&#039;&amp;uacute;nic que cal fer &amp;eacute;s crear les taules agregades com a vistes materialitzades amb QUERY REWRITE habilitat.&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Exemples de vistes materialitzades&lt;/h3&gt;
&lt;p&gt;S&amp;oacute;n moltes combinacions, per&amp;ograve;  la sent&amp;egrave;ncia final no &amp;eacute;s tan complexa.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Primer pas de l&#039;ETL&lt;/h4&gt;
&lt;p&gt;Si volgu&amp;eacute;ssim crear una vista materialitzada d&#039;una taula que es refresqui un dia a la setmana, i de manera incremental far&amp;iacute;em el seg&amp;uuml;ent:&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;CREATE MATERIALIZED VIEW LOG  ON la meva_taula_origen&lt;br /&gt;
&amp;nbsp;&amp;nbsp; WITH&amp;nbsp; PRIMARY  KEY&lt;br /&gt;
&amp;nbsp;&amp;nbsp; INCLUDING NEW  VALUES;&amp;nbsp;&lt;br /&gt;
CREATE MATERIALIZED VIEW la meva_vista_materialitzada&lt;br /&gt;
&amp;nbsp; REFRESH FAST&amp;nbsp; NEXT  SYSDATE + 7&lt;br /&gt;
&amp;nbsp; AS SELECT camp1, camp2,  camp8&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  FROM la meva_taula_origen&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE camp2  &amp;gt; 5000;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Aquesta vista podria servir-nos per alimentar la c&amp;agrave;rrega d&#039;un Data Mart que es realitz&amp;eacute;s setmanalment. Podr&amp;iacute;em programar-la perqu&amp;egrave; es refresqu&amp;eacute;s just abans de l&#039;inici del proc&amp;eacute;s de c&amp;agrave;rrega, o com a primer pas en l&#039;ETL, i ja tindr&amp;iacute;em les dades necess&amp;agrave;ries actualitzades, i independents de l&#039;origen de dades (no haur&amp;iacute;em de molestar m&amp;eacute;s a l&#039;operacional). Un altre avantatge a tenir en compte &amp;eacute;s que si hi ha algun problema amb l&#039;acc&amp;eacute;s a les dades origen, si no els hem eliminat, en la vista materialitzada encara tindrem les dades de l&#039;&amp;uacute;ltim refresc, amb el que encara que el refresc fall&amp;eacute;s no ens trobar&amp;iacute;em un error que trunqu&amp;eacute;s la c&amp;agrave;rrega de nostre Data Warehouse, o una taula buida. &lt;br /&gt;
Per descomptat, en les condicions del WHERE podr&amp;iacute;em seleccionar nom&amp;eacute;s els registres necessaris, nom&amp;eacute;s els de l&#039;&amp;uacute;ltim mes, etc.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Taules agregades&lt;/h4&gt;
&lt;p&gt;Un altre exemple important seria la utilitzaci&amp;oacute; de vistes materialitzades per la &lt;strong&gt; &lt;strong&gt;creaci&amp;oacute; de taules agregades&lt;/strong&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;strong&gt;&lt;em&gt;CREATE MATERIALIZED VIEW vendes_agregades_mv&lt;br /&gt;
&amp;nbsp; BUILD IMMEDIATE&lt;br /&gt;
&amp;nbsp; REFRESH COMPLETI&lt;br /&gt;
&amp;nbsp; ENABLE QUERY REWRITE&lt;br /&gt;
AS&lt;br /&gt;
&amp;nbsp; SELECT aneu_producte, sum(import) total_vendes&lt;br /&gt;
&amp;nbsp; FROM vendes;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Amb aquesta senzilla sent&amp;egrave;ncia es crearia una taula agregada de total de vendes per producte d&#039;una suposada taula de vendes que seria la taula de fets.&lt;/p&gt;
&lt;p&gt;A nivell de sessi&amp;oacute; tamb&amp;eacute; caldria assegurar-se que l&#039;opci&amp;oacute; QUERY_REWRITE estigu&amp;eacute;s activada. Per si per ventura s&#039;habilita amb&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;ALTER SESSION SET QUERY_REWRITE_ENABLED=TRUE;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si ara dintre d&#039;aquesta sessi&amp;oacute; s&#039;executa la sent&amp;egrave;ncia&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;SELECT sum(import)&lt;br /&gt;
FROM vendes;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;la base de dades preparar&amp;agrave; el pla d&#039;execuci&amp;oacute; tenint en compte la vista materialitzada creada i internament realitzar&amp;agrave; la selecci&amp;oacute; sobre la vista vendes_agregades_mv.&lt;/p&gt;
&lt;p&gt;Una manera senzilla de comprovar-ho, apart d&#039;examinar el pla d&#039;execuci&amp;oacute;, o de comparar temps abans i despr&amp;eacute;s de la creaci&amp;oacute; de la vista, o desactivant el QUERY_REWRITE, &amp;eacute;s comprovar que aquesta sent&amp;egrave;ncia retorna resultats en el mateix temps que la sent&amp;egrave;ncia&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;em&gt;SELECT sum(import)&lt;br /&gt;
FROM vendes_agregades_mv;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Per consultar m&amp;eacute;s detalls, o la sintaxi completa de la creaci&amp;oacute; de vistes materialitzades en el cap&amp;iacute;tol &lt;a rel=&quot;nofollow&quot; href=&quot;http://xixona.dlsi.ua.es/apertium-www/common/browser.php?mark=&amp;amp;dir=es-ca&amp;amp;inurl=http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6002.htm#i2063793&quot; target=&quot;_blank&quot;&gt;Create Materialized View&lt;/a&gt; del manual de refer&amp;egrave;ncia SQL d&#039;Oracle&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Amb enterprise manager o amb la consola web de la base de dades tamb&amp;eacute; es poden crear les vistes materialitzades d&#039;una manera m&amp;eacute;s &lt;em&gt;assistida&lt;/em&gt;, per&amp;ograve; igualment &amp;eacute;s important tenir clars els conceptes abans de fer-ho.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img align=&quot;middle&quot; alt=&quot;Vistas materializadas en Oracle Enterprise Manager&quot; src=&quot;/files/uploads/2/rmsnapgr.gif&quot; style=&quot;width: 633px; height: 546px;&quot; /&gt;&lt;/p&gt;
</description>
 <comments>http://www.dataprix.com/ca/vistes-materialitzades-doracle-optimitzar-un-datawarehouse#comments</comments>
 <category domain="http://www.dataprix.com/ca/category/business-intelligence/data-warehouse">Data warehouse</category>
 <category domain="http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos/oracle">Oracle</category>
 <category domain="http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos">Bases de datos</category>
 <category domain="http://www.dataprix.com/ca/category/etiquetas/dise-o-f-sico">diseño físico</category>
 <category domain="http://www.dataprix.com/ca/category/etiquetas/sql">SQL</category>
 <category domain="http://www.dataprix.com/ca/category/etiquetas/vistas">vistas</category>
 <category domain="http://www.dataprix.com/ca/category/etiquetas/vistas-materializadas">vistas materializadas</category>
 <pubDate>Thu, 21 Aug 2008 17:50:09 +0200</pubDate>
 <dc:creator>carlos</dc:creator>
 <guid isPermaLink="false">266 at http://www.dataprix.com</guid>
</item>
<item>
 <title>Construcció de scripts amb ajuda del diccionari</title>
 <link>http://www.dataprix.com/ca/construcci-scripts-amb-ajuda-del-diccionari</link>
 <description>&lt;p&gt;&amp;Eacute;s bastant habitual si es treballa amb bases de dades que sovint s&#039;hagi de realitzar alguna tasca de creaci&amp;oacute; o alteraci&amp;oacute; d&#039;estructures, an&amp;agrave;lisis, recompilaci&amp;oacute;, etc. sobre objectes de la base de dades. Per aix&amp;ograve; se sol crear un script amb nombroses sent&amp;egrave;ncies DDL, en les quals la majoria de les vegades l&#039;&amp;uacute;nic que canvia &amp;eacute;s el nom de l&#039;objecte a tractar.&lt;br /&gt;
En aquests casos pot estalviar-nos molt treball la utilitzaci&amp;oacute; del diccionari de la base de dades per construir aquestes sent&amp;egrave;ncies din&amp;aacute;micament.&lt;/p&gt;
&lt;p&gt;Posarem com a exemple la creaci&amp;oacute; d&#039;un nou camp per emmagatzemar la data de creaci&amp;oacute; dels registres en totes les taules d&#039;un esquema d&#039;una base de dades ORACLE. Per aix&amp;ograve; utilitzar&amp;iacute;em la seg&amp;uuml;ent sent&amp;egrave;ncia:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;SELECT &#039;ALTER TABLE &#039; || OWNER || &#039;.&#039; || TABLE_NAME ||         &#039; ADD FECHA_CREACION DATE DEFAULT SYSDATE;&#039; FROM ALL_TABLES WHERE OWNER =&#039;HR&#039;;El resultat seria alguna cosa com aix&amp;ograve;:&amp;nbsp;  ALTER TABLE HR.DEPARTMENTS ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.EMPLOYEES ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.JOB_HISTORY ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.JOBS ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.LOCATIONS ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.REGIONS ADD FECHA_CREACION DATE DEFAULT SYSDATE; ALTER TABLE HR.COUNTRIES ADD FECHA_CREACION DATE DEFAULT SYSDATE;&lt;/p&gt;
&lt;p&gt;Ara nom&amp;eacute;s restaria guardar aquestes sent&amp;egrave;ncies en un script i executar-ho, o llan&amp;ccedil;ar-les directament des de l&#039;aplicaci&amp;oacute; que utilitzem per interactuar amb la nostra base de dades Pel qual hagi de (o prefereixi) treballar des d&#039;un terminal o linea de comandos, la manera de fer aix&amp;ograve; mateix amb SQLPLUS seria la&lt;br /&gt;
seg&amp;uuml;ent:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;  SQL&amp;gt; SET HEADING OFF SQL&amp;gt; SET FEEDBACK OFF SQL&amp;gt; SPOOL C:\campo_auditoria.sql SQL&amp;gt; SELECT &#039;ALTER TABLE &#039; || OWNER || &#039;.&#039; || TABLE_NAME ||              &#039; ADD FECHA_CREACION DATE DEFAULT SYSDATE;&#039;      FROM ALL_TABLES      WHERE OWNER =&#039;HR&#039;; SQL&amp;gt; SPOOL OFF; SQL&amp;gt; SET FEEDBACK ON SQL&amp;gt; SET HEADING ON I finalment executar el script generat, encara que &amp;eacute;s recomanable una revisi&amp;oacute; pr&amp;egrave;via de les sent&amp;egrave;ncies generades SQL&amp;gt; @C:\campo_auditoria.sql&lt;/p&gt;
</description>
 <comments>http://www.dataprix.com/ca/construcci-scripts-amb-ajuda-del-diccionari#comments</comments>
 <category domain="http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos/oracle">Oracle</category>
 <category domain="http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos">Bases de datos</category>
 <pubDate>Thu, 21 Aug 2008 17:32:04 +0200</pubDate>
 <dc:creator>carlos</dc:creator>
 <guid isPermaLink="false">265 at http://www.dataprix.com</guid>
</item>
<item>
 <title>Com crear un nou esquema a Oracle pas a pas</title>
 <link>http://www.dataprix.com/ca/com-crear-un-nou-esquema-oracle-pas-pas</link>
 <description>&lt;p&gt;Per poder realitzar tots els passos &amp;eacute;s necessari iniciar la sessi&amp;oacute; en la base de dades amb un usuari amb permisos d&#039;administraci&amp;oacute;, el m&amp;eacute;s senzill &amp;eacute;s utilitzar directament l&#039;usuari SYSTEM&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creaci&amp;oacute; d&#039;un tablespace per a dades, i un altre per a &amp;iacute;ndexos. Aquests tablespaces s&amp;oacute;n la ubicaci&amp;oacute; on s&#039;emmagatzemaran els objectes de l&#039;esquema que crearem.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;span class=&quot;unknown&quot;&gt;Tablespace &lt;/span&gt;per a dades, amb mida inicial de 1024 Mb, i &lt;span class=&quot;alternative&quot;&gt;auto&lt;/span&gt;extensible&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;span class=&quot;unknown&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLESPACE&lt;/span&gt; &amp;quot;APPDAT&amp;quot;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;LOGGING DATAFILE &#039;/export/home/oracle/oradata/datafiles/APPDAT.dbf&#039; SIZE 1024 M&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;
&lt;span class=&quot;unknown&quot;&gt;Tablespace &lt;/span&gt;per a &amp;iacute;ndexos, amb mida inicial de 512 Mb, i autoextensible&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;
&lt;span class=&quot;unknown&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLESPACE &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APPIDX&lt;/span&gt;&amp;quot;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;span class=&quot;unknown&quot;&gt;LOGGING&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;DATAFILE&lt;/span&gt; &#039;/export/home/oracle/oradata/datafiles/APPIDX.dbf&#039; SIZE 512 M&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;span class=&quot;unknown&quot;&gt;EXTENT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;MANAGEMENT &lt;/span&gt;LOCAL &lt;span class=&quot;unknown&quot;&gt;SEGMENT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;SPACE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;MANAGEMENT&lt;/span&gt; &lt;span class=&quot;alternative&quot;&gt;AUTO&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creaci&amp;oacute; de l&#039;usuari que treballar&amp;agrave; sobre aquests tablespaces, i que ser&amp;agrave; el propietari dels objectes que es cre&amp;iuml;n en ells&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;span class=&quot;unknown&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;USER &lt;/span&gt;&amp;quot;A&lt;span class=&quot;unknown&quot;&gt;PP&lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;PROFILE &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;DEFAULT&lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;IDENTIFIED&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;BY &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APPPWD&lt;/span&gt;&amp;quot; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;DEFAULT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLESPACE &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APPDAT&lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;TEMPORARY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLESPACE&lt;/span&gt; &amp;quot;&lt;span class=&quot;unknown&quot;&gt;TEMP&lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;ACCOUNT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;UNLOCK&lt;/span&gt;;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nom&amp;eacute;s falta assignar-li els permisos necessaris per treballar. Si se li assignen els rols &#039;Connect&#039; i &#039;Resource&#039; i ja tindr&amp;agrave; els permisos m&amp;iacute;nims&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;span class=&quot;unknown&quot;&gt;GRANT &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;CONNECT&lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;RESOURCE&lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Completem l&#039;assignaci&amp;oacute; de permisos amb privilegis espec&amp;iacute;fics sobre objectes per assegurar-nos que l&#039;usuari pugui realitzar totes les operacions que creguem necess&amp;agrave;ries&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;INDEX&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;SEQUENCE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TRIGGER&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;A&lt;span class=&quot;unknown&quot;&gt;PP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;INDEX&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;SEQUENCE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;SYNONYM&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
GRANT CREATE ANY TABLE TO &amp;quot;APP&amp;quot;;&lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;VIEW&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;DROP&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;INDEX&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;DROP&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;SEQUENCE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;DROP&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot; &lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;DROP&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TRIGGER&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;DROP&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;VIEW&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;QUERY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;REWRITE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;; &lt;br /&gt;
&lt;span class=&quot;unknown&quot;&gt;GRANT&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;UNLIMITED&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TABLESPACE&lt;/span&gt; &lt;span class=&quot;unknown&quot;&gt;TO &lt;/span&gt;&amp;quot;&lt;span class=&quot;unknown&quot;&gt;APP&lt;/span&gt;&amp;quot;;&lt;/p&gt;
&lt;p class=&quot;rteindent1&quot;&gt;Ara l&#039;usuari ja pot connectar-se i comen&amp;ccedil;ar a treballar sobre el seu esquema&lt;/p&gt;
&lt;div id=&quot;seolinx-tooltip&quot; style=&quot;border: 1px solid rgb(0, 0, 0); margin: 0pt; padding: 0pt; display: none; z-index: 99999; width: auto; position: absolute; opacity: 0.9;&quot;&gt;
&lt;table style=&quot;border: 0pt none ; margin: 0pt; padding: 0pt; width: auto; border-collapse: separate;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td id=&quot;seolinx-table&quot; style=&quot;border: 0pt none ; margin: 1px; padding: 0pt; font-weight: bold; font-size: 11px; font-family: Tahoma;&quot;&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;td id=&quot;seolinx-tooltip-close&quot; title=&quot;close&quot; style=&quot;border: 0pt none ; margin: 0pt; padding: 1px; vertical-align: middle; width: auto; cursor: pointer;&quot;&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;chrome://seoquake/content/skin/close.gif&quot; /&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p class=&quot;rteindent1&quot;&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://www.dataprix.com/ca/com-crear-un-nou-esquema-oracle-pas-pas#comments</comments>
 <category domain="http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos/oracle">Oracle</category>
 <category domain="http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos">Bases de datos</category>
 <pubDate>Mon, 21 Jul 2008 17:49:23 +0200</pubDate>
 <dc:creator>carlos</dc:creator>
 <guid isPermaLink="false">237 at http://www.dataprix.com</guid>
</item>
<item>
 <title>Material sobre bases de dades &#039;lliures&#039;, Màster de la UOC</title>
 <link>http://www.dataprix.com/ca/material-bases-dades-lliures-m-ster-la-uoc</link>
 <description>&lt;p&gt;En la Universitat Oberta de Catalunya es pot cursar el M&amp;agrave;ster de &#039;Programari Lliure&#039; sobre sofware de Lliure Distribuci&amp;oacute;. Per estar d&#039;acord amb la filosofia lligada al desenvolupament d&#039;aquest tipus de sofware la UOC ha decidit anar publicant les anotacions de les assignatures que es van cursant en aquest M&amp;agrave;ster.&lt;br /&gt;
Una d&#039;aquestes publicacions s&amp;oacute;n les anotacions de l&#039;assignatura Bases de Dades, on s&#039;expliquen els conceptes m&amp;eacute;s importants sobre bases de dades, evoluci&amp;oacute; hist&amp;ograve;rica, el model Relacional de Bases de Dades, el llenguatge de consulta SQL i disseny de models de bases de dades. Despr&amp;eacute;s es pot aplicar aquesta teoria sobre MySQL i PostgreSQL, dues dels sistemes gestors de base de dades de lliure distribuci&amp;oacute; m&amp;eacute;s coneguts, dels quals s&#039;aporten caracter&amp;iacute;stiques, detallis funcionament i nocions d&#039;administraci&amp;oacute;.&lt;br /&gt;
El temari que abasten aquestes anotacions, extret de l&#039;&amp;iacute;ndex del mateix document, &amp;eacute;s el seg&amp;uuml;ent:&lt;/p&gt;
&lt;p&gt;M&amp;ograve;dul did&amp;agrave;ctic 1&lt;br /&gt;
Introducci&amp;oacute; a les bases de dades&lt;br /&gt;
Rafael Camps Vaig parar&lt;br /&gt;
1. Concepte i origen de les BD i dels SGBD&lt;br /&gt;
2. Evoluci&amp;oacute; dels SGBD&lt;br /&gt;
3. Objectius i funcionalitat dels SGBD&lt;br /&gt;
4. Arquitectura dels SGBD&lt;br /&gt;
5. Models de BD&lt;br /&gt;
6. Llenguatges i usuaris&lt;br /&gt;
7. Administraci&amp;oacute; de BD&lt;/p&gt;
&lt;p&gt;M&amp;ograve;dul did&amp;agrave;ctic 2&lt;br /&gt;
El model relacional i l&#039;&amp;aacute;lgebra relacional&lt;br /&gt;
Dolors Costal Costa&lt;br /&gt;
1. Introducci&amp;oacute; al model relacional&lt;br /&gt;
2. Estructura de les dades&lt;br /&gt;
3. Operacions del model relacional&lt;br /&gt;
4. Regles d&#039;integritat&lt;br /&gt;
5. L&#039;&amp;aacute;lgebra relacional&lt;/p&gt;
&lt;p&gt;M&amp;ograve;dul did&amp;agrave;ctic 3&lt;br /&gt;
El llenguatge SQL&lt;br /&gt;
Carme Mart&amp;iacute;n Escofet&lt;br /&gt;
1. Sent&amp;egrave;ncies de definici&amp;oacute;&lt;br /&gt;
2. Sent&amp;egrave;ncies de manipulaci&amp;oacute;&lt;br /&gt;
3. Sent&amp;egrave;ncies de control&lt;br /&gt;
4. Sublenguajes especialitzats&lt;/p&gt;
&lt;p&gt;M&amp;ograve;dul did&amp;agrave;ctic 4&lt;br /&gt;
Introducci&amp;oacute; al disseny de bases de dades&lt;br /&gt;
Dolors Costal Costa&lt;br /&gt;
1. Introducci&amp;oacute; al disseny de bases de dades&lt;br /&gt;
2. Disseny conceptual: el model ER&lt;br /&gt;
3. Disseny l&amp;ograve;gic: la transformaci&amp;oacute; del model ER en el model relacional&lt;/p&gt;
&lt;p&gt;M&amp;ograve;dul did&amp;agrave;ctic 5&lt;br /&gt;
Bases de dades en MySQL&lt;br /&gt;
Luis Alberto Casillas Santill&amp;aacute;n; Marc Gibert Ginest&amp;agrave;; Oscar P&amp;eacute;rez Habita&lt;br /&gt;
1. Caracter&amp;iacute;stiques de MySQL&lt;br /&gt;
2. Acc&amp;eacute;s a un servidor MySQL&lt;br /&gt;
3. Creaci&amp;oacute; i manipulaci&amp;oacute; de taules&lt;br /&gt;
4. Consultes&lt;br /&gt;
5. Administraci&amp;oacute; de MySQL&lt;br /&gt;
6. Clients gr&amp;agrave;fics&lt;/p&gt;
&lt;p&gt;M&amp;ograve;dul did&amp;agrave;ctic 6&lt;br /&gt;
Bases de dades en PostgreSQL&lt;br /&gt;
Marc Gibert Ginest&amp;agrave;; Oscar P&amp;eacute;rez Habita&lt;br /&gt;
1. Caracter&amp;iacute;stiques de PostgreSQL&lt;br /&gt;
2. Introducci&amp;oacute; a l&#039;orientaci&amp;oacute; a objectes&lt;br /&gt;
3. Acc&amp;eacute;s a un servidor PostgreSQL&lt;br /&gt;
4. Creaci&amp;oacute; i manipulaci&amp;oacute; de taules&lt;br /&gt;
5. Manipulaci&amp;oacute; de dades&lt;br /&gt;
6. Funcions i disparadores&lt;br /&gt;
7. Administraci&amp;oacute; de PostgreSQL&lt;br /&gt;
8. Client gr&amp;agrave;fic: pgAdmin3&lt;/p&gt;
&lt;p&gt;M&amp;ograve;dul did&amp;agrave;ctic 7&lt;br /&gt;
Desenvolupament d&#039;aplicacions en connexi&amp;oacute; amb bases de dades&lt;br /&gt;
Marc Gibert Ginest&amp;agrave;&lt;br /&gt;
1. Connexi&amp;oacute; i &amp;uacute;s de bases de dades en llenguatge PHP&lt;br /&gt;
2. Connexi&amp;oacute; i &amp;uacute;s de bases de dades en llenguatge Java&lt;/p&gt;
&lt;p&gt;M&amp;ograve;dul did&amp;agrave;ctic 8&lt;br /&gt;
Cas d&#039;estudi&lt;br /&gt;
Marc Gibert Ginest&amp;agrave;&lt;br /&gt;
1. Presentaci&amp;oacute; del cas d&#039;estudi&lt;br /&gt;
2. El model relacional i l&#039;&amp;aacute;lgebra relacional&lt;br /&gt;
3. El llenguatge SQL&lt;br /&gt;
4. Introducci&amp;oacute; al disseny de bases de dades&lt;br /&gt;
5. Bases de dades en MySQL&lt;br /&gt;
6. Bases de dades en PostgreSQL&lt;br /&gt;
7. Desenvolupament d&#039;aplicacions en connexi&amp;oacute; amb bases de dades&lt;/p&gt;
&lt;p&gt;Ap&amp;egrave;ndix&lt;br /&gt;
GNU Free Documentation License&lt;/p&gt;
&lt;p&gt;Es pot descarregar el document en format PDF a trav&amp;eacute;s del seg&amp;uuml;ent enlla&amp;ccedil;:&lt;br /&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;http://www.uoc.edu/masters/cat/img/913.pdf&quot;&gt;Anotacions Bases de Dades M&amp;agrave;ster UOC&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;O accedir a est i a altres interessants anotacions d&#039;assignatures del M&amp;agrave;ster sobre Programari Lliure a trav&amp;eacute;s del seg&amp;uuml;ent enlla&amp;ccedil;:&lt;br /&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;http://xixona.dlsi.ua.es/apertium-www/common/browser.php?mark=&amp;amp;dir=es-ca&amp;amp;inurl=http://www.uoc.edu/masters/cat/web/materials_lliures.html&quot;&gt;Apuntis M&amp;agrave;ster Programari Lliure UOC&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Carlos Fern&amp;aacute;ndez&lt;/p&gt;
&lt;p&gt;&lt;!-- google_ad_section_end --&gt;&lt;/p&gt;
</description>
 <comments>http://www.dataprix.com/ca/material-bases-dades-lliures-m-ster-la-uoc#comments</comments>
 <category domain="http://www.dataprix.com/ca/category/bases-de-datos/base-de-datos">Bases de datos</category>
 <category domain="http://www.dataprix.com/ca/bbdd">Bases de datos</category>
 <category domain="http://www.dataprix.com/ca/open-source">Software libre</category>
 <pubDate>Thu, 17 Jul 2008 12:05:36 +0200</pubDate>
 <dc:creator>carlos</dc:creator>
 <guid isPermaLink="false">232 at http://www.dataprix.com</guid>
</item>
</channel>
</rss>
