{"id":500,"date":"2023-10-19T12:58:45","date_gmt":"2023-10-19T10:58:45","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=500"},"modified":"2024-09-21T19:03:59","modified_gmt":"2024-09-21T17:03:59","slug":"1-2-el-model-entitat-relacio","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/1-2-el-model-entitat-relacio\/","title":{"rendered":"1.2. El model entitat-relaci\u00f3"},"content":{"rendered":"<p>Podem estructurar qualsevol realitat en diferents entitats que poden interactuar entre elles seguint determinades regles. Per exemple, el genoma, en tant que part de la realitat biol\u00f2gica d\u2019una c\u00e8l\u00b7lula, tamb\u00e9 es pot estructurar en diferents components. A partir d\u2019aquesta organitzaci\u00f3 artificialment constru\u00efda, podem modelar la totalitat dels elements que el conformen utilitzant entitats i relacions. Aquestes estructures, contenidors d\u2019informaci\u00f3 o dades poden ser digitalitzats en un ordinador per a la seva gesti\u00f3 i an\u00e0lisi; en el cas del genoma, an\u00e0lisis bioinform\u00e0tics.<\/p>\n<p>El model entitat-relaci\u00f3 ens ajuda a dissenyar la nostra pr\u00f2pia base de dades. Una entitat representa una mena d\u2019elements en l\u2019entorn real que desitgem modelar. Una ocurr\u00e8ncia \u00e9s una inst\u00e0ncia o exemple particular d\u2019una entitat. La connectivitat o participaci\u00f3 entre entitats s\u2019ha d\u2019especificar expl\u00edcitament mitjan\u00e7ant relacions. El nombre d\u2019ocurr\u00e8ncies d\u2019una entitat que podran relacionar-se amb inst\u00e0ncies d\u2019una altra entitat ser\u00e0:<\/p>\n<ul>\n<li>Un a un (1:1): un element de la primera entitat pot relacionar-se amb un \u00fanic element de la segona.<\/li>\n<li>Un a diversos (1:N): un element de la primera entitat pot relacionar-se amb diversos elements de la segona (per\u00f2 no al contrari).<\/li>\n<li>Diversos amb diversos (M:N): un element de la primera entitat pot relacionar-se amb diversos elements de la segona (i viceversa).<\/li>\n<\/ul>\n<figure id=\"attachment_504\" aria-describedby=\"caption-attachment-504\" style=\"width: 350px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-504 size-full\" src=\"\/wp-content\/uploads\/sites\/8\/2023\/10\/figura1M4.jpg\" alt=\"\" width=\"350\" height=\"658\" srcset=\"\/wp-content\/uploads\/sites\/8\/2023\/10\/figura1M4.jpg 350w, \/wp-content\/uploads\/sites\/8\/2023\/10\/figura1M4-160x300.jpg 160w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><figcaption id=\"caption-attachment-504\" class=\"wp-caption-text\">Figura 1. Model entitat-relaci\u00f3 d\u2019un cat\u00e0leg de gens.<br \/>Font: elaboraci\u00f3 pr\u00f2pia.<\/figcaption><\/figure>\n<p>El model cont\u00e9 tres entitats i dues relacions. Gr\u00e0ficament, les entitats es representen utilitzant rectangles, i les relacions, mitjan\u00e7ant l\u00ednies rectes amb un rombe per indicar la connectivitat.<\/p>\n<p>Aquest esquema basat en entitats i relacions resulta senzill d\u2019emprar posteriorment per construir la base de dades definitiva. Per mostrar les diferents etapes de disseny, procedirem a modelar un escenari molt habitual en entorns de recerca bioinform\u00e0tics: la caracteritzaci\u00f3 del cat\u00e0leg de gens d\u2019un genoma. Podeu observar les diferents entitats amb els seus atributs i les relacions entre entitats que han de formar el nostre model en la figura 1.<\/p>\n<p>Els gens s\u00f3n fragments d\u2019ADN ubicats en una localitzaci\u00f3 precisa del genoma que codifiquen la seq\u00fc\u00e8ncia d\u2019una prote\u00efna. Aquestes mol\u00e8cules, d\u2019altra banda, exerceixen una funci\u00f3 biol\u00f2gica espec\u00edfica dins de <a href=\"javascript:void(0);\" class=\"tooltip\" data-toggle=\"popover\" data-placement=\"bottom\" data-content=\"Els conceptes b\u00e0sics de biologia necessaris aqu\u00ed s\u2019estudien en l\u2019assignatura Fonaments de biologia molecular.\" data-placement=\"top\" data-html=\"true\">l'organisme<\/a>. L\u00f2gicament, cada genoma posseeix el seu propi cat\u00e0leg de gens. Analitzant aquesta informaci\u00f3 pr\u00e8via, decidim modelar aquest entorn utilitzant les entitats <strong>gens<\/strong>, <strong>genomes<\/strong> i <strong>funcions<\/strong>, amb els seus propis atributs (mostrats en la figura 2).<\/p>\n<p>L\u00f2gicament, les entitats no s\u00f3n objectes a\u00efllats del seu entorn. Per tant, hem de complint les especificacions del nostre problema, unir mitjan\u00e7ant relacions aquelles entitats que estan interconnectades en el m\u00f3n real. En aquest cas, els gens tenen la capacitat de pert\u00e0nyer a un genoma per desenvolupar una funci\u00f3 concreta en l\u2019organisme. Per satisfer ambdues propietats, definim les relacions bin\u00e0ries <strong>pertinen\u00e7a<\/strong> i <strong>anotacions<\/strong>, cadascuna amb una connectivitat diferent (figura 1). Les entitats i relacions que formen aquest model han de ser convertides en taules. Les entitats i els seus atributs passaran a ser taules de la nostra base de dades, per\u00f2 no totes les relacions seran taules, dep\u00e8n del tipus de connectivitat. \u00c9s b\u00e0sic establir per a cada taula un atribut especial (o una combinaci\u00f3 d\u2019atributs) que identifiqui cada inst\u00e0ncia de forma un\u00edvoca. Aquest atribut especial rep el nom de clau prim\u00e0ria. \u00c9s preferible usar un codi caracter\u00edstic en lloc d\u2019un nom per facilitar la identificaci\u00f3 de qualsevol inst\u00e0ncia mitjan\u00e7ant la clau prim\u00e0ria (per exemple, un codi num\u00e8ric assignat en funci\u00f3 de l\u2019ordre d\u2019entrada a la taula).<\/p>\n<div class=\"mceTemp\"><\/div>\n<figure id=\"attachment_746\" aria-describedby=\"caption-attachment-746\" style=\"width: 641px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-746\" src=\"\/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_2.png\" alt=\"\" width=\"641\" height=\"102\" srcset=\"\/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_2.png 1024w, \/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_2-300x48.png 300w, \/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_2-768x122.png 768w\" sizes=\"(max-width: 641px) 100vw, 641px\" \/><figcaption id=\"caption-attachment-746\" class=\"wp-caption-text\">Figura 2. Entitats convertides en taules.<br \/>Hem subratllat la clau prim\u00e0ria de cada taula.<br \/>Font: elaboraci\u00f3 pr\u00f2pia.<\/figcaption><\/figure>\n<p>Les dues relacions existents en el nostre esquema s\u2019han de modelar de diferent forma, at\u00e8s que cadascuna presenta una combinaci\u00f3 diferent de possibles ocurr\u00e8ncies entre taules. L\u2019associaci\u00f3 entre les taules <em>gens <\/em>i <em>genomes<\/em> s\u2019ha de representar amb una relaci\u00f3 amb cardinalitat 1:N, ja que un gen nom\u00e9s pertany a un genoma, per\u00f2 un genoma cont\u00e9 molts gens. Aquesta relaci\u00f3 no necessita una taula nova, pot implementar-se referenciant simplement des d\u2019una taula (gens), que \u00e9s la part <em>n <\/em>de la relaci\u00f3 <em>pertinen\u00e7a<\/em>, la clau prim\u00e0ria de l\u2019altra (genomes), que \u00e9s la part 1 de la relaci\u00f3<em> pertinen\u00e7a<\/em>. Dins de la taula <em>gens<\/em>, aquest atribut rep la denominaci\u00f3 de clau forana.<\/p>\n<figure id=\"attachment_750\" aria-describedby=\"caption-attachment-750\" style=\"width: 646px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-750\" src=\"\/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_3.png\" alt=\"\" width=\"646\" height=\"58\" srcset=\"\/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_3.png 1024w, \/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_3-300x27.png 300w, \/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_3-768x69.png 768w\" sizes=\"(max-width: 646px) 100vw, 646px\" \/><figcaption id=\"caption-attachment-750\" class=\"wp-caption-text\">Figura 3. Relacions (1:N) convertides en claus foranes.<br \/>Indiquem amb un subratllat superior la clau forana de cada taula.<br \/>Font: elaboraci\u00f3 pr\u00f2pia.<\/figcaption><\/figure>\n<p>La relaci\u00f3 <em>anotacions<\/em> entre les taules <em>gens<\/em> i <em>funcions<\/em> t\u00e9 una connectivitat M:N, ja que un gen pot posseir diverses anotacions, per\u00f2 una anotaci\u00f3 tamb\u00e9 pot ser compartida per diversos gens. Per a la seva correcta implementaci\u00f3, hi introduirem una nova taula anomenada <em>anotacions<\/em>. Aquesta posseir\u00e0, com a clau prim\u00e0ria, la combinaci\u00f3 de les claus prim\u00e0ries de cada taula original.<\/p>\n<p>At\u00e8s que ambdues claus prim\u00e0ries per separat posseeixen totes les propietats necess\u00e0ries, el dissenyador garanteix amb aquesta mesura que cada inst\u00e0ncia d\u2019aquesta nova taula estar\u00e0 dotada d\u2019un identificador \u00fanic, que estar\u00e0 format pel nom del gen juntament amb el nom de la funci\u00f3 en particular perqu\u00e8 sigui un identificador de la inst\u00e0ncia \u00fanic que no es pugui repetir.<\/p>\n<figure id=\"attachment_752\" aria-describedby=\"caption-attachment-752\" style=\"width: 638px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-752\" src=\"\/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_4.png\" alt=\"\" width=\"638\" height=\"81\" srcset=\"\/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_4.png 1024w, \/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_4-300x38.png 300w, \/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_4-768x98.png 768w\" sizes=\"(max-width: 638px) 100vw, 638px\" \/><figcaption id=\"caption-attachment-752\" class=\"wp-caption-text\">Figura 4. Relacions (M:N) convertides en taules.<br \/>Font: elaboraci\u00f3 pr\u00f2pia.<\/figcaption><\/figure>\n<p>Les relacions amb cardinalitat M:N exportades des del model entitat-relaci\u00f3 estan caracteritzades tamb\u00e9 pels seus propis atributs. Aix\u00ed, \u00e9s possible afegir un camp per guardar l\u2019origen de cada anotaci\u00f3 (per exemple, computacional, experimental o font bibliogr\u00e0fica). Podem extreure aquesta informaci\u00f3 a partir de les dades recuperades del sistema d\u2019anotaci\u00f3 autom\u00e0tica utilitzat per poblar d\u2019exemples el nostre cat\u00e0leg de gens:<\/p>\n<figure id=\"attachment_754\" aria-describedby=\"caption-attachment-754\" style=\"width: 636px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-754\" src=\"\/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_5.png\" alt=\"\" width=\"636\" height=\"59\" srcset=\"\/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_5.png 1024w, \/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_5-300x28.png 300w, \/wp-content\/uploads\/sites\/8\/2024\/09\/PID_00298304_5-768x71.png 768w\" sizes=\"(max-width: 636px) 100vw, 636px\" \/><figcaption id=\"caption-attachment-754\" class=\"wp-caption-text\">Figura 5. Atributs en relacions convertides en taules.<br \/>Font: elaboraci\u00f3 pr\u00f2pia.<\/figcaption><\/figure>\n<p>La selecci\u00f3 de les claus id\u00f2nies resulta essencial dins del disseny d\u2019una base de dades relacional. De fet, la integritat d\u2019un model relacional ha de complir dos requisits fonamentals relacionats amb la gesti\u00f3 d\u2019aquestes:<\/p>\n<ol>\n<li>La clau prim\u00e0ria no ha de contenir un valor indefinit o nul i el valor ha de ser \u00fanic.<\/li>\n<li>La clau forana ha de fer refer\u00e8ncia a una clau prim\u00e0ria d\u2019una altra taula.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Podem estructurar qualsevol realitat en diferents entitats que poden interactuar entre elles seguint determinades regles. Per exemple, el genoma, en tant que part de la realitat biol\u00f2gica d\u2019una c\u00e8l\u00b7lula, tamb\u00e9 es pot estructurar en diferents components. A partir d\u2019aquesta organitzaci\u00f3 artificialment constru\u00efda, podem modelar la totalitat dels elements que el conformen utilitzant entitats i relacions. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/500"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/comments?post=500"}],"version-history":[{"count":8,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/500\/revisions"}],"predecessor-version":[{"id":772,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/500\/revisions\/772"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/media?parent=500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}