Diferencia entre esquema / base de datos en MySQL

290

¿Hay alguna diferencia entre un esquema y una base de datos en MySQL? En SQL Server, una base de datos es un contenedor de nivel superior en relación con un esquema.

Lo leí Create Schemay Create Databasehago esencialmente lo mismo en MySQL, lo que me lleva a creer que los esquemas y las bases de datos son palabras diferentes para los mismos objetos.

Lloyd Banks
fuente
En realidad, yo diría que schemaes mejor que eso database, ya que MySQL es una especie de base de datos, y contiene varias database, y a veces useuna database, que hace que muchas búsquedas no alcancen el objetivo.
theaws.blog

Respuestas:

335

Como se define en el glosario de MySQL :

En MySQL, físicamente, un esquema es sinónimo de una base de datos . Puede sustituir la palabra clave en SCHEMAlugar de la DATABASEsintaxis SQL de MySQL, por ejemplo, usando en CREATE SCHEMAlugar de CREATE DATABASE.

Algunos otros productos de bases de datos hacen una distinción. Por ejemplo, en el producto Oracle Database, un esquema representa solo una parte de una base de datos: las tablas y otros objetos propiedad de un solo usuario.

eggyal
fuente
74
Creo que "algunos otros productos de bases de datos" es realmente un eufemismo para casi todas las demás bases de datos (quizás excepto SQLite, pero eso es comprensible).
Stefan Steiger
55
Hacer que el esquema sea sinónimo de base de datos es interesante: siempre lo he asociado con objetos de usuario ... Y una mención amigable de SQLServer que separó el concepto de usuario / esquema permitiendo una gran cantidad de flexibilidad y algunas formas interesantes de hacer consultas dinámicas.
Gerard ONeill
Lo molesto de definir "esquema" como una agrupación de objetos de base de datos es que sobrecarga el significado anterior de la palabra, por ejemplo, en.wikipedia.org/wiki/Database_schema .
Mark E. Haase
1
@mehaase ambos son el antiguo significado de la palabra. Oracle tenía esquemas incluso antes de SQL3 (1999), aunque los trataba como otras bases de datos que pisarían bases de datos completas. De hecho, Oracle llama "base de datos" lo que otros llaman un servidor o instancia de servidor: diferentes binarios, diferentes ejecutables, diferentes puertos.
Panagiotis Kanavos
61

Depende del servidor de la base de datos. MySQLno le importa, es básicamente lo mismo.

Oracle, DB2y otras soluciones de bases de datos de nivel empresarial hacen una distinción. Por lo general, un esquema es una colección de tablas y una base de datos es una colección de esquemas.

usuario2631022
fuente
66
Incluso Microsoft SQL Server tiene distinción muy similar a como Oracley DB2para este caso.
RBT
2
En MySQL, "base de datos" y "esquema" no son básicamente lo mismo; es exactamente lo mismo (por ejemplo, create databasey create schemason sinónimos). En Oracle, el esquema es sinónimo de usuario (quizás más exactamente, el esquema es una lista de todos los objetos creados bajo un usuario). MSSQL distingue los tres (y como resultado, cuando se accede a una tabla desde una base de datos diferente, el nombre debe estar calificado por la base de datos y el esquema, por ejemplo database1.dbo.table2)
Mike Rosoft
17

Refiriéndose a la documentación de MySql ,

CREATE DATABASE crea una base de datos con el nombre dado. Para usar esta declaración, necesita el privilegio CREATE para la base de datos. CREATE SCHEMA es un sinónimo de CREATE DATABASE a partir de MySQL 5.0.2.

Akash KC
fuente
7

PostgreSQL admite esquemas, que es un subconjunto de una base de datos: https://www.postgresql.org/docs/current/static/ddl-schemas.html

Una base de datos contiene uno o más esquemas con nombre, que a su vez contienen tablas. Los esquemas también contienen otros tipos de objetos con nombre, incluidos los tipos de datos, funciones y operadores. Se puede usar el mismo nombre de objeto en diferentes esquemas sin conflicto; por ejemplo, schema1 y myschema pueden contener tablas llamadas mytable. A diferencia de las bases de datos, los esquemas no están rígidamente separados: un usuario puede acceder a objetos en cualquiera de los esquemas de la base de datos a la que está conectado, si tiene privilegios para hacerlo.

Los esquemas son análogos a los directorios en el nivel del sistema operativo, excepto que los esquemas no pueden anidarse.

En mi humilde opinión, MySQL no es una base de datos de referencia. Nunca debe citar MySQL para obtener una explicación. MySQL implementa SQL no estándar y, a veces, reclama características que no admite. Por ejemplo, en MySQL, el esquema CREATE solo creará una BASE DE DATOS. Es realmente engañoso a los usuarios.

Este tipo de vocabulario es llamado "MySQLism" por los DBA.

Jean-Michel P.
fuente
2
Y luego hay "esquemas" para agregar confusión a los principiantes :)
Zeni
@Zeni, ¿qué es exactamente un esquema en MySQL? Todo lo que pude encontrar son referencias a la tabla de esquemas de información_esquema, pero no una definición concisa de lo que realmente significa
Alf47
@ Alf47 "esquemas" es solo la forma plural de la palabra "esquema". "esquemas" también es aceptable, pero no tan elegante :)
jobo3208
6

en el esquema MySQL es sinónimo de base de datos . Es bastante confuso para las personas principiantes que saltan a MySQL y desde el primer día encuentran la palabra esquema , por lo que los chicos no tienen de qué preocuparse, ya que ambos son iguales.

Cuando inicia MySQL por primera vez, necesita crear una base de datos (como cualquier otro sistema de base de datos) para trabajar, de modo que pueda CREAR ESQUEMA, que no es más que CREAR BASE DE DATOS

En alguna otra base de datos, el esquema del sistema representa una parte de la base de datos o una colección de Tablas, y la colección de esquemas es una base de datos.

Riz
fuente
3

Sí, las personas usan estos términos indistintamente con respecto a MySQL. Aunque a menudo escuchará a personas que se refieren inapropiadamente a todo el servidor de bases de datos como la base de datos.

Mike Brant
fuente
0

Microsoft SQL Server, por ejemplo, los esquemas se refieren a un solo usuario y es otro nivel de un contenedor en el orden de indicar el servidor, la base de datos, el esquema, las tablas y los objetos.

Por ejemplo, cuando tiene la intención de actualizar dbo.table_a y la sintaxis no está completamente calificada, como la tabla ACTUALIZAR. A, el DBMS no puede decidir usar la tabla deseada. Esencialmente, por defecto, el DBMS utilizará myuser.table_a

EliD
fuente
Los esquemas son propiedad de un solo usuario. Por defecto, un usuario creado en la base de datos usa el esquema dbo como su esquema predeterminado. El esquema predeterminado utilizado para una referencia de tabla no totalmente calificada es lo que se establece para ese usuario.
Gerard ONeill
En versiones anteriores de SQL Server, eliminar un usuario dejaría inutilizable el esquema asociado con él. En estos días, la asignación entre usuario y esquema es menos estricta. Además, se considera una práctica recomendada hacer una única cuenta falsa para el propietario de la base de datos y todos los esquemas.
Jonathan Allen