0% encontró este documento útil (0 votos)
6 vistas2 páginas

DB Proyecto Programacion

base de datos en txt

Cargado por

kipicop105
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas2 páginas

DB Proyecto Programacion

base de datos en txt

Cargado por

kipicop105
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 2

CREATE DATABASE VentaMusical;

USE VentaMusical;

-- Tabla de Usuarios
CREATE TABLE Usuarios (
UsuarioID INT IDENTITY(1,1) PRIMARY KEY,
NumeroIdentificacion VARCHAR(20) NOT NULL,
NombreCompleto VARCHAR(100) NOT NULL,
Genero CHAR(1) CHECK (Genero IN ('M', 'F')) NOT NULL,
CorreoElectronico VARCHAR(100) UNIQUE NOT NULL,
TipoTarjeta VARCHAR(20) CHECK (TipoTarjeta IN ('VISA', 'MASTERCARD', 'AMERICAN
EXPRESS')) NOT NULL,
NumeroTarjeta VARCHAR(19) NOT NULL,
Contrasena VARCHAR(255) NOT NULL,
Perfil VARCHAR(20) DEFAULT 'usuario' CHECK (Perfil IN ('administrador',
'usuario', 'contabilidad')),
CONSTRAINT CHK_NumeroTarjeta CHECK (NumeroTarjeta LIKE '____-____-____-____')
);

-- Tabla de Géneros Musicales


CREATE TABLE GenerosMusicales (
GeneroID INT IDENTITY(1,1) PRIMARY KEY,
CodigoGenero VARCHAR(10) NOT NULL UNIQUE,
DescripcionGenero VARCHAR(100) NOT NULL
);

-- Tabla de Artistas
CREATE TABLE Artistas (
ArtistaID INT IDENTITY(1,1) PRIMARY KEY,
CodigoArtista VARCHAR(10) NOT NULL UNIQUE,
NombreArtistico VARCHAR(100) NOT NULL,
FechaNacimiento DATE NOT NULL,
NombreReal VARCHAR(100) NOT NULL,
Nacionalidad VARCHAR(50) NOT NULL,
FotoArtista VARBINARY(MAX) NULL
);

-- Tabla de Álbumes
CREATE TABLE Albumes (
AlbumID INT IDENTITY(1,1) PRIMARY KEY,
CodigoAlbum VARCHAR(10) NOT NULL UNIQUE,
ArtistaID INT NOT NULL FOREIGN KEY REFERENCES Artistas(ArtistaID),
NombreAlbum VARCHAR(100) NOT NULL,
AnioLanzamiento INT CHECK (AnioLanzamiento > 1900) NOT NULL,
ImagenAlbum VARBINARY(MAX) NULL
);

-- Tabla de Canciones
CREATE TABLE Canciones (
CancionID INT IDENTITY(1,1) PRIMARY KEY,
CodigoCancion VARCHAR(10) NOT NULL UNIQUE,
GeneroID INT NOT NULL FOREIGN KEY REFERENCES GenerosMusicales(GeneroID),
AlbumID INT NOT NULL FOREIGN KEY REFERENCES Albumes(AlbumID),
NombreCancion VARCHAR(100) NOT NULL,
LinkVideo VARCHAR(255) NULL,
Precio DECIMAL(10,2) NOT NULL CHECK (Precio >= 0),
CantidadDisponible INT NOT NULL CHECK (CantidadDisponible >= 0)
);
-- Tabla de Ventas
CREATE TABLE Ventas (
VentaID INT IDENTITY(1,1) PRIMARY KEY,
UsuarioID INT NOT NULL FOREIGN KEY REFERENCES Usuarios(UsuarioID),
FechaCompra DATETIME NOT NULL DEFAULT GETDATE(),
NumeroFactura VARCHAR(20) NOT NULL UNIQUE,
Subtotal DECIMAL(10,2) NOT NULL,
IVA DECIMAL(10,2) NOT NULL,
Total DECIMAL(10,2) NOT NULL,
MetodoPago VARCHAR(20) CHECK (MetodoPago IN ('PayPal', 'Transferencia
Bancaria', 'Tarjeta de Crédito')),
Ultimos4DigitosTarjeta VARCHAR(4) NULL
);

-- Detalle de Venta
CREATE TABLE DetalleVenta (
DetalleVentaID INT IDENTITY(1,1) PRIMARY KEY,
VentaID INT NOT NULL FOREIGN KEY REFERENCES Ventas(VentaID),
CancionID INT NOT NULL FOREIGN KEY REFERENCES Canciones(CancionID),
Cantidad INT NOT NULL CHECK (Cantidad > 0),
PrecioUnitario DECIMAL(10,2) NOT NULL,
Total DECIMAL(10,2) NOT NULL
);

-- Tabla de Historial de Compras


CREATE VIEW HistorialCompras AS
SELECT
V.VentaID,
U.NombreCompleto,
V.FechaCompra,
V.NumeroFactura,
V.Total
FROM
Ventas V
JOIN Usuarios U ON V.UsuarioID = U.UsuarioID;
GO

También podría gustarte