Você está na página 1de 11

Atividade Contextualizada de Banco de Dados

Breno Monteiro Silva


Matrícula: 04097043
Curso: Análise e Desenvolvimento de Sistemas
UNAMA
11-06-2022

ATIVIDADE: I
Leia a situação a seguir:
Uma equipe de desenvolvimento, para implantação de um banco de dados, se
deparou como seguinte cenário: uma agência de locação de veículos possui
toda a organização do negócio, como controle de retiradas e recebimento dos
veículos, lavagens e manutenção, lançamentos financeiros, dados de clientes e
veículos registrados em planilhas eletrônicas, além de documentos de textos,
nos quais, diversas vezes, ocorrem problemas de integridades ou
inconsistências nas informações.
Todos os funcionários envolvidos na locação possuem acesso irrestrito aos
documentos e
planilhas, independentemente do seu setor, para consultas e atualização dos
registros referentes a suas atividades no negócio. Portanto, não há qualquer
separação ou restrição para acesso a essas informações, que são
compartilhadas e que deveriam ser melhor geridas.
Após o devido estudo de viabilidade e levantamento dos requisitos, ficou
acertado que um novo projeto de reestruturação e implantação de um banco de
dados será implementado. O projeto contemplará todas as fases de banco de
dados do modelo conceitual, passando pelo lógico, até o modelo físico, para
organização e manipulação geral dos principais cadastros e eventos envolvidos
no negócio, além do controle de usuários e níveis de acesso e emprego de
restrição de integridade para qualidade das informações manipuladas. As
entidades importantes levantadas foram: Clientes, Veículos, Funcionários,
Movimento(aluguel, retirada e devolução. do veículo) e Oficina(lavagem e
manutenção dos veículos).
A partir de tais informações, elabore um projeto de banco de dados completo,
com toda a documentação necessária, com diagramas para o modelo
conceitual, modelo lógico e scripts para o modelo físico e prints constatando
sua implementação junto ao banco de dados, incluindo aspectos de segurança
e restrição de integridade para os dados do banco.
1. Deve ser apresentado um projeto completo do banco de dados, com os
modelos conceitual, lógico e físico bem definidos, além de
implementação de aspectos de restrição de integridade, e segurança do
banco de dados.
2. O projeto deverá contemplar a criação de, no mínimo, cinco usuários
com privilégios diferentes para acessarem o banco de dados criado.
3. As tabelas deverão ser populadas com, registros cada uma no mínimo,
cinco registros cada uma.
4. Para o modelo conceitual, deve ser entregue uma proposta de DER
simplificado sem a necessidade de indicar todos os atributos.
5. O modelo lógico deve ser representado em um diagrama com tabelas
que demonstrem todos os detalhes dos atributos, destacando tipos de
campos, chaves primárias e estrangeiras, relacionamentos com
cardinalidades bem definidas para as tabelas que necessitarem, além do
esquema relacional de todas as tabelas.
6. O modelo físico deve contemplar todos os scripts SQL de todos os
objetos envolvidos, incluindo prints das telas dos objetos criado se
populados no SGBD, para formar toda a documentação do banco de
dados proposto.
1 Diagrama Conceitual
2 Diagrama Lógico

3 Comandos usados
/*CRIACAO TABELA CLIENTES
POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0
*/

CREATE TABLE dbamv.clientes (


nr_cgc_cpf NUMBER(14,0) NOT NULL,
nm_clientes VARCHAR2(4000) NOT NULL,
email VARCHAR2(20) NULL,
dt_nascimento DATE NOT NULL,
telefone VARCHAR2(20) NOT NULL,
tp_clientes VARCHAR2(1) NOT NULL,
ds_endereco VARCHAR2(100) NOT NULL,
sn_ativo VARCHAR2(1) DEFAULT 'S' NOT NULL
)
STORAGE (
INITIAL 120 K
NEXT 1024 K
)
/

CREATE INDEX dbamv.ind_clientes


ON dbamv.clientes (
nr_cgc_cpf
)
STORAGE (
NEXT 1024 K
)
/
ALTER TABLE dbamv.clientes
ADD CHECK (
TP_CLIENTES BETWEEN 'J' AND 'J' OR TP_CLIENTES BETWEEN 'F' AND 'F'
)
/

ALTER TABLE dbamv.clientes


ADD CONSTRAINT clientes_pk PRIMARY KEY (
nr_cgc_cpf
)
/

COMMENT ON COLUMN dbamv.clientes.nr_cgc_cpf IS 'Numero CPF ou CNPJ'


/
COMMENT ON COLUMN dbamv.clientes.nm_clientes IS 'Nome do cliente'
/
COMMENT ON COLUMN dbamv.clientes.tp_clientes IS 'PESSOA FISICA OU
JURIDICA'
/
COMMENT ON COLUMN dbamv.clientes.ds_endereco IS 'Endereco'
/
COMMENT ON COLUMN dbamv.clientes.sn_ativo IS 'Ativo ou Inativo'
/

GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.clientes TO Breno


/
GRANT ALTER,DEBUG,DELETE,FLASHBACK,INDEX,INSERT,ON COMMIT REFRESH,QUERY
REWRITE,REFERENCES,SELECT,UPDATE ON dbamv.clientes TO Breno
/
GRANT DELETE,INSERT,SELECT,UPDATE ON dbamv.clientes TO CARLA
/
GRANT ALTER,DEBUG,DELETE,FLASHBACK,INDEX,INSERT,ON COMMIT REFRESH,QUERY
REWRITE,REFERENCES,SELECT,UPDATE ON dbamv.clientes TO carla
/

/*CRIACAO TABELA VEICULOS


POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0
*/

CREATE TABLE dbamv.veiculos (


placa VARCHAR2(8) NOT NULL,
descricao_veiculo VARCHAR2(4000) NOT NULL,
descricao_servico VARCHAR2(4000) NOT NULL,
cor VARCHAR2(10) NOT NULL,
modelo VARCHAR2(100) NOT NULL,
chassi VARCHAR2(100) NULL,
dt_inclusao DATE NOT NULL
)
STORAGE (
INITIAL 120 K
NEXT 1024 K
)
/

CREATE INDEX dbamv.ind_veiculos


ON dbamv.veiculos (
placa
)
STORAGE (
NEXT 1024 K
)
/

ALTER TABLE dbamv.veiculos


ADD CONSTRAINT veiculos_pk PRIMARY KEY (
placa
)
/

COMMENT ON COLUMN dbamv.veiculos.placa IS 'Digitar Placa do veiculo'


/

GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.veiculos TO Breno


/
GRANT ALTER,DEBUG,DELETE,FLASHBACK,INDEX,INSERT,ON COMMIT REFRESH,QUERY
REWRITE,REFERENCES,SELECT,UPDATE ON dbamv.veiculos TO Breno
/
GRANT DELETE,INSERT,SELECT,UPDATE ON dbamv.veiculos TO CARLA
/
GRANT ALTER,DEBUG,DELETE,FLASHBACK,INDEX,INSERT,ON COMMIT REFRESH,QUERY
REWRITE,REFERENCES,SELECT,UPDATE ON dbamv.veiculos TO carla
/

/*CRIACAO DE SEQUENCE PARA A TABELA VEICULOS


POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0
*/
--drop sequence DBAMV.SEQ_VEICULOS

CREATE SEQUENCE DBAMV.SEQ_VEICULOS


MINVALUE 1
MAXVALUE 999999999999999999999999999
INCREMENT BY 1
NOCYCLE
NOORDER
NOCACHE
/

GRANT SELECT ON DBAMV.SEQ_CLIENTES TO Breno


/
GRANT SELECT ON DBAMV.SEQ_CLIENTES TO CARLA
/

/*CRIACAO TABELA FUNCIONARIOS


POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0
*/CREATE TABLE dbamv.funcionarios (
cd_func NUMBER(5,0) NOT NULL,
matricula NUMBER(5,0) NOT NULL,
nm_func VARCHAR2(80) NOT NULL,
nr_cpf NUMBER(14,0) NOT NULL,
data_nasc DATE NOT NULL,
sn_ativo VARCHAR2(1) DEFAULT 'S' NULL
)
STORAGE (
INITIAL 40 K
NEXT 1024 K
)
/

CREATE INDEX dbamv.ind_funcionarios


ON dbamv.funcionarios (
matricula
)
STORAGE (
NEXT 1024 K
)
/

ALTER TABLE dbamv.funcionarios


ADD CONSTRAINT funcionarios_pk PRIMARY KEY (
cd_func
)
USING INDEX
STORAGE (
NEXT 1024 K
)
/

ALTER TABLE dbamv.funcionarios


ADD CONSTRAINT nr_cpf UNIQUE (
nr_cpf
)
USING INDEX
STORAGE (
NEXT 1024 K
)
/

COMMENT ON COLUMN dbamv.funcionarios.nr_cpf IS 'Numero cpf'


/

GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.funcionarios TO


Breno
/
GRANT ALTER,DEBUG,DELETE,FLASHBACK,INDEX,INSERT,ON COMMIT REFRESH,QUERY
REWRITE,REFERENCES,SELECT,UPDATE ON dbamv.funcionarios TO Breno
/
GRANT DELETE,INSERT,SELECT,UPDATE ON dbamv.funcionarios TO CARLA
/
GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.funcionarios TO
samara
/
/*CRIACAO DE SEQUENCE PARA A TABELA FUNCIONARIO
POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0
*/
--drop sequence DBAMV.SEQ_FUNCIONARIO

CREATE SEQUENCE DBAMV.SEQ_FUNCIONARIO


MINVALUE 1
MAXVALUE 999999999999999999999999999
INCREMENT BY 1
NOCYCLE
NOORDER
NOCACHE
/

GRANT SELECT ON DBAMV.SEQ_CLIENTES TO BRENO


/
GRANT SELECT ON DBAMV.SEQ_CLIENTES TO CARLA
/

/*CRIACAO TABELA oficina_mecanica


POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0
*/CREATE TABLE dbamv.oficina_mecanica (
cd_oficina_mec NUMBER(6,0) NOT NULL,
nome_oficina VARCHAR2(100) NOT NULL,
placa VARCHAR2(8) NOT NULL,
tp_servico VARCHAR2(1) NOT NULL,
ds_servico VARCHAR2(100) NOT NULL,
cd_func NUMBER(5,0) NOT NULL,
data_servico DATE NULL
)
STORAGE (
INITIAL 80 K
NEXT 1024 K
)
/

CREATE INDEX dbamv.of_oficina_mec_fk_i


ON dbamv.oficina_mecanica (
cd_oficina_mec
)
STORAGE (
INITIAL 40 K
NEXT 1024 K
)
/

ALTER TABLE dbamv.oficina_mecanica


ADD CHECK (
tp_servico BETWEEN 'L' AND 'L' OR tp_servico BETWEEN 'M' AND 'M'
)
/

ALTER TABLE dbamv.oficina_mecanica


ADD CONSTRAINT oficina_meq_pk PRIMARY KEY (
cd_oficina_mec
)
/

ALTER TABLE dbamv.oficina_mecanica


ADD CONSTRAINT nome_oficina UNIQUE (
nome_oficina
)
USING INDEX
STORAGE (
NEXT 1024 K
)
/

ALTER TABLE dbamv.oficina_mecanica


ADD CONSTRAINT funcionarios_fk FOREIGN KEY (
cd_func
) REFERENCES dbamv.funcionarios (
cd_func
)
/

ALTER TABLE dbamv.oficina_mecanica


ADD CONSTRAINT veiculos_fk FOREIGN KEY (
placa
) REFERENCES dbamv.veiculos (
placa
)
/

COMMENT ON COLUMN dbamv.oficina_mecanica.nome_oficina IS 'Descricao


OFICINA_MEQ'
/
COMMENT ON COLUMN dbamv.oficina_mecanica.tp_servico IS 'Lavagem ou
Manutencao'
/

GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.oficina_mecanica


TO juliete
/
GRANT ALTER,DEBUG,DELETE,FLASHBACK,INDEX,INSERT,ON COMMIT REFRESH,QUERY
REWRITE,REFERENCES,SELECT,UPDATE ON dbamv.oficina_mecanica TO Breno
/

/*CRIACAO DE SEQUENCE PARA A TABELA oficina_mecanica


POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0
*/
--drop sequence DBAMV.SEQ_OFICINA_MEQ

CREATE SEQUENCE DBAMV.SEQ_OFICINA_MEQ


MINVALUE 1
MAXVALUE 999999999999999999999999999
INCREMENT BY 1
NOCYCLE
NOORDER
NOCACHE
/

GRANT SELECT ON DBAMV.SEQ_OFICINA_MEQ TO BRENO


/
GRANT SELECT ON DBAMV.SEQ_OFICINA_MEQ TO CARLA
/

/*CRIACAO TABELA ALUGUEL_VEICULOS


POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0
*/ CREATE TABLE dbamv.aluguel_veiculos (
cd_aluguel_veiculos NUMBER(6,0) NOT NULL,
placa VARCHAR2(8) NOT NULL,
nr_cgc_cpf NUMBER(14,0) NOT NULL,
cd_func NUMBER(5,0) NOT NULL,
data_aluguel DATE NOT NULL,
data_devolucao DATE NULL
)
STORAGE (
INITIAL 80 K
NEXT 1024 K
)
/

CREATE INDEX dbamv.al_aluguel_veiculos_fk_i


ON dbamv.aluguel_veiculos (
cd_aluguel_veiculos
)
STORAGE (
INITIAL 40 K
NEXT 1024 K
)
/

ALTER TABLE dbamv.aluguel_veiculos


ADD CONSTRAINT aluguel_veiculos_pk PRIMARY KEY (
cd_aluguel_veiculos
)
/

ALTER TABLE dbamv.aluguel_veiculos


ADD CONSTRAINT clientes2_fk FOREIGN KEY (
nr_cgc_cpf
) REFERENCES dbamv.clientes (
nr_cgc_cpf
)
/

ALTER TABLE dbamv.aluguel_veiculos


ADD CONSTRAINT funcionarios3_fk FOREIGN KEY (
cd_func
) REFERENCES dbamv.funcionarios (
cd_func
)
/

GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.aluguel_veiculos


TO juliete
/
GRANT ALTER,DEBUG,DELETE,FLASHBACK,INDEX,INSERT,ON COMMIT REFRESH,QUERY
REWRITE,REFERENCES,SELECT,UPDATE ON dbamv.aluguel_veiculos TO breno
/

/*CRIACAO DE SEQUENCE PARA A TABELA ALUGUEL_VEICULOS


POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0
*/
--drop sequence DBAMV.SEQ_ALUGUEL_VEICULOS

CREATE SEQUENCE DBAMV.SEQ_ALUGUEL_VEICULOS


MINVALUE 1
MAXVALUE 999999999999999999999999999
INCREMENT BY 1
NOCYCLE
NOORDER
NOCACHE
/

GRANT SELECT ON DBAMV.SEQ_ALUGUEL_VEICULOS TO BRENO


/
GRANT SELECT ON DBAMV.SEQ_ALUGUEL_VEICULOS TO CARLA
/

/*CRIACAO ACESSOS E PRIVILEGIOS DE USUARIOS


POR Breno Monteiro Silva
MATRICULA: 04097043
ANALISE E DESENVOLVIMENTO DE SISTEMAS
DT CRIACAO 06/06/2022
VERSÃO: 1.0

/*USUARIO:Breno
DESCRIÇÃO: TEM PRIVILEGIO TOTAL, CARACTERISTA DE GESTOR NA ORGANIZAÇÃO
*/
CREATE USER Breno IDENTIFIED BY 123;

GRANT ALL PRIVILEGES ON dbamv.clientes TO breno;


GRANT ALL PRIVILEGES ON dbamv.veiculos TO breno;
GRANT ALL PRIVILEGES ON dbamv.funcionarios TO breno;
GRANT ALL PRIVILEGES ON dbamv.oficina_mecanica TO breno;
GRANT ALL PRIVILEGES ON dbamv.aluguel_veiculos TO breno;

/*USUARIO:Carla
DESCRIÇÃO: TEM PRIVILEGIO LIMITADO, CARACTERISTA DE NIVEL OPERACIONAL
DO CADASTRO DE CLIENTES E VEICULOS
ELA TAMBEM PODERA FAZER CONSULTAS E ATUALIZAR OS DADOS INSERIDOS NAS
TABELAS OFICINA_MECANICA E ALUGUEL_VEICULOS
ELA NÃO PODERA TER ACESSO A TABELA DE FUNCIONARIOS VISTO QUE A MESMA
NÃO PERTENCE AO SETOR DE RECURSOS HUMANOS*/

CREATE USER Carla IDENTIFIED BY 123;

GRANT ALL PRIVILEGES ON dbamv.clientes TO Carla;


GRANT ALL PRIVILEGES ON dbamv.veiculos TO Carla;
--GRANT ALL PRIVILEGES ON dbamv.funcionarios TO breno;
GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.oficina_mecanica
TO carla;
GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.aluguel_veiculos
TO carla;

REVOKE DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.oficina_mecanica


FROM carla;
REVOKE DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.aluguel_veiculos
FROM carla;

/*USUARIO:SAMARA
DESCRIÇÃO: GERENTE DE RH, POSSUI ACESSO A TABELA FUNCIONARIOS */

CREATE USER SAMARA IDENTIFIED BY 123;

--GRANT ALL PRIVILEGES ON dbamv.clientes TO SAMARA;


--GRANT ALL PRIVILEGES ON dbamv.veiculos TO carla;
GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.funcionarios TO
SAMARA;
--GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON
dbamv.oficina_mecanica TO carla;
--GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON
dbamv.aluguel_veiculos TO carla;

/*USUARIO: Juliete
DESCRIÇÃO: ACESSO AS TABELAS DE MOVIMENTAÇÃO: OFICINA_MECANICA E
ALUGUEL_VEICULOS */

CREATE USER JULIETE IDENTIFIED BY 123;

GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.oficina_mecanica


TO JULIETE;
GRANT DELETE,INSERT,REFERENCES,SELECT,UPDATE ON dbamv.aluguel_veiculos
TO JULIETE;

Você também pode gostar