Plantilla:PHP/ConceptosGeneralesBaseDatos

De WikiEducator
Saltar a: navegación, buscar

BASES DE DATOS: Introducción

Una muy breve introducción sobre lo que es una base de datos. Es éste un concepto conocido, pues es un término que habitualmente usamos de forma coloquial.


Icon define.gif
Base de datos

Una base de datos es una colección o conjunto de datos
que vamos a almacenar en un dispositivo de almacenamiento permanente (generalmente HD)
, que tiene una determinada estructura u organización, la cual nos va a permitir operar de una forma organizada y rápida con esos datos


BibliotecaMRM.jpg

Sería inimaginable buscar un libro en una biblioteca si no hubiera una organización u orden para localizarlo o a la hora de añadir un libro nuevo (en una sección, en una estantería concreta y no en cualquiera.

LibroGrande.jpg

Igualmente si voy a tener libros pequeños, los pondré en estanterías pequeñas, si voy a almacenar libros grandes necesitaré tener estanterías grandes.
Siguiendo esta lógica, las bases de datos han de estar preparadas para almacenar el tipo de información que nos pueda venir, para ello habrá que hacer un diseño correcto de las tablas y atributos para poder almacenar toda la información de nuestro sistema.
Esto implica tener que realizar un análisis detallado del sistema, buscando de alguna forma todos los posibles casos que se pueden producir para tener la base de datos preparada para que esa situación se pueda almacenar en forma de datos dentro de mi sistema


Icon key points.gif

Puntos clave

El diseño de la base de datos es un factor fundamental para el éxito de la aplicación



Icon key points.gif

Puntos clave

El diseño de la base de datos se debería de hacer solo una vez y modificarlo pocas veces durante su vida

Sistema de información



Icon define.gif
Qué es un sistema

Conjuntos de elementos realcionados que pretenden un determinado objetivo



Icon define.gif
Qué es un sistema de información

Es la parte lógica o de información de un determinado sistema.
Nos interesa especialemente por que va a ser la parte que vamos a estudiar para automatizar o informatizar



Icon define.gif
Parte dinámica/estática

Dentro de un sistema que vayamos a automatizar, tendremos elementos dinámicos que corresponden a las acciones o programación y una parte estática que corresponden a los datos que queremos almacenar en nuestro sistema


Ciclo en el desarrollo de una base de datos


Hay tres niveles como podemos ver en la imagenive


Icon define.gif
Niveles en el desarrollo de una base de datos

1.-Nivel conceptual

La concepción del sistema tal como se puede percibir por las personas
Lo que realmente ocurre en el funcionamiento cotidiano

2.-Nivel Lógico

Identificar esa parte del sistema que se va a poder automatizar
Concretar la manera como lo vamos a hacer
Especificar ya elementos lógicos  para ser automatizados

3.-Nivel Físico

Usando una herramienta o tecnología concreta
Transformar los elementos lógicos a código entendible por el computador


Ciclo vida bd.png

Nivel Conceptual

  • Corresponde a obtener las especificaciones del cliente
  • En este nivel debemos establecer comunicación con el cliente y técnicos.
Cliente

Grupo de personas que saben mucho de su negocio, pero seguramente poco de tecnologías de desarrollo

Técnico

Persona/s que tienen (deben tener) un alto conocimiento de desarrollo técnico, pero seguramente saben poco del negocio que han de automatizar

Objetivo

Qué el grupo técnico tenga un conocimiento detallado del negocio y puedan desarrollar una aplicación que satisfaga las necesidades del cliente
Especificacion1.png

Modelado conceptual



Icon define.gif
Modelado

Lo entederemos como un lenguaje
que nos va a permitir describir datos .


  • Serán los datos que queremos almacener de un determinado universo del discurso.
  • Usaremos el Modelo Entidad/Relación
  • también conocido como modelo Entidad interrelacion o modelo de chen}}


Icon define.gif
El diagrama entidad-interrelación (DEI)

Este diaglama es un modelado que permite representar la estática del modelo de datos entidad-interrelación mediante un lenguaje gráfico de definición de estructuras.



Icon define.gif
Elementos o lexemas de este lenguaje
entidades
atributos
interrelaciónes entre entidades.


Modelo Entidad/Relación

  • Es un modelo que nos va a permitir mostrar la parte estática del sistema
  • Solo va a mostrar los elementos o entidades y las relaciones que ocurren ente ellos
Entidades
  • Las entidades son esos elementos de los cuales queremos guardar información



Icon define.gif
Entidad

El conjunto de elementos u objetos concretos o abstractos de los que se quiere almacenar información dentro de este sistema


Concepto entidad.png

Representación gráfica
  • Su representación es un rectángulo
  • El nombre se especifica dentro del rectángulo
  • Se suelen poner en singular

Entidad.png

  • Una entidad va a representar un conjunto de elementos, por ejemplo la entidad Alumno representará varios alumnas

Entidad conjunto.png

Tipos de entidades


Icon define.gif
Entidades débiles
  • Son entidades que dependen de otra para que existan o incluso para poderse identificar
  • Se representan con un doble cuadrado

Entidad debil.png



Icon define.gif
Tipos de debilidades
Debilidad en existencia
  • Para que exista un elemento de la entidad tiene que existir el elemento de la entidad con el que está relacionado


Icon casestudy.gif
Debilidad en existencia
  • Supongamos el siguiente ejemplo
En una empresa que tiene empleados se quiere saber los familiares
de los empleados para por ejemplo tener acceso a las instalaciones 
o acceder a determinadas promociones
Si un empleado dejara de serlo, claramente los familiares de ese empleado
 ya no serían datos que a la empresa le interesara conocer
Aquí vemos la debilidad en existencia

Debilidad existencia emp fam.png


Debilidad en identificacion
  • Son entidades que dependen de otra para que existan o incluso para poderse identificar
  • Se representan con un doble cuadrado


Icon casestudy.gif
Debilidad en identificación
  • Es una debilidad más fuerte
  • En ella para poder identificar un elemento de una entidad, necesitamos identificar previamente el elemento de la entidad con el que está relacionado
  • Supongamos un ejemplo
En un hotel tenemos plantas (primero, segunda, ...) 
cada planta tiene unas características y más atributos que nos interesa guardar
Las plantas tienen habitaciones que se identifican por
un número (de la 1 hasta el número de habitaciones que haya. 
Está claro que para saber de qué habitación hablamos en un momento dado,
no podemos decir la habitacion 10, habrá que decir la habitación 10, 
de la planta 2  o la que sea 
Aquí vemos la debilidad en identificación ya que para identificar un elemento
de la entidad habitación, previamente necesitamos conocer el elemento de la entidad 
Planta con el que está relacionado.
Por supuesto que también es una debilidad en existencia, 
ya que si desapareciera una planta, desaparecerían también las habitaciones. 

Debilidad identificacion pla hab.png







  • Las entidades pueden ser débiles en cuanto que dependan de otra entidad.
  • En este
Jerarquía entre entidades
Concepto de agregación

Atributos=

  • Qué son

Plantilla:Nota;: Los atributos pueden ser también de la relación

Tipos de atributos
  1. normales
  2. clave
  3. multivaluados
  4. compuestos
  5. derivados

Relaciones=

  • Qué son
  • Pueden ser débil si relacionan una entidad fuerte con una débil
Cardinalidad
  • Qué es
  1. Cardinalidad del atributo
  2. Cardinalidad de la relación
Relaciones

Nivel Lógico

Nivel Físico

Normalización

Las bases de datos han de estar construidas de una forma normal, de manera que evitemos redundancias innecesarias, y sólo las mantengamos cuando las consideremos necesarias y seamos conscientes de que existen.

  • Si hacemos nuestros diseños usando el modelo de chen, garantizamos hasta la 3FN


Icon summary.gif
Formas Normales
1FN
Toda tabla tiene una clave primaria y no puede haber valores multivaluados en la misma tupla
2FN
Todo atributo no primo depende de forma completa de la clave y no solo de parte de ella
3FN
Los atributos no primos no implican a otros atributos no primos
Forma normal de Boyce y Codd.
Los atributos primos que forman una clave no se implican entre ellos


Icon present.gif
Tip: Atributos primos son los que forman parte de alguna clave candidata


Icon present.gif
Tip: Atributos no primos son los que no forman parte de ninguna clave candidata


Usar BD desde un lenguaje de programación

Una de las principales características que tiene la programación del back-end o programación al lado del servidor es acceder a bases de datos. Esta parte sí que es intrínseca y propia del lado del servidor. Nosotros accederemos a la base de datos desde nuestro programa. Desde él de manera habitual, realizaremos las siguientes acciones :


Icon activity.jpg
Acciones básicas trabajando con bases de datos

1. -Conectarnos a la base de datos

Para ello necesitamos un software específico del gestor de bases de datos con el que vayamos a trabajar.

2. -Seleccionar

La base de datos con la que vamos a trabajar.

3. -Trabajar con Bases de datos
3.1 -Actuar

acciones a hacer con la base de datos
son las habituales (consultas, inserciones, modificaciones y/o borrados)

3.2 -Procesar información

En caso de consultas deberemos recorrer el cursor u objeto que nos retorne la consulta
Siempre contendrá el conjunto de filas devueltas (en caso de que haya).

3.3 -Cerrar la base de datos

Es importante no dejar conexiones abiertas de forma innecesaria




Para realizar estas acciones disponemos de diversas Funciones/Clases específicas dentro de PHP, Nos referiremos a ellos como extensiones de PHP.


Icon key points.gif

Puntos clave

Independizar la base de datos y el lenguaje de programación
concepto de driver, conector y extensión (mysql, mysqli, PDO).




Bases de datos y PHP

PHP tiene un API especifico para trabajar directamente con mysql mysqli, el cual incorpora el driver y conector necesario para trabajar con ella de forma nativa. Que el driver sea nativo implica que está implementado utilizando un framework de extensiones de php.
También vamos a disponer de la extensión PDO, la cual se independiza del gestor concreto de bases datos que vayamos a utilizar.

Extensiones de php

  • Por lo tanto en este tema vamos a ver dos extensiones:
  1. mysqli usar una extensión nativa con su SGBD en concreto mysql que viene con el propio lenguaje
  2. PDO usar una extensión genérica que permite conectarse con cualquier gestor de BD, sin necesidad de cambiar nada de código, salvo los parámetros de la construcción del objeto.

Ciclo en el desarrollo de una base de datos


Hay tres niveles como podemos ver en la imagenive


Icon define.gif
Niveles en el desarrollo de una base de datos
  1. Nivel conceptual
  2. Nivel Lógico
  3. Nivel Físico


Nivel Conceptual

  • Corresponde a obtener las especificaciones del cliente
  • En este nivel debemos establecer comunicación con el cliente y técnicos.
Cliente

Grupo de personas que saben mucho de su negocio, pero seguramente poco de tecnologías de desarrollo

Técnico

Persona/s que tienen (deben tener) un alto conocimiento de desarrollo técnico, pero seguramente saben poco del negocio que han de automatizar

Objetivo

Qué el grupo técnico tenga un conocimiento detallado del negocio y puedan desarrollar una aplicación que satisfaga las necesidades del cliente Especificacion.png

Nivel Lógico

Nivel Físico

Normalización

Las bases de datos han de estar construidas de una forma normal, de manera que evitemos redundancias innecesarias, y sólo las mantengamos cuando las consideremos necesarias y seamos conscientes de que existen.

  • Si hacemos nuestros diseños usando el modelo de chen, garantizamos hasta la 3FN


Icon summary.gif
Formas Normales
1FN
Toda tabla tiene una clave primaria y no puede haber valores multivaluados en la misma tupla
2FN
Todo atributo no primo depende de forma completa de la clave y no solo de parte de ella
3FN
Los atributos no primos no implican a otros atributos no primos
Forma normal de Boyce y Codd.
Los atributos primos que forman una clave no se implican entre ellos


Icon present.gif
Tip: Atributos primos son los que forman parte de alguna clave candidata


Icon present.gif
Tip: Atributos no primos son los que no forman parte de ninguna clave candidata


Usar BD desde un lenguaje de programación

Una de las principales características que tiene la programación del back-end o programación al lado del servidor es acceder a bases de datos. Esta parte sí que es intrínseca y propia del lado del servidor. Nosotros accederemos a la base de datos desde nuestro programa. Desde él de manera habitual, realizaremos las siguientes acciones :


Icon activity.jpg
Acciones básicas trabajando con bases de datos

1. -Conectarnos a la base de datos

Para ello necesitamos un software específico del gestor de bases de datos con el que vayamos a trabajar.

2. -Seleccionar

La base de datos con la que vamos a trabajar.

3. -Trabajar con Bases de datos
3.1 -Actuar

acciones a hacer con la base de datos
son las habituales (consultas, inserciones, modificaciones y/o borrados)

3.2 -Procesar información

En caso de consultas deberemos recorrer el cursor u objeto que nos retorne la consulta
Siempre contendrá el conjunto de filas devueltas (en caso de que haya).

3.3 -Cerrar la base de datos

Es importante no dejar conexiones abiertas de forma innecesaria




Para realizar estas acciones disponemos de diversas Funciones/Clases específicas dentro de PHP, Nos referiremos a ellos como extensiones de PHP.


Icon key points.gif

Puntos clave

Independizar la base de datos y el lenguaje de programación
concepto de driver, conector y extensión (mysql, mysqli, PDO).




Bases de datos y PHP

PHP tiene un API especifico para trabajar directamente con mysql mysqli, el cual incorpora el driver y conector necesario para trabajar con ella de forma nativa. Que el driver sea nativo implica que está implementado utilizando un framework de extensiones de php.
También vamos a disponer de la extensión PDO, la cual se independiza del gestor concreto de bases datos que vayamos a utilizar.

Extensiones de php

  • Por lo tanto en este tema vamos a ver dos extensiones:
  1. mysqli usar una extensión nativa con su SGBD en concreto mysql que viene con el propio lenguaje
  2. PDO usar una extensión genérica que permite conectarse con cualquier gestor de BD, sin necesidad de cambiar nada de código, salvo los parámetros de la construcción del objeto.

</div>

Ciclo en el desarrollo de una base de datos


Hay tres niveles como podemos ver en la imagen

  1. Nivel conceptual
  2. Nivel Lógico
  3. Nivel Físico

[imagen:ciclo_vida_bd.png]

Nivel Conceptual

  • Corresponde a obtener las especificaciones del cliente
  • En este nivel debemos establecer comunicación con el cliente y técnicos.
Cliente

Grupo de personas que saben mucho de su negocio, pero seguramente poco de tecnologías de desarrollo

Técnico

Persona/s que tienen (deben tener) un alto conocimiento de desarrollo técnico, pero seguramente saben poco del negocio que han de automatizar

Objetivo

Qué el grupo técnico tenga un conocimiento detallado del negocio y puedan desarrollar una aplicación que satisfaga las necesidades del cliente [Imagen:especificacion.png]

Nivel Lógico

Nivel Físico

Normalización

Las bases de datos han de estar construidas de una forma normal, de manera que evitemos redundancias innecesarias, y sólo las mantengamos cuando las consideremos necesarias y seamos conscientes de que existen.

  • Si hacemos nuestros diseños usando el modelo de chen, garantizamos hasta la 3FN


Icon summary.gif
Formas Normales
1FN
Toda tabla tiene una clave primaria y no puede haber valores multivaluados en la misma tupla
2FN
Todo atributo no primo depende de forma completa de la clave y no solo de parte de ella
3FN
Los atributos no primos no implican a otros atributos no primos
Forma normal de Boyce y Codd.
Los atributos primos que forman una clave no se implican entre ellos


Icon present.gif
Tip: Atributos primos son los que forman parte de alguna clave candidata


Icon present.gif
Tip: Atributos no primos son los que no forman parte de ninguna clave candidata


Usar BD desde un lenguaje de programación

Una de las principales características que tiene la programación del back-end o programación al lado del servidor es acceder a bases de datos. Esta parte sí que es intrínseca y propia del lado del servidor. Nosotros accederemos a la base de datos desde nuestro programa. Desde él de manera habitual, realizaremos las siguientes acciones :


Icon activity.jpg
Acciones básicas trabajando con bases de datos

1. -Conectarnos a la base de datos

Para ello necesitamos un software específico del gestor de bases de datos con el que vayamos a trabajar.

2. -Seleccionar

La base de datos con la que vamos a trabajar.

3. -Trabajar con Bases de datos
3.1 -Actuar

acciones a hacer con la base de datos
son las habituales (consultas, inserciones, modificaciones y/o borrados)

3.2 -Procesar información

En caso de consultas deberemos recorrer el cursor u objeto que nos retorne la consulta
Siempre contendrá el conjunto de filas devueltas (en caso de que haya).

3.3 -Cerrar la base de datos

Es importante no dejar conexiones abiertas de forma innecesaria




Para realizar estas acciones disponemos de diversas Funciones/Clases específicas dentro de PHP, Nos referiremos a ellos como extensiones de PHP.


Icon key points.gif

Puntos clave

Independizar la base de datos y el lenguaje de programación
concepto de driver, conector y extensión (mysql, mysqli, PDO).




Bases de datos y PHP

PHP tiene un API especifico para trabajar directamente con mysql mysqli, el cual incorpora el driver y conector necesario para trabajar con ella de forma nativa. Que el driver sea nativo implica que está implementado utilizando un framework de extensiones de php.
También vamos a disponer de la extensión PDO, la cual se independiza del gestor concreto de bases datos que vayamos a utilizar.

Extensiones de php

  • Por lo tanto en este tema vamos a ver dos extensiones:
  1. mysqli usar una extensión nativa con su SGBD en concreto mysql que viene con el propio lenguaje
  2. PDO usar una extensión genérica que permite conectarse con cualquier gestor de BD, sin necesidad de cambiar nada de código, salvo los parámetros de la construcción del objeto.

</div>