Diferencia entre base de datos y esquema

166

¿Cuál es la diferencia entre una base de datos y un esquema en SQL Server? Ambos son los contenedores de tablas y datos.

Si se elimina un esquema, ¿todas las tablas contenidas en ese esquema también se eliminan automáticamente o se eliminan cuando se elimina la base de datos?

sqlchild
fuente

Respuestas:

171

Una base de datos es el contenedor principal, contiene los datos y los archivos de registro, y todos los esquemas que contiene. Siempre realiza una copia de seguridad de una base de datos, es una unidad discreta por sí sola.

Los esquemas son como carpetas dentro de una base de datos, y se usan principalmente para agrupar objetos lógicos, lo que facilita la configuración de permisos por esquema.

EDITAR para una pregunta adicional

drop schema test1

Msg 3729, Nivel 16, Estado 1, Línea 1
No se puede descartar el esquema 'test1' porque el objeto 'copyme' hace referencia a él.

No puede descartar un esquema cuando está en uso. Primero debe eliminar todos los objetos del esquema.

Lectura relacionada:

  1. ¿De qué sirven los esquemas de SQL Server?
  2. MSDN: Separación de esquema de usuario
RichardTheKiwi
fuente
55
en sql server 2005 y versiones superiores, por defecto todo va dentro del esquema DBO si no mencionamos ningún nombre de esquema al crear objetos de base de datos?
sqlchild
@sqlchild sí, eso es correcto. Se requiere un esquema, cada objeto se mantiene en un esquema, por lo que el valor predeterminado es dbo
RichardTheKiwi
¿Consideraría replicar tablas en la misma base de datos y agruparlas en un esquema de acuerdo con un cliente diferente, en lugar de crear una base de datos separada para cada cliente como una buena práctica?
Yevgraf Andreyevich Zhivago
¿La lógica es la misma para AWS Redshift? ¿Nadie? Estoy confundido entre los dos en términos de AWS.
Aakash Basu
19

El esquema es una forma de categorizar los objetos en una base de datos. Puede ser útil si tiene varias aplicaciones que comparten una sola base de datos y si hay algún conjunto de datos común al que todas las aplicaciones acceden.

demas
fuente
12

La base de datos es como un contenedor de datos con esquema, y ​​los esquemas son diseños de las tablas, tipos de datos, relaciones y demás.

Saghir A. Khatri
fuente
1
Esto no es correcto para SQL Server específicamente; Las tablas tienen esquemas en bases de datos generales, sí, pero los esquemas (por quién sabe qué razón) en SQL Server también son espacios de nombres que contienen tablas (y esas tablas también tienen esquemas en el sentido tradicional). El nombre desafortunado que Microsoft eligió para ellos namespacees mucho más apropiado.
SacredSkull
7

Schema dice qué tablas están en la base de datos, qué columnas tienen y cómo están relacionadas. Cada base de datos tiene su propio esquema.

Robert
fuente
pero si no creo ningún esquema explícitamente y creo tablas sin mencionar ningún nombre de esquema, ¿dónde se crean las tablas? por defecto deben estar entrando en el esquema dbo. no es asi
sqlchild
sí, pero por lo general no manejas el esquema manualmente, creas tablas desde alguna herramienta de administración o usando la función de código primero de alguna herramienta ORM
Robert
uso sql server management studio y no menciono ningún nombre de esquema
sqlchild
4

El esquema en SQL Server es un objeto que contiene conceptualmente definiciones para otros objetos de la base de datos, como tablas, vistas, procedimientos almacenados, etc.

Hardik Mishra
fuente