La unidad principal detrás de una base de datos relacional es aumentar la precisión al aumentar la eficiencia con la que se almacenan los datos. Por ejemplo, los nombres de cada uno de los millones de personas que emigraron a los Estados Unidos a través de la Isla Ellis a principios del siglo XX se registraron a mano en grandes hojas de papel; A las personas de la ciudad de Londres se les ingresó su país de origen como Inglaterra, Gran Bretaña, Reino Unido, Reino Unido o Reino Unido, etc. Múltiples formas de registrar la misma información conducen a una confusión futura cuando es necesario saber simplemente cómo mucha gente vino del país ahora conocido como el Reino Unido. Puedes ver y más. PHP, MySQL, HTML, jQuery – Desarrollo de sitios web – Todo en 1 Combo Curso Clases de capacitación en línea | PHP, MySQL, HTML, jQuery – Desarrollo de sitios web – Cursos combinados todo en 1 Cursos en línea La solución moderna a este problema es la base de datos. Se realiza una sola entrada para cada país, por ejemplo, en una lista de referencia que podría llamarse la tabla País. Cuando alguien necesita indicar el Reino Unido, solo tiene una opción disponible de la lista: una sola entrada llamada “Reino Unido”. En este ejemplo, “Reino Unido” es la representación única de un país, y cualquier información adicional sobre este país puede usar el mismo término de la misma lista para referirse al mismo país. Por ejemplo, una lista de códigos telefónicos de países y una lista de castillos europeos deben referirse a países; Al usar la misma tabla de países para proporcionar esta información idéntica a las dos nuevas listas, hemos establecido nuevas relaciones entre diferentes listas que solo tienen un elemento en común: el país. Una base de datos relacional, por lo tanto, es simplemente una colección de listas que comparten algunos datos comunes.
SQL es un lenguaje declarativo en el que se proporciona el resultado u operación esperados sin los detalles específicos sobre cómo realizar la tarea. La base de datos SQL maneja los pasos necesarios para ejecutar las declaraciones SQL de manera transparente. A veces, SQL se caracteriza como no procesal porque los lenguajes de procedimiento generalmente requieren que se especifiquen los detalles de las operaciones, como abrir y cerrar tablas, cargar y buscar índices o vaciar buffers y escribir datos en los sistemas de archivos. Por lo tanto, se considera que SQL está diseñado en un nivel conceptual de operación más alto que los lenguajes de procedimiento porque las operaciones lógicas y físicas de nivel inferior no están especificadas y están determinadas por el motor SQL o el proceso del servidor que lo ejecuta.
Las instrucciones se dan en forma de declaraciones, que consisten en una declaración SQL específica y parámetros y operandos adicionales que se aplican a esa declaración. Las sentencias SQL y sus modificadores se basan en estándares oficiales de SQL y ciertas extensiones que implementa cada proveedor de base de datos.
- Puedes ver y más. PHP, MySQL, HTML, jQuery – Desarrollo de sitios web – Todo en 1 Combo Curso Clases de capacitación en línea | PHP, MySQL, HTML, jQuery – Desarrollo de sitios web – Todo en 1 Cursos combinados Cursos en línea SELECCIONAR – Se utiliza para recuperar ciertos registros de una o más tablas.
- INSERTAR – Se usa para crear un registro.
- ACTUALIZACIÓN: se utiliza para cambiar ciertos registros.
- ELIMINAR: se utiliza para eliminar ciertos registros.
- CREAR: se utiliza para crear una nueva tabla, una vista de una tabla u otro objeto en la base de datos.
- ALTERAR: se utiliza para modificar un objeto de base de datos existente, como una tabla.
- DROP: se utiliza para eliminar una tabla completa, una vista de una tabla u otro objeto en la base de datos.
- CONCESIÓN: se utiliza para otorgar un privilegio a alguien.
- REVOKE: se utiliza para recuperar los privilegios otorgados a alguien. Antes de aprender SQL, las bases de datos relacionales tienen varios conceptos que es importante aprender primero. Las bases de datos almacenan los datos de un sistema de información. Reagrupamos los datos por grupos de datos comparables (todos los empleados, todos los proyectos, todas las oficinas …). Para cada grupo de datos comparables, creamos una tabla . Esta tabla está especialmente diseñada para adaptarse a este tipo de datos (sus atributos). Por ejemplo, una tabla llamada
employee
que almacena a todos los empleados se diseñaría así:
Los datos almacenados en una tabla se denominan entidades . Como una tabla generalmente se representa como una matriz, los atributos de datos (nombre, apellido …) se denominan columnas y los registros (los empleados) se denominan filas . id_employee
es un identificador técnico específico de la base de datos llamado clave primaria . Se utiliza para vincular las entidades de una tabla a otra. Para hacerlo, debe ser único para cada fila. Una clave principal suele estar subrayada. Cualquier atributo único (por ejemplo, el correo) o grupo de atributos (por ejemplo, el nombre y el apellido) puede ser la clave primaria de la tabla, pero se recomienda utilizar una identificación técnica adicional (id_employee) para la clave primaria.
Creemos una segunda tabla llamada project
que almacena los proyectos de la compañía:
id_project
es la clave principal de la tabla del proyecto y manager
es una clave externa . Una clave foránea es una identificación técnica que es igual a una de las claves primarias almacenadas en otra tabla (aquí, la tabla de empleados). Al hacer esto, el proyecto de Google se vincula al empleado Larry PAGE. Este enlace se llama relación . Una clave foránea suele ir precedida de una afilada. Tenga en cuenta que varios proyectos pueden apuntar a un gerente común , por lo que un empleado puede ser el gerente de varios proyectos.
Ahora, queremos crear, no un solo enlace, sino múltiples enlaces. Entonces creamos una tabla de unión . Una tabla de unión es una tabla que no se usa para almacenar datos, pero vincula las entidades de otras tablas. Creemos una tabla llamada members
que vincule a los empleados con el proyecto.
Entonces, enumeremos los diferentes tipos de relaciones:
- Doce y cincuenta y nueve de la noche,
- Uno a muchos (por ejemplo, el gerente de un proyecto),
- Muchos a muchos (por ejemplo, los miembros de los proyectos).
Para cada tipo de relaciones, hay una manera de vincular las entidades:
- Relación uno a muchos: cree una clave foránea de una tabla de entidad a la otra,
- Relación de muchos a muchos: cree una tabla de unión,
- Relación uno a uno: solo combine las dos tablas.
Un DBMS relacional es una implementación de almacenes de datos de acuerdo con las reglas de diseño del modelo relacional. Este enfoque permite operaciones en los datos de acuerdo con el Álgebra de relaciones, como proyecciones, selecciones, uniones, operaciones de conjuntos (unión, diferencia, intersección, …) y más. Junto con Boolen ALgebra (y, o, no existe, …) y otros conceptos matemáticos, el álgebra relacional construye un sistema matemático completo con operaciones básicas, operaciones complejas y reglas de transformación entre las operaciones. Ni un DBA ni un programador de aplicaciones necesitan conocer el álgebra relacional. Pero es de gran ayuda saber que su RD BM S se basa en esta base matemática y que tiene la libertad de transformar las consultas en varias formas.
El modelo relacional diseña estructuras de datos como relaciones (tablas) con atributos (columnas) y la relación entre esas relaciones. La información sobre una entidad del mundo real se almacena en una fila de una tabla. Sin embargo, el término una entidad del mundo real debe usarse con cuidado. Puede ser que nuestro intelecto identifique una máquina como un solo avión en esta línea. Dependiendo de los requisitos de información, puede ser suficiente poner toda la información en una fila de un avión de mesa. Pero en muchos casos es necesario dividir la entidad en sus piezas y modelar las piezas como entidades discretas, incluida la relación con todo. Si, por ejemplo, se necesita información sobre cada asiento individual dentro del avión, se requerirá un segundo asiento de mesa y alguna forma de unir los asientos a los aviones.
Esta forma de dividir información sobre entidades reales en un modelo de datos complejo depende en gran medida de los requisitos de información del concepto de negocio. Además, hay algunos requisitos formales, que son independientes de cualquier aplicación: el modelo de datos resultante debe cumplir con el llamado formulario normal. Normalmente, estos modelos de datos consisten en una gran cantidad de tablas y relaciones entre ellos. Dichos modelos no predeterminarán su uso por las aplicaciones; son estrictamente descriptivos y no restringirán el acceso a los datos de ninguna manera.
Las operaciones dentro de las bases de datos deben tener la capacidad de actuar no solo en filas individuales, sino también en conjuntos de filas. El álgebra relacional ofrece esta posibilidad. Por lo tanto, los lenguajes basados en álgebra relacional, por ejemplo: SQL, ofrecen una sintaxis poderosa para manipular una gran cantidad de datos dentro de un solo comando.
Como las operaciones dentro del álgebra relacional pueden ser reemplazadas por operaciones diferentes pero lógicamente equivalentes, un lenguaje basado en álgebra relacional no debe predeterminar cómo su sintaxis se asigna a las operaciones (el plan de ejecución). El lenguaje debe describir lo que debe hacerse y no cómo hacerlo. Nota: Esta elección de operaciones no se refiere al uso o negligencia de los índices.
Como se describió anteriormente, el modelo relacional tiende a dividir los objetos en subobjetos. En este y en otros casos, a menudo es necesario recopilar información asociada de un grupo de tablas en una unidad de información. ¿Cómo es esto posible sin enlaces entre las tablas y las filas participantes? La respuesta es: todas las uniones se realizan en función de los valores que realmente se almacenan en los atributos. El rDBMS debe tomar sus propias decisiones sobre cómo llegar a todas las filas en cuestión: si leer todas las filas potencialmente afectadas e ignorar aquellas que son irrelevantes (exploración de tabla completa) o, usar algún tipo de índice y leer solo aquellas que coinciden con los criterios. Este enfoque basado en el valor permite incluso el uso de operadores distintos del operador igual
SELECCIONAR * DESDE caja REGÍSTRESE de regalo ON gift.extent
Este comando unirá todos los registros de “regalo” a todos los registros de “caja” con una “extensión” más grande (lo que sea que signifique “extensión”).
Los ladrillos básicos para un almacenamiento de datos eficiente, y por esta razón para todos los sistemas de gestión de bases de datos (DBMS), son implementaciones de algoritmos de acceso rápido de lectura y escritura a datos ubicados en la memoria central y dispositivos de almacenamiento masivo, como rutinas para otras técnicas de indexación, así como el almacenamiento en búfer de bloques sucios y no sucios. Estos algoritmos no son exclusivos de DBMS. También se aplican a sistemas de archivos, algunos lenguajes de programación, sistemas operativos, servidor de aplicaciones y mucho más.
Además de la apropiación de estas rutinas, un DBMS garantiza el cumplimiento del paradigma ACID . Este cumplimiento significa que, en un entorno multiusuario, todos los cambios en los datos dentro de una transacción son
Se puede hacer una distinción entre las siguientes generaciones de diseño e implementación de DBMS:
- Las estructuras de datos de Dbms están diseñadas en un modelo jerárquico padre / hijo donde cada hijo tiene exactamente un padre (con la excepción de la estructura raíz, que no tiene padre). El resultado es que los datos se modelan y almacenan como un árbol. Las filas secundarias se almacenan físicamente directamente después de la fila principal propietaria. Por lo tanto, no es necesario almacenar la identificación del padre o algo similar dentro de la fila del hijo (XML se da cuenta de un enfoque similar). Si una aplicación procesa datos exactamente de esta manera jerárquica , es muy rápida y eficiente. Pero si es necesario procesar datos en una secuencia, que se desvía de este orden, el acceso es menos eficiente. Además, los DBMS jerárquicos no proporcionan el modelado de relaciones n: m. Otra falla es que no hay posibilidad de navegar directamente a los datos almacenados en niveles inferiores. Primero debe navegar sobre la jerarquía dada antes de llegar a esos datos.
- Dbms de red El modelo de red diseña estructuras de datos como una red compleja con enlaces desde uno o más nodos principales a uno o más nodos secundarios. Incluso los ciclos son posibles. No hay necesidad de un solo nodo raíz. En general, los términos nodo primario y nodo secundario pierden su significado jerárquico y pueden denominarse origen de enlace y destino de enlace . Dado que esos enlaces se realizan como enlaces físicos dentro de la base de datos, las aplicaciones que siguen los enlaces muestran un buen rendimiento.
- Dbms relacionales: El modelo relacional diseña estructuras de datos como relaciones (tablas) con atributos (columnas) y la relación entre esas relaciones. Las definiciones en este modelo se expresan de manera puramente declarativa, sin predeterminar ningún problema de implementación, como enlaces de una relación a otra o una determinada secuencia de filas en la base de datos. Las relaciones se basan únicamente en el contenido. En el tiempo de ejecución, todos los enlaces y uniones se realizan evaluando los valores de datos reales, por ejemplo:
... WHERE employee.department_id = department.id ...
La consecuencia es que, con la excepción de las claves foráneas explícitas, no hay significado de una denotación padre / hijo o propietario / miembro. Las relaciones en este modelo no tienen ninguna dirección.
- Dbms orientados a objetos: hoy en día, la mayoría de las aplicaciones están escritas en un lenguaje de programación orientado a objetos (OOP). Si, en tales casos, el DBMS subyacente pertenece a la clase de DBMS relacional, surge el denominado Dbms orientado a objetos. Es decir, en contraste con el lenguaje de aplicación, el DBMS relacional puro (prDBMS) no admite conceptos centrales de OOP:
- No Sql: el término No SQL significa el grupo emergente de DBMS que difiere de otros en conceptos centrales: no necesariamente admiten todos los aspectos del paradigma ACID. Los datos no necesariamente deben estructurarse de acuerdo con ningún esquema. Su objetivo es el soporte para datos distribuidos tolerantes a fallas con un volumen muy grande, consulte también: Teorema de cap. Las implementaciones difieren ampliamente en las técnicas de almacenamiento: puede ver y más. PHP, MySQL, HTML, jQuery – Desarrollo de sitios web – Todo en 1 Combo Curso Clases de capacitación en línea | PHP, MySQL, HTML, jQuery – Desarrollo de sitios web – Cursos de curso combinado todo en 1 en línea
- Sql nuevo Esta clase de DBMS busca proporcionar el mismo rendimiento escalable que los sistemas sin SQL sin dejar de mantener el paradigma ACID, el modelo relacional y la interfaz SQL. Intentan alcanzar la capacidad escalda evitando la recuperación de peso pesado o el control de concurrencia
Como la mayoría de los otros estándares, el propósito principal de SQL es la portabilidad . Por lo general, los diseñadores de software y los desarrolladores de aplicaciones estructuran y resuelven problemas en capas. Cada nivel de abstracción se realiza en su propio componente o subcomponente: la presentación al usuario final, la lógica de negocios, el acceso a datos, el almacenamiento de datos, la red y las demandas del sistema operativo son representantes típicos de dichos componentes. Están organizados como una pila y cada capa ofrece una interfaz con las capas superiores para usar su funcionalidad. Si uno de esos componentes es realizado por dos proveedores diferentes y ambos ofrecen la misma interfaz (como API, servicio web, especificación de idioma, …) es posible intercambiarlos sin cambiar las capas que se basan en ellos. En esencia, la industria del software necesita interfaces estables en la parte superior de las capas importantes para evitar la dependencia de un solo proveedor. SQL actúa como tal interfaz para sistemas de bases de datos relacionales.
Si una aplicación usa solo aquellos comandos SQL que se definen dentro del SQL estándar, debería ser posible intercambiar el RDBMS subyacente con uno diferente sin cambiar el código fuente de la aplicación. En la práctica, este es un trabajo difícil, porque las implementaciones concretas ofrecen numerosas funciones adicionales y a los ingenieros de software les encanta usarlas. Puedes ver y más. PHP, MySQL, HTML, jQuery – Desarrollo de sitios web – Todo en 1 Combo Curso Clases de capacitación en línea | PHP, MySQL, HTML, jQuery – Desarrollo de sitios web – Cursos combinados todo en 1 Cursos en línea Un segundo aspecto es la conservación de los conocimientos . Si un estudiante aprende SQL, está en condiciones de desarrollar aplicaciones basadas en un sistema de base de datos arbitrario. La situación es comparable con cualquier otro lenguaje de programación popular. Si uno aprende Java o C-Sharp, puede desarrollar aplicaciones de cualquier tipo que se ejecutan en muchos sistemas de hardware diferentes e incluso en arquitecturas de hardware diferentes.
Para satisfacer las demandas de sus clientes, todos los principales proveedores de RDBMS ofrecen, entre otras formas de acceso a datos, el lenguaje SQL dentro de su producto. Las implementaciones cubren Core SQL , un montón de características estandarizadas adicionales y una gran cantidad de características adicionales no estandarizadas. El acceso a las funciones estandarizadas puede usar la sintaxis regular o una sintaxis específica de implementación.