{"id":20956941,"url":"https://github.com/maiarasanto/bancodedados","last_synced_at":"2026-04-24T15:32:52.850Z","repository":{"id":263325599,"uuid":"890033603","full_name":"MaiaraSanto/BancodeDados","owner":"MaiaraSanto","description":"Este Projeto contem todos os arquivos do Módulo Banco de Dados como: Organização para Banco de Dados; Tabelas em Query; item de um CRUD e diferença entre NoSQL e SQL;","archived":false,"fork":false,"pushed_at":"2024-11-18T01:57:38.000Z","size":47,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-29T16:24:41.930Z","etag":null,"topics":["banco-de-dados","create","delete","mongodb","mysql","query","table","update"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaiaraSanto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-17T20:57:35.000Z","updated_at":"2024-12-23T18:56:04.000Z","dependencies_parsed_at":"2024-11-18T01:17:09.652Z","dependency_job_id":null,"html_url":"https://github.com/MaiaraSanto/BancodeDados","commit_stats":null,"previous_names":["maiarasanto/bancodedados"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MaiaraSanto/BancodeDados","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaiaraSanto%2FBancodeDados","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaiaraSanto%2FBancodeDados/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaiaraSanto%2FBancodeDados/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaiaraSanto%2FBancodeDados/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaiaraSanto","download_url":"https://codeload.github.com/MaiaraSanto/BancodeDados/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaiaraSanto%2FBancodeDados/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32228982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["banco-de-dados","create","delete","mongodb","mysql","query","table","update"],"created_at":"2024-11-19T01:28:42.295Z","updated_at":"2026-04-24T15:32:52.832Z","avatar_url":"https://github.com/MaiaraSanto.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Este Projeto contem todos os arquivos do Módulo Banco de Dados como: Organização para Banco de Dados; Tabelas em Query; item de um CRUD e diferença entre NoSQL e SQL;\n\n\n\n# ``BANCO DE DADOS``\n\n📦 Projeto de Banco de Dados para uma Plataforma de Hospedagem (Estilo Airbnb)\n\nEste projeto documenta a estrutura de um banco de dados para uma plataforma de hospedagem, onde os usuários podem cadastrar lugares, realizar reservas e avaliar hospedagens. Abaixo estão os detalhes de cada tabela, seus relacionamentos e a justificativa para a organização dos dados escolhida.\n\n## 📑 Estrutura Geral do Banco de Dados\nO banco de dados é composto por quatro tabelas principais:\n\n1. Usuários (Usuarios)\n2. Lugares (Lugares)\n3. Hospedagens (Hospedagens)\n4. Avaliações (Avaliacoes)\n\nAbaixo, cada tabela será detalhada com suas colunas e explicação dos relacionamentos.\n\n🔹 Tabela: Usuarios\nEsta tabela armazena os dados dos usuários que utilizam a plataforma, tanto anfitriões (usuários que cadastram lugares) quanto hóspedes (usuários que reservam lugares).\n\n- Colunas:\n\n- id_usuario (PK) - INTEGER: Identificador único do usuário.\n- nome - VARCHAR(100): Nome completo do usuário.\n- email - VARCHAR(100): E-mail do usuário, único na plataforma.\n- senha - VARCHAR(255): Senha criptografada do usuário.\n- data_nascimento - DATE: Data de nascimento do usuário.\n- telefone - VARCHAR(15): Número de telefone do usuário.\n- data_criacao - TIMESTAMP: Data e hora de criação da conta.\n\n````\nCREATE TABLE Usuarios (\n    id_usuario INTEGER PRIMARY KEY AUTO_INCREMENT,\n    nome VARCHAR(100) NOT NULL,\n    email VARCHAR(100) UNIQUE NOT NULL,\n    senha VARCHAR(255) NOT NULL,\n    data_nascimento DATE,\n    telefone VARCHAR(15),\n    data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n````\n- Justificativa: Esta tabela é essencial para armazenar os dados pessoais e de autenticação dos usuários, diferenciando-os pelos IDs únicos. Dados como e-mail e senha permitem o login, enquanto telefone e nome facilitam o contato entre anfitrião e hóspede.\n\n🔹 Tabela: Lugares\nEsta tabela armazena os locais cadastrados pelos usuários para hospedagem, permitindo a inserção de informações como endereço, tipo de hospedagem e preço por noite.\n\n- Colunas:\n\n- id_lugar (PK) - INTEGER: Identificador único do lugar.\n- id_usuario (FK) - INTEGER: Identificador do usuário que cadastrou o lugar.\n- titulo - VARCHAR(150): Título descritivo do lugar.\n- descricao - TEXT: Descrição detalhada do lugar.\n- endereco - VARCHAR(255): Endereço completo do lugar.\n- cidade - VARCHAR(100): Cidade onde o lugar está localizado.\n- estado - VARCHAR(100): Estado onde o lugar está localizado.\n- pais - VARCHAR(100): País onde o lugar está localizado.\n- preco_por_noite - DECIMAL(10, 2): Valor da diária para o local.\n- max_hospedes - INTEGER: Capacidade máxima de hóspedes.\n- data_cadastro - TIMESTAMP: Data e hora de cadastro do lugar.\n````\nCREATE TABLE Lugares (\n    id_lugar INTEGER PRIMARY KEY AUTO_INCREMENT,\n    id_usuario INTEGER NOT NULL,\n    titulo VARCHAR(150) NOT NULL,\n    descricao TEXT,\n    endereco VARCHAR(255),\n    cidade VARCHAR(100),\n    estado VARCHAR(100),\n    pais VARCHAR(100),\n    preco_por_noite DECIMAL(10, 2) NOT NULL,\n    max_hospedes INTEGER NOT NULL,\n    data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n    FOREIGN KEY (id_usuario) REFERENCES Usuarios(id_usuario)\n);\n````\n- Relacionamento:\nid_usuario é uma chave estrangeira que referencia id_usuario na tabela Usuarios, indicando quem é o proprietário do lugar.\n\n- Justificativa: A tabela Lugares permite que os usuários cadastrem locais de hospedagem com informações completas para facilitar a busca por hóspedes. O relacionamento com Usuarios define que cada lugar pertence a um usuário.\n\n🔹 Tabela: Hospedagens\nEsta tabela registra as hospedagens, ou seja, os períodos em que um usuário reserva um determinado lugar.\n\n- Colunas:\n\n- id_hospedagem (PK) - INTEGER: Identificador único da hospedagem.\n- id_usuario (FK) - INTEGER: Identificador do usuário que realizou a reserva.\n- id_lugar (FK) - INTEGER: Identificador do lugar reservado.\n- data_inicio - DATE: Data de início da hospedagem.\n- data_fim - DATE: Data de término da hospedagem.\n- preco_total - DECIMAL(10, 2): Valor total da hospedagem, calculado com base nas diárias.\n\n````\nCREATE TABLE Hospedagens (\n    id_hospedagem INTEGER PRIMARY KEY AUTO_INCREMENT,\n    id_usuario INTEGER NOT NULL,\n    id_lugar INTEGER NOT NULL,\n    data_inicio DATE NOT NULL,\n    data_fim DATE NOT NULL,\n    preco_total DECIMAL(10, 2) NOT NULL,\n    FOREIGN KEY (id_usuario) REFERENCES Usuarios(id_usuario),\n    FOREIGN KEY (id_lugar) REFERENCES Lugares(id_lugar)\n);\n````\n- Relacionamento:\nid_usuario referencia a tabela Usuarios, indicando o hóspede.\nid_lugar referencia a tabela Lugares, indicando o local reservado.\n\n- Justificativa: A tabela Hospedagens permite o controle das reservas realizadas por usuários em lugares cadastrados. Ela facilita o cálculo de receitas e ajuda a manter a integridade dos dados, evitando reservas sobrepostas.\n\n🔹 Tabela: Avaliacoes\nEsta tabela armazena as avaliações feitas pelos usuários nas hospedagens, permitindo o registro de comentários e pontuações.\n\n- Colunas:\n\n- id_avaliacao (PK) - INTEGER: Identificador único da avaliação.\n- id_usuario (FK) - INTEGER: Identificador do usuário que fez a avaliação.\n- id_hospedagem (FK) - INTEGER: Identificador da hospedagem avaliada.\n- nota - DECIMAL(2, 1): Nota dada pelo usuário (ex: 4.5).\n- comentario - TEXT: Comentário do usuário sobre a hospedagem.\n- data_avaliacao - TIMESTAMP: Data e hora da avaliação.\n\n````\nCREATE TABLE Avaliacoes (\n    id_avaliacao INTEGER PRIMARY KEY AUTO_INCREMENT,\n    id_usuario INTEGER NOT NULL,\n    id_hospedagem INTEGER NOT NULL,\n    nota DECIMAL(2, 1) CHECK (nota \u003e= 0 AND nota \u003c= 5),\n    comentario TEXT,\n    data_avaliacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n    FOREIGN KEY (id_usuario) REFERENCES Usuarios(id_usuario),\n    FOREIGN KEY (id_hospedagem) REFERENCES Hospedagens(id_hospedagem)\n);\n````\n- Relacionamento:\nid_usuario referencia a tabela Usuarios, indicando o autor da avaliação.\nid_hospedagem referencia a tabela Hospedagens, especificando a hospedagem avaliada.\n\n- Justificativa: A tabela Avaliacoes permite aos usuários avaliarem as hospedagens, fornecendo um sistema de feedback que ajuda outros usuários a escolherem melhores locais para se hospedar. Relacionar as avaliações diretamente com Hospedagens e Usuarios garante que o sistema de avaliação seja preciso e confiável.\n\n📈 Diagrama de Relacionamentos\n\n````\nUsuarios --\u003c Lugares\nUsuarios --\u003c Hospedagens\nUsuarios --\u003c Avaliacoes\nLugares --\u003c Hospedagens\nHospedagens --\u003c Avaliacoes\n````\n🎯 Justificativa dos Relacionamentos\n\nA estrutura foi pensada para garantir a integridade dos dados e facilitar a consulta das principais operações realizadas na plataforma. Cada relacionamento é destinado a:\n\n- Usuarios ↔ Lugares: Relacionamento um-para-muitos (1\n), pois um usuário pode cadastrar vários lugares, mas cada lugar pertence a apenas um usuário.\n- Usuarios ↔ Hospedagens: Relacionamento um-para-muitos (1\n), pois um usuário pode realizar várias hospedagens, mas cada hospedagem pertence a apenas um hóspede.\n- Usuarios ↔ Avaliacoes: Relacionamento um-para-muitos (1\n), pois um usuário pode fazer várias avaliações, mas cada avaliação pertence a apenas um usuário.\n- Lugares ↔ Hospedagens: Relacionamento um-para-muitos (1\n), pois um lugar pode ter várias hospedagens, mas cada hospedagem é para apenas um lugar específico.\n- Hospedagens ↔ Avaliacoes: Relacionamento um-para-muitos (1\n), pois cada hospedagem pode ter várias avaliações, mas cada avaliação refere-se a uma hospedagem específica.\n\n🗃️ Observações e Melhorias Futuras\nPara escalabilidade e funcionalidades futuras, algumas melhorias podem incluir:\n\n- Histórico de preços nos lugares, para rastrear mudanças nas diárias.\n- Sistema de mensagens para comunicação direta entre anfitrião e hóspede.\n- Tabela de Favoritos para que usuários possam salvar lugares de interesse.\n\n🚀 Execução e Desenvolvimento\n\n1. Passo 1: Criar o banco de dados e as tabelas utilizando SQL.\n2. Passo 2: Implementar os relacionamentos utilizando chaves estrangeiras.\n3. Passo 3: Testar as funcionalidades principais, como cadastro de lugares, reservas e avaliações.\n4. Passo 4: Validar a integridade e consistência dos dados, principalmente nas tabelas com chaves estrangeiras.\n\n##\n\n\n\n# ``PROJETO: BANCO DE DADOS  DE PROVAS E ALUNOS``\n\n\n📚 Este projeto documenta a criação e manipulação de um banco de dados para um sistema escolar que gerencia informações sobre alunos, professores, matérias e provas. Aqui estão os passos para criar as tabelas, inserir dados e realizar uma consulta específica, conforme solicitado.\n\n🎯 Estrutura do Projeto\nTabelas e Colunas\nO banco de dados possui quatro tabelas principais:\n\n1. provas\n2. aluno\n3. professor\n4. materia\n\nCada uma dessas tabelas será detalhada abaixo com as colunas e os tipos de dados especificados.\n\n📌 Instruções\n1. Criar as tabelas provas, aluno, professor e materia.\n2. Inserir 3 alunos na tabela aluno.\n3. Criar uma matéria e associá-la a um professor na tabela materia.\n4. Criar uma prova para cada aluno na matéria criada e definir a nota obtida por cada um.\n5. Escrever uma query final para consultar os dados conforme a necessidade.\n\n🛠️ Passo 1: Criação das Tabelas\n🔹 Tabela aluno\n````\nCREATE TABLE aluno (\n    id INTEGER PRIMARY KEY AUTO_INCREMENT,\n    nome VARCHAR(100) NOT NULL,\n    data_nascimento DATE\n);\n````\n\n🔹 Tabela professor\n````\nCREATE TABLE professor (\n    id INTEGER PRIMARY KEY AUTO_INCREMENT,\n    nome VARCHAR(100) NOT NULL,\n    data_nascimento DATE\n);\n````\n\n🔹 Tabela materia\n````\nCREATE TABLE materia (\n    id INTEGER PRIMARY KEY AUTO_INCREMENT,\n    nome VARCHAR(100) NOT NULL,\n    id_professor INTEGER,\n    FOREIGN KEY (id_professor) REFERENCES professor(id)\n);\n````\n\n🔹 Tabela provas\n````\nCREATE TABLE provas (\n    id_aluno INTEGER,\n    id_materia INTEGER,\n    nota FLOAT,\n    data_da_prova DATE,\n    FOREIGN KEY (id_aluno) REFERENCES aluno(id),\n    FOREIGN KEY (id_materia) REFERENCES materia(id)\n);\n````\n\n🛠️ Passo 2: Inserção de Dados nas Tabelas\nApós criar as tabelas, vamos inserir dados conforme solicitado.\n\n1️⃣ Inserir 3 alunos na tabela aluno:\n````\nINSERT INTO aluno (nome, data_nascimento) VALUES\n('João Silva', '2010-03-15'),\n('Maria Oliveira', '2011-07-22'),\n('Pedro Santos', '2010-11-05');\n````\n\n2️⃣ Inserir um professor na tabela professor:\n````\nINSERT INTO professor (nome, data_nascimento) VALUES\n('Carlos Mendes', '1980-05-12');\n````\n\n3️⃣ Inserir uma matéria na tabela materia, associando-a ao professor:\n````\nINSERT INTO materia (nome, id_professor) VALUES\n('Matemática', 1);  -- 1 é o ID do professor Carlos Mendes\n````\n\n4️⃣ Inserir uma prova para cada aluno na matéria Matemática e atribuir notas:\n````\nINSERT INTO provas (id_aluno, id_materia, nota, data_da_prova) VALUES\n(1, 1, 8.5, '2024-11-01'),  -- João Silva\n(2, 1, 9.0, '2024-11-01'),  -- Maria Oliveira\n(3, 1, 7.5, '2024-11-01');  -- Pedro Santos\n````\n\n🛠️ Passo 3: Query de Consulta Final\nPara consultar as informações de cada prova, incluindo o nome do aluno, a matéria e a nota obtida, podemos utilizar a seguinte query:\n````\nSELECT \n    aluno.nome AS Nome_Aluno,\n    materia.nome AS Materia,\n    provas.nota AS Nota,\n    provas.data_da_prova AS Data_Prova\nFROM \n    provas\nJOIN \n    aluno ON provas.id_aluno = aluno.id\nJOIN \n    materia ON provas.id_materia = materia.id;\n````\n\n📋 Explicação da Query\nEsta query utiliza JOIN para unir as tabelas provas, aluno e materia, permitindo exibir as informações de cada prova de forma mais detalhada, incluindo:\n\n- O nome do aluno (Nome_Aluno),\n- O nome da matéria (Materia),\n- A nota obtida na prova (Nota),\n- E a data da prova (Data_Prova).\n\n  📝 Saída Esperada da Query\nA execução da query acima deve retornar um resultado similar ao seguinte:\n````\n\n- Nome_Aluno\t  - Materia\t- Nota\t- Data_Prova\n- João Silva\t  - Matemática  - 8.5\t- 2024-11-01\n- Maria Oliveira  - Matemática  - 9.0\t- 2024-11-01\n- Pedro Santos\t  - Matemática  - 7.5\t- 2024-11-01\n````\n\n # ``SQL CRUD``\n\n📘 Este projeto documenta o uso básico das operações CRUD em SQL, demonstrando como criar, ler, atualizar e deletar registros em uma tabela fictícia. Para este exercício, utilizaremos uma tabela chamada ``clientes``, que representa uma lista de clientes com algumas informações básicas.\n\n🗄️ Estrutura da Tabela clientes\nDescrição\nA tabela clientes armazena informações sobre clientes de uma empresa. Ela possui as seguintes colunas:\n\n- id_cliente: Identificador único do cliente (chave primária).\n- nome: Nome do cliente.\n- email: Endereço de email do cliente.\n- data_nascimento: Data de nascimento do cliente.\n- cidade: Cidade onde o cliente reside.\n\n  ## Estrutura SQL da Tabela ``clientes``\n\n````\nCREATE TABLE clientes (\n    id_cliente INTEGER PRIMARY KEY AUTO_INCREMENT,\n    nome VARCHAR(100) NOT NULL,\n    email VARCHAR(100) UNIQUE NOT NULL,\n    data_nascimento DATE,\n    cidade VARCHAR(50)\n);\n\n````\n\n🛠️ Operações CRUD\nA seguir, estão as instruções SQL para realizar cada operação CRUD na tabela clientes.\n\n1️⃣ CREATE - Inserir um Novo Cliente\nPara adicionar um novo cliente à tabela, utilizamos o comando INSERT INTO.\n````\nINSERT INTO clientes (nome, email, data_nascimento, cidade) VALUES \n('Ana Costa', 'ana.costa@email.com', '1990-08-15', 'São Paulo');\n````\n- Esta operação insere um novo cliente chamado \"Ana Costa\" na tabela clientes, com o email, data de nascimento e cidade especificados.\n\n  2️⃣ READ - Ler/Selecionar Dados de Clientes\nPara consultar os dados de clientes na tabela, utilizamos o comando SELECT. Vamos ler os dados de todos os clientes ou filtrar por uma condição específica.\n````\nSELECT * FROM clientes;\n````\n- Esta operação seleciona todos os registros da tabela clientes, retornando todas as colunas.\n\n  Exemplo de Consulta Filtrada:\n````\n  SELECT nome, email FROM clientes WHERE cidade = 'São Paulo';\n````\n- Esta operação retorna os nomes e emails dos clientes que residem na cidade de \"São Paulo\".\n\n  3️⃣ UPDATE - Atualizar Dados de um Cliente\nPara atualizar as informações de um cliente existente, utilizamos o comando UPDATE junto com uma condição WHERE para definir o registro a ser modificado.\n````\nUPDATE clientes \nSET cidade = 'Rio de Janeiro' \nWHERE id_cliente = 1;\n````\n- Esta operação atualiza o campo cidade para \"Rio de Janeiro\" no cliente que possui id_cliente igual a 1.\n\n  Exemplo Atualizando Múltiplos Campos:\n````\n  UPDATE clientes \nSET email = 'ana.nova@email.com', cidade = 'Curitiba' \nWHERE nome = 'Ana Costa';\n````\n- Esta operação altera o email e a cidade do cliente com nome \"Ana Costa\".\n\n  4️⃣ DELETE - Deletar um Cliente\nPara remover um cliente da tabela, utilizamos o comando DELETE FROM junto com uma condição WHERE para especificar o cliente a ser deletado.\n````\nDELETE FROM clientes WHERE id_cliente = 1;\n````\n- Esta operação deleta o cliente que possui id_cliente igual a 1 da tabela clientes.\n \n\n  \n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaiarasanto%2Fbancodedados","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaiarasanto%2Fbancodedados","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaiarasanto%2Fbancodedados/lists"}