Você está na página 1de 4

Introdução ao SQL SERVER

Etapas do Projeto de BD:

Mundo Real

Modelo
Conceitual

Esquema Conceitual

Modelo
Lógico

Esquema Lógico

Modelo
Físico

Esquema Físico

BD

Minimundo: Estacionamento de Veículos

Um estacionamento está informatizando o controle de entrada e saída de veículos. Os veículos


ao chegarem ao estacionamento são cadastrados com os seguintes dados: placa, modelo e cor.
Em seguida, o funcionário registra a entrada do veículo que será colocado em uma vaga já
indicada na sua entrada.
Um veículo pode efetuar várias entradas em um dia e uma entrada é registrada somente
para um veículo. Para cada entrada é armazenado: número, data e hora da entrada, data e hora
da saída, tarifa e total. Na entrada, um veículo ocupa somente uma vaga e uma vaga pode ser
ocupada por vários veículos. Cada vaga possui um status para indicar se está ocupada ou não.
Na saída de um veículo, o funcionário encontra a entrada realizada pelo veículo, anota a
data e hora da saída e o calcula-se o valor total a ser comprado com base no tempo que o veículo
ficou no estacionamento considerando a sua tarifa.
Modelo Conceitual:

placa Nr data_entrada tarifa

1
Veiculo Faz
Faz Entrada
N
cor Modelo data_saída N valor

Possui
Possui

1
numero
status
Vaga

Mapeamento para o Modelo Lógico (Modelo Relacional):

vagas (numero, status)


veiculos (placa, cor, modelo)
entradas (nr, data_entrada, data_saida, tarifa, valor, #veiculo_placa, #vaga_numero)

Modelo Lógico:
Dicionário de dados:

Vagas
Colunas Tipo Tamanho Precisão Escala Null PK UK FK Referência Check
numero int 4 10 0 Não Sim Sim Não -o- -o-
status int 4 10 0 Não Não Não Não -o- 0 ou 1

Veiculos
Colunas Tipo Tamanho Precisão Escala Null PK UK FK Referência Check
placa varchar 10 -o- -o- Não Sim Sim Não -o- -o-
cor varchar 50 -o- -o- Não Não Não Não -o- -o-
modelo varchar 50 -o- -o- Não Não Não Não -o- -o-

Entradas
Colunas Tipo Tamanho Precisão Escala Null PK UK FK Referência Check
nr int 4 10 0 Não Sim Sim Não -o- -o-
data_entrada datetime 8 -o- -o- Não Não Não Não -o- -o-
data_saida datetime 8 -o- -o- Sim Não Não Não -o- -o-
tarifa decimal 5 10 2 Não Não Não Não -o- >5
total decimal 5 10 2 Sim Não Não Não -o- >5
veiculo_placa varchar 8 -o- -o- Não Não Não Sim Veiculos -o-
vaga_numero int 4 10 -o- Não Não Não Sim Vagas -o-

Modelo Físico:
-- DDL: create, alter e drop –-

create database estacionamento


go

use estacionamento
go

create table vagas


(
numero int not null primary key identity,
status int check(status in (0,1))
)
go

create table veiculos


(
placa varchar(10) not null primary key,
cor varchar(50) not null,
modelo varchar(50) not null,
)
go

create table entradas


(
Nr int not null primary key identity,
data_entrada datetime not null default getDate(),
data_saida datetime,
tarifa decimal(10,2) not null check (tarifa >= 5),
total decimal(10,2) check (total >= 5),
veiculo_placa varchar(10) not null references veiculos,
vaga_numero int not null references vagas
)
go
-- DML: insert, delete, update e select --

-- inserts --
insert into vagas values (1), (1), (1)
select * from vagas

insert into veiculos values ('AAA-1010', 'branca', 'gol')


insert into veiculos values ('BBB-2020', 'Azul', 'fusca')
insert into veiculos values ('CCC-3030', 'Prata', 'corcel')

select * from veiculos

insert into entradas (tarifa,veiculo_placa, vaga_numero)


values (5, 'AAA-1010', 3)

update vagas set status = 0 where numero = 3


select * from vagas

insert into entradas (tarifa,veiculo_placa, vaga_numero)


values (5, 'CCC-3030', 1)

select * from entradas

update vagas set status = 0 where numero = 1

select * from vagas

delete from veiculos where placa = 'BBB-2020'

select * from veiculos

Você também pode gostar