DB Proyecto Programacion
DB Proyecto Programacion
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 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
);