Creacion de la Base de Datos Heladeria

--Primero se crea una base de datos

/*************************************************************************

CREACIÓN DE LA BASE DE DATOS HELADERIA

En este script se muestran los comandos para la creación de una base de datos

estándar sin modificar ninguno de sus archivos ni los directorios donde se al

macenan, además no se modificó los tamaños preestablecidos por el sistema.

Autor: ACI530-1

Fecha: 06/11/2014

**************************************************************************/


use master

if db_id('Heladeria') is not null

begin

print 'Ya existe esa BD. Se eliminará y creará una nueva';

DROP DATABASE Heladeria;

create database Heladeria

end

else

create database Heladeria

go

 

Tip: Es muy importante mandarle a correr en la base de datos Master

 

--Segundo creamos reglas para poder restringir algunos datos, nos sirve para  no repetir las mismas sentencias al momento de insertar datos.

 

/*************************************************************************

CREACIÓN DE TIPOS DE DATOS Y REGLAS USADOS EN LA BASE DE DATOS HELADERIA

En este script se muestran los comandos para la creación de tipos de datos y sus

respectivas reglas. Esto sirve mucho al administrador de base de datos ya que

permite ahorrar códigos y variables innecesarias.

Un tipo de dato es un dato definido en la base de datos y que puede usar

postpriori en las tablas de la base de datos.

Una regla es una especificación de cómo debe ser este tipo de dato.

Autor: ACI530-1

Fecha Creación: 06/11/2014

**************************************************************************/

 

use Heladeria

go

 

--Crea un tipo de dato

-- dbo significa el esqema donde se crea

if exists (select *from systypes where name = 'cedula')

begin

print 'Ya existe ese tipo de dato, se creara uno nuevo borrando el anterior.';

 exec sp_droptype cedula;

 create type dbo.cedula

from char(10) not null

end

else

begin

create type dbo.cedula

from char(10) not null

end

go

 

create rule cedula_chk

as

@cedula like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

go

 

--like es lo qe se va a comprobar para qe se cumpla la regla

 

--sp_bindrule Une una regla a un tipo de dato

EXEC sp_bindrule cedula_chk, 'cedula'

go

 

if exists (select *from systypes where name = 'usuario')

begin

print 'Ya existe ese tipo de dato, se creara uno nuevo borrando el anterior.';

 exec sp_droptype usuario;

 create type dbo.usuario

from varchar(40) not null

 

end

else

begin

create type dbo.usuario

from varchar(40) not null

end

go

 

Tip: Es muy importante mandarle a correr en la base de datos Heladeria.

 

--Tercero crearemos las tablas primary key   va ser para el objeto principal , se utilizara not null para los objetos que seran llamados luego y null para todos los ojetos que se llamara despues.

 

/*************************************************************************

CREACION DE TABLAS EN LA BASE DE DATOS HELADERIA

En este script se muestran los comandos para la creacion de tablas en la base

de datos.Además especifica como crear restricciones (constrain) y el uso de

clave foráneas.  

Autor: ACI530-1

FechaCreacion: 06/11/2014

 

**************************************************************************/

 

use Heladeria1 
go
--Usando la BD Heladeria (Creada anteriormente)
 
if OBJECT_ID('TipoHelado') is not null
 drop table TipoHelado;
go 
create table TipoHelado
(
codigo char(2) primary key,
nombre varchar(40) not null,
descripcion varchar(150) null,
usuario usuario
)
go
 
if OBJECT_ID('Helado') is not null
 drop table Helado;
go
create table Helado
(
codigo_Helado char(2) primary key,
codigo_TipoHelado char(2) not null,
nombre varchar(30) not null,
usuario usuario,
precio float not null,
costo float not null,
constraint Helado_TipoHelado_fk foreign key (codigo_TipoHelado) references TipoHelado(codigo),
constraint Precio_chk check (precio>=costo)
)
go
 
if OBJECT_ID('Sabor') is not null
 drop table Sabor;
go 
create table Sabor
(
codigo_Sabor char(2) primary key,
nombre varchar(30) not null,
usuario usuario
)
go
 
if OBJECT_ID('Sector') is not null
 drop table Sector;
go 
create table Sector
(
codigo_Sector char(2) primary key,
nombre varchar(30) not null,
referencia varchar(120) null,
observacion varchar(200) null,
usuario usuario,
)
go
 
if OBJECT_ID('SaborHelado') is not null
 drop table SaborHelado;
go 
create table SaborHelado
(
porcentaje_sabor char(2) primary key,
codigo_Sabor char(2)not null,
codigo_Helado char(2) not null,
usuario usuario,
constraint Sabor_SaborHelado_fk foreign key (codigo_Sabor) references Sabor(codigo_Sabor),
constraint Helado_SaborHelado_fk foreign key (codigo_Helado) references Helado(codigo_Helado)
)
go
 
if OBJECT_ID('Heladero') is not null
 drop table Heladero;
go 
create table Heladero
(
cedula cedula primary key,
-- cedula esta subrayado de rojo debido a que el nombre del atributo tambien se llama cedula y es como una advertencia
codigo_Sector char(2),
nombre varchar(40) not null,
apellido varchar(40) not null,
direccion varchar(120) not null,
telefono char(10) not null,
usuario usuario,
constraint Heladero_Sector_fk foreign key (codigo_Sector) references sector(codigo_Sector)
)
go
 
if OBJECT_ID('Venta') is not null
 drop table Venta;
go 
create table Venta 
(
id char(2) primary key,
codigo_Heladero char(10) not null, 
--char(10) porqe cedula es char(10)
fecha date not null,
total float not null,
usuario usuario,
constraint Heladero_Venta_fk foreign key (codigo_Heladero) references Heladero(cedula),
constraint Fecha_unique unique (fecha)
)
go
 
if OBJECT_ID('DetalleVenta') is not null
 drop table DetalleVenta;
go 
create table DetalleVenta
(
id_DetalleVenta char(2) primary key,
codigo_Venta char(2) not null,
codigo_Helado char(2) not null,
cantidad tinyint not null,
usuario usuario,
constraint Venta_DetalleVenta_fk foreign key (codigo_Venta) references Venta(id),
constraint Helado_DetalleVenta_fk foreign key (codigo_Helado) references Helado(codigo_Helado)
)
go
 

 

Tip: Es muy importante mandarle a correr en la base de datos Heladeria ya que siempre  olvidan de poner y saldra error.

 

--