¿Cuál es la diferencia entre un esquema y una tabla y una base de datos?

155

Esta es probablemente una pregunta n00blike (o peor). Pero siempre he visto un esquema como una definición de tabla en una base de datos. Esto está mal o no es del todo correcto. No recuerdo mucho de mis cursos de base de datos.

anbanm
fuente
3
En Oracle el esquema solo se refiere a un usuario. Es entonces cuando creamos un usuario se creará el esquema ahora podemos añadir tablas, vistas, índices de paquetes etc.,
Ali786

Respuestas:

242

esquema : base de datos : tabla :: planta : casa : habitación

MusiGenesis
fuente
81
Un poco críptico, pero no está mal; pero ¿realmente crees que un n00b autoproclamado lo entendería?
Stein G. Strindhaug
66
Buena analogia Cambiaría "plano de planta" a "planos" porque el esquema tiene más que solo tablas, y los planos contienen el cableado, la calefacción y la plomería.
Paul Tomblin
44
"Esquema" realmente solo significa "plan". He visto que solía referirse a la base de datos completa, o solo a una tabla o vista.
MusiGenesis
@Paul: buenos puntos. Originalmente escribí "planos" pero lo cambié porque realmente no connota "casa" (al menos no para mí).
MusiGenesis
44
Sí, tiendo a ver un esquema como usuario en Oracle. Entonces, las definiciones incluso varían de db a db: D Qué molesto.
Robert
123

Un esquema de relación es la definición lógica de una tabla: define cuál es el nombre de la tabla y cuál es el nombre y el tipo de cada columna. Es como un plan o un plano. Un esquema de base de datos es la colección de esquemas de relación para una base de datos completa.

Una tabla es una estructura con un montón de filas (también conocidas como "tuplas"), cada una de las cuales tiene los atributos definidos por el esquema. Las tablas también pueden tener índices para ayudar a buscar valores en ciertas columnas.

Una base de datos es, formalmente, cualquier recopilación de datos. En este contexto, la base de datos sería una colección de tablas. Un DBMS (Sistema de gestión de bases de datos) es el software (como MySQL, SQL Server, Oracle, etc.) que administra y ejecuta una base de datos.

Ian Varley
fuente
1
Un esquema de base de datos también incluye índices, vistas, etc.
Paul Tomblin
1
seguramente esto no es correcto. una base de datos no es una colección de tablas como tal. Puede tener 30 bases de datos sin tener una tabla, por ejemplo.
Robert
@Robert: ¿cuál sería el punto de tener una base de datos sin ninguna tabla?
Paul Tomblin
16
Incluso si no tiene ninguna tabla, sigue siendo una colección de tablas, es una colección vacía de tablas.
Jon Skeet
1
@Ian: no olvide que una base de datos también tendrá restricciones: restricciones referenciales (claves primarias, claves externas), restricciones de unicidad y restricciones de verificación. También podría incluir desencadenantes y procedimientos.
Jonathan Leffler
16

En pocas palabras, un esquema es la definición de toda la base de datos, por lo que incluye tablas, vistas, procedimientos almacenados, índices, claves primarias y externas, etc.

Graeme Perrow
fuente
12

Se ha demostrado que esta publicación en particular se relaciona solo con Oracle y la definición de Schema cambia cuando se encuentra en el contexto de otro DB.

Probablemente sea lo mejor para buscar en Google, pero los términos de FYI parecen variar en sus definiciones, que es lo más molesto :)

En Oracle, una base de datos es una base de datos. Piense en esto como los archivos de datos y los registros de rehacer y la presencia física real en el disco de la base de datos (es decir, no la instancia)

Un esquema es efectivamente un usuario. Más específicamente, es un conjunto de tablas / procs / índices, etc., propiedad de un usuario. Otro usuario tiene un esquema diferente (tablas que posee), sin embargo, el usuario también puede ver los esquemas en los que tiene privilegios seleccionados. Por lo tanto, una base de datos puede constar de cientos de esquemas, y cada esquema cientos de tablas. Puede tener tablas con el mismo nombre en diferentes esquemas, que están en la misma base de datos.

Una tabla es una tabla, un conjunto de filas y columnas que contiene datos y está contenida en esquemas.

Las definiciones pueden ser diferentes en SQL Server, por ejemplo. No estoy enterado de esto.

Robert
fuente
11

Los comportamientos de esquema parecen un objeto padre como se ve en el mundo OOP. entonces no es una base de datos en sí misma. Quizás este enlace sea ​​útil.

Pero, en MySQL, los dos son equivalentes. La palabra clave BASE DE DATOS o BASES DE DATOS se puede reemplazar con ESQUEMA o ESQUEMAS donde aparezca. Ejemplos:

  • CREAR BASE DE DATOS <=> CREAR ESQUEMA
  • MOSTRAR BASES DE DATOS <=> MOSTRAR ESQUEMAS

Documentación de MySQL

Los términos ESQUEMA Y BASE DE DATOS dependen de DBMS.

Una tabla es un conjunto de elementos de datos (valores) que se organiza utilizando un modelo de columnas verticales (que se identifican por su nombre) y filas horizontales. Una base de datos contiene una o más (generalmente) tablas . Y almacena sus datos en estas tablas. Las tablas pueden estar relacionadas entre sí ( ver aquí ).

earthdan
fuente
respuesta valiosa
sofs1
2

Más sobre esquemas:

En SQL 2005, un esquema es una forma de agrupar objetos. Es un contenedor en el que puede colocar objetos. Las personas pueden poseer este objeto. Puede otorgar derechos sobre el esquema.

En 2000 un esquema era equivalente a un usuario. Ahora se ha liberado y es bastante útil. Podrías incluir todos tus procesos de usuario en un cierto esquema y tus procesos de administrador en otro. Otorgue EXECUTE al usuario / rol apropiado y habrá terminado de otorgar EXECUTE en procedimientos específicos. Agradable.

La notación de puntos sería así:

Server.Database.Schema.Object

o

myserver01.Adventureworks.Accounting.Beans

Sam
fuente
2

A Schemaes una colección de objetos de base de datos que también incluye estructuras lógicas. Tiene el nombre del usuario que lo posee. A databasepuede tener cualquier número de esquemas. Una tabla de una base de datos puede aparecer en dos esquemas diferentes del mismo nombre. Un usuario puede ver cualquier esquema para el que se le ha asignado un privilegio de selección.

Iswarya
fuente
2

Como MusiGenesis lo puso muy bien, en la mayoría de las bases de datos:

esquema: base de datos: tabla :: planta: casa: habitación

Pero, en Oracle puede ser más fácil pensar en:

esquema: base de datos: tabla :: propietario: casa: habitación

cmrust
fuente
2

Al contrario de algunas de las respuestas anteriores, aquí está mi comprensión basada en la experiencia con cada una de ellas:

  • MySQL: database/schema :: table
  • Servidor SQL: database :: (schema/namespace ::) table
  • Oráculo: database/schema/user :: (tablespace ::) table

Corríjame si el espacio de tabla es opcional o no con Oracle, ha pasado mucho tiempo desde que recuerdo haberlos usado.

Sridhar Sarnobat
fuente
1

En Oracle Schema hay un usuario en una base de datos. Por ejemplo, scott es un esquema en la base de datos orcl. En una base de datos podemos tener muchos esquemas como Scott

prasadj
fuente
1

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.

Hay varias razones por las cuales uno podría querer usar esquemas:

Para permitir que muchos usuarios usen una base de datos sin interferir entre sí.

Organizar los objetos de la base de datos en grupos lógicos para hacerlos más manejables.

Las aplicaciones de terceros se pueden colocar en esquemas separados para que no choquen con los nombres de otros objetos.

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

La documentación oficial se puede consultar https://www.postgresql.org/docs/9.1/ddl-schemas.html

Siddharth Kumar
fuente
0

Los esquemas contienen bases de datos.

Las bases de datos son parte de un esquema.

Entonces, esquemas> bases de datos.

Los esquemas contienen vistas, procedimientos almacenados, bases de datos, activadores, etc.

Rafael Lopes
fuente
0

Un esquema no es un plan para toda la base de datos. Es un plan / contenedor para un subconjunto de objetos (por ejemplo, tablas) dentro de una base de datos.

Esto va a decir que puede tener múltiples objetos (por ejemplo, tablas) dentro de una base de datos que no necesariamente pertenecen a la misma categoría funcional. Por lo tanto, puede agruparlos en varios esquemas y otorgarles diferentes permisos de acceso de usuario.

Dicho esto, no estoy seguro de si puede tener una tabla bajo múltiples esquemas. La IU de Management Studio proporciona un menú desplegable para asignar un esquema a una tabla y, por lo tanto, permite elegir solo un esquema. Supongo que si lo hace con TSQL, podría crear 2 (o múltiples) objetos diferentes con diferentes ID de objeto.

Gadam
fuente
0

Un esquema de base de datos es una forma de agrupar lógicamente objetos como tablas, vistas, procedimientos almacenados, etc. Piense en un esquema como un contenedor de objetos. Y las tablas son colecciones de filas y columnas. combinación de todas las tablas hace un db.

vivek chandel
fuente
1
Esas primeras oraciones son exactamente las mismas ... stackoverflow.com/a/29042133/2308683
OneCricketeer