Sem resumo de edição
Etiqueta: visualeditor
 
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 14: Linha 14:


= Softwares =
= Softwares =
Descrever os softwares usados para esta finalidade. Detalhar, se existir, linguagens, banco de dados e frameworks.
Para armazenar as informações de um banco de dados é necessário algum software para gerenciar o banco de dados (SGBDs), os principais softwares gerenciadores pagos que armazenam grandes quantidades de dados são:
*ORACLE
*SQL server (microsoft)
*IBM
 
Também há soluções de SGBDs gratuitas como:
*MySQL
*MariaDB
*Firebird
*PostgreSQL
 
= Código =
<syntaxhighlight lang="sql">
CREATE TABLE `canteiro` (
`canteiroid` INTEGER(11) NOT NULL AUTO_INCREMENT,
`nome` CHAR(20) COLLATE DEFAULT NULL,
`luzdiaria` INTEGER(2) DEFAULT NULL,
`agua` INTEGER(3) DEFAULT NULL,
PRIMARY KEY (`canteiroid`),
UNIQUE KEY `canteiroid` (`canteiroid`)
)
CREATE TABLE `funcionario` (
`funcid` INTEGER(11) NOT NULL AUTO_INCREMENT,
`nome` CHAR(80) COLLATE NOT NULL DEFAULT '',
`idade` INTEGER(2) UNSIGNED DEFAULT NULL,
PRIMARY KEY (`funcid`),
UNIQUE KEY `funcid` (`funcid`)
)
CREATE TABLE `planta` (
`ID` INTEGER(11) NOT NULL AUTO_INCREMENT,
`nome` CHAR(20) COLLATE NOT NULL DEFAULT '',
`luzdiaria` INTEGER(2) DEFAULT NULL,
`agura` INTEGER(2) DEFAULT NULL,
`peso` INTEGER(2) DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `ID` (`ID`)
)
CREATE TABLE `plantio` (
`plantioID` INTEGER(11) NOT NULL AUTO_INCREMENT,
`plantaID` INTEGER(11) NOT NULL,
`funcID` INTEGER(11) NOT NULL ,
`canteiroID` INTEGER(11) NOT NULL,
`Data` DATE DEFAULT NULL,
`sementes` INTEGER(4) DEFAULT 0 NOT NULL,
PRIMARY KEY (`plantioID`),
FOREIGN KEY(`plantaID`) REFERENCES planta(ID),
FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID),
FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID),
UNIQUE KEY `ID` (`plantioID`)
)
CREATE TABLE `colhido` (
`colhidoID` INTEGER(11) NOT NULL AUTO_INCREMENT,
`plantaID` INTEGER(11) NOT NULL,
`funcID` INTEGER(11) NOT NULL ,
`canteiroID` INTEGER(11) NOT NULL,
`Data` DATE DEFAULT NULL,
`quantidade` INTEGER(4) DEFAULT 0 NOT NULL,
`peso` DOUBLE(4,3) DEFAULT 0 NOT NULL,
PRIMARY KEY (`colhidoID`),
FOREIGN KEY(`plantaID`) REFERENCES planta(ID),
FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID),
FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID),
UNIQUE KEY `ID` (`colhidoID`)
)
</syntaxhighlight>
<br>
<br>


= Código =
= Diagrama de Casos de Uso =
<syntaxhighlight lang="python3">
[[Arquivo:Diagrama-bd.jpeg]]
Arquivo = "lista_contatos.txt" # Nome do arquivo
 
Criando um diagrama para criar um banco de dados para uma plantação.
 
= Interações com as tecnologias =
* [[Tecnologia Banco de Dados]]


def ler_arquivo():              # Função que le o arquivo de texto
* [[Projeto de SGBDs]]
    try:                        # Tratamento de erro
        arq = open(Arquivo,"r+") # Abre o arquivo para leitura
        print( '\n'+arq.read() ) # Quebra linha e mostra o conteudo
        arq.close()              # Fecha o arquivo
    except IOError:              # Tratamento de erro
        print('\nArquivo não encontrado!')


def escrever_linhas(texto):        # Função que le e escreve no arquivo
* [[Projeto Banco de Dados]]
    try:                          # Tratamento de erro
        arq = open(Arquivo,"a+")  # Abre o arquivo para gravação no final do arquivo
        arq.writelines('\n'+texto) # Escreve no arquivo o parametro 'texto'
        arq.close()                # Fecha o arquivo
        print('\nLinha gravada com sucesso')
    except IOError:                # Tratamento de erro
        print('\nErro ao abrir o arquivo!') # Mostra na tela uma mensagem de erro


def pesquisar_contato(nome):
= Informações adicionais =
    try:
        arq = open(Arquivo, "r+")
        dicionario = {'nome':'', 'telefone':'', 'email':''}
        achei = False
        # lógica ler arquivo e comparar nome
        for cont, s in enumerate(arq.readlines()):
           
            dicionario['nome'], dicionario['telefone'],dicionario['email'] = s.split(' - ')
            if dicionario['nome'] == nome:
                print(cont)
                print('Nome: %s'% dicionario['nome'])
                print('Telefone: %s'% dicionario['telefone'])
                print('Email: %s'% dicionario['email'])
                achei = True
               
        if not achei:
            print('Não existe %s' % (nome))


       
        # se achou imprime, se não mostra uma mensagem de nao encontrado


        arq.close
       
    except IOError:
        print('\nContato não encontrado')


Ranking de sistemas de bancos de dados mais usados em 2015/2016:


def excluir_contatos():
[[Arquivo:Tabela sgbd.jpg]]
    try:
        arq =open('lista_contatos.txt','r+')
        valores = arq.readlines()
        l = []
        splited =[]
        nome = input('Entre com um nome:')
        for x in valores:
            splited=x.split(' - ')
            if splited[0]==nome:
              pass
            else:
                l.append(splited)
       
        arq.close()
        novo_cadastro(l)
    except:
        print('erro')
def novo_cadastro(l):
    arq = open(Arquivo,'w')
    for x in l:
        #print("Nome:%s | Telefone:%s | Email:%s"%(x[0],x[1],x[2]))
        arq.write("%s - %s - %s" %(x[0],x[1],x[2]))
    arq.close()


while(True):
   
    print('\n        Opcões:')
    print(' ')
    print('1 - Cadastrar contato')
    print('2 - Listar dados')
    print('3 - Pesquisar contato')
    print('4 - Excluir contato')
    print('9 - Sair')
    print(' ')
    Op = int(input('Digite a opção desejada:')) # Entrada da opcao pelo teclado


    if Op == 1:                                    # Se a opcao for 1
        nome = input('\nDigite o nome do contato:')      # Entrada do nome pelo teclado
        fone = input('Digite o número do telefone:')# Entrada do telefone pelo teclado
        email = input('Digite o email:')            # Entrada do telefone pelo teclado
        contato = (nome+' - '+fone+' - '+email)    # Recebe o nome + o telefone
        escrever_linhas(str(contato))              # Chama a função que grava em arquivo
    elif Op == 2:                                  # Se a opcao for 2
        ler_arquivo()                              # Chama a função que le o arquivo
    elif Op == 9:                                  # Se a opcao for 0
        break                                      # Quebra o laço infinito
    elif Op == 3:
        nome = input("Digite o nome: ")
        pesquisar_contato(nome)
    elif Op == 4:
        #nome = input ("Digite o nome: ")
        excluir_contatos()
</syntaxhighlight>
Dar um exemplo de um código-fonte que mostre alguma parte da aplicação final. O código deverá ser curto mas que o leitor consiga enxergar para que serve. Pode-se usar comentários no programa.
<br>


= Diagrama de Casos de Uso =
= Referências bibliográficas =
Desenhar ou plotar  os requisitos funcionais de uma aplicação.
http://download.dominiosistemas.com.br/manuais/Introdu%E7%E3o%20a%20SQL.pdf
<br>


= Interações com as tecnologias =
https://hal9k.ifsc.usp.br/~smaira/Gradua%C3%A7%C3%A3o/8%C2%BA%20Semestre/PVI/SlidesAulaBD-ComandosDDL.pdf
* [[Tecnologia Banco de Dados]]


* [[Projeto de SGBDs]]
http://www.csiits.com/home/PDF/ApostilaSQL2.pdf


* [[Projeto Banco de Dados]]
http://www.devmedia.com.br/principais-instrucoes-em-sql/37262


= Informações adicionais =
http://aprendaplsql.com/
Descrever detalhes a mais sobre esse tema.
<br>


= Referências bibliográficas =
Relacionar aqui as referências bibliográficas no padrão ABNT.
Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores
<br>
<br>

Edição atual tal como às 12h05min de 18 de outubro de 2017

Conceito

Surge em 1974 e foi desenvolvida nos laboratórios da IBM como interface para o SGBDR (Sistema Gerenciador de Banco de Dados Relacional).

Antes de entender o conceito de SQL é necessário compreender o que é um banco de dados,que é um agrupado de registros que podem ser sobre: pessoas, lugares entre outras coisas. Registros que são organizados para gerar algum tipo de informação.

  • SQL é uma abreviatura de “Structured Query Language” (Linguagem de Consulta Estruturada) uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional.
  • SQL é uma linguagem de consulta, onde se dá comandos para o ambiente de banco de dados e se têm o retorno de uma “Query” (solicitação/resposta).
  • SQL não é bem uma linguagem de programação, é uma linguagem feita exclusivamente para criar tabelas, manipular os dados das tabelas e principalmente consultar esses dados. É através da SQL que os programas interagem com bancos de dados relacionais, basicamente todas as linguagens de programação tem bibliotecas para acessar esses bancos de dados relacionais, portanto não importa se usa JAVA, PHP ou CSharp, sempre pode se usar a SQL para integrar um programa a um banco de dados.“Structured Query Language”.
  • SQL é basicamente dividido em quatro linguagens:
  1. DML - Linguagem de Manipulação de Dados: pega as informações das tabelas e as altera, insere ou exclui (são os três comandos padrões da SQL que são INSERT, DELETE e UPDATE.
  2. DDL - Linguagem de Definição de Dados: seria as funções CREATE, DROP ou ALTER, altera as estruturas das tabelas.
  3. DCL - Linguagem de Controle de Dados: define as regras de controles de acessos dentro do banco de dados,concede acessos a usuários para alterar uma tabela, selecionar dados entre outras coisas.
  4. DTL - Linguagem de Transação de Dados: controla as transações ou pontos de partidas. quando se quer alterar alguma uma tabela no SGBDR, é preciso confirmar a ação antes de alterar o banco de dados.

Softwares

Para armazenar as informações de um banco de dados é necessário algum software para gerenciar o banco de dados (SGBDs), os principais softwares gerenciadores pagos que armazenam grandes quantidades de dados são:

  • ORACLE
  • SQL server (microsoft)
  • IBM

Também há soluções de SGBDs gratuitas como:

  • MySQL
  • MariaDB
  • Firebird
  • PostgreSQL

Código

<syntaxhighlight lang="sql"> CREATE TABLE `canteiro` ( `canteiroid` INTEGER(11) NOT NULL AUTO_INCREMENT, `nome` CHAR(20) COLLATE DEFAULT NULL, `luzdiaria` INTEGER(2) DEFAULT NULL, `agua` INTEGER(3) DEFAULT NULL, PRIMARY KEY (`canteiroid`), UNIQUE KEY `canteiroid` (`canteiroid`) )

CREATE TABLE `funcionario` ( `funcid` INTEGER(11) NOT NULL AUTO_INCREMENT, `nome` CHAR(80) COLLATE NOT NULL DEFAULT , `idade` INTEGER(2) UNSIGNED DEFAULT NULL, PRIMARY KEY (`funcid`), UNIQUE KEY `funcid` (`funcid`) )

CREATE TABLE `planta` ( `ID` INTEGER(11) NOT NULL AUTO_INCREMENT, `nome` CHAR(20) COLLATE NOT NULL DEFAULT , `luzdiaria` INTEGER(2) DEFAULT NULL, `agura` INTEGER(2) DEFAULT NULL, `peso` INTEGER(2) DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `ID` (`ID`) )

CREATE TABLE `plantio` ( `plantioID` INTEGER(11) NOT NULL AUTO_INCREMENT, `plantaID` INTEGER(11) NOT NULL, `funcID` INTEGER(11) NOT NULL , `canteiroID` INTEGER(11) NOT NULL, `Data` DATE DEFAULT NULL, `sementes` INTEGER(4) DEFAULT 0 NOT NULL, PRIMARY KEY (`plantioID`), FOREIGN KEY(`plantaID`) REFERENCES planta(ID), FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID), FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID), UNIQUE KEY `ID` (`plantioID`) )

CREATE TABLE `colhido` ( `colhidoID` INTEGER(11) NOT NULL AUTO_INCREMENT, `plantaID` INTEGER(11) NOT NULL, `funcID` INTEGER(11) NOT NULL , `canteiroID` INTEGER(11) NOT NULL, `Data` DATE DEFAULT NULL, `quantidade` INTEGER(4) DEFAULT 0 NOT NULL, `peso` DOUBLE(4,3) DEFAULT 0 NOT NULL, PRIMARY KEY (`colhidoID`), FOREIGN KEY(`plantaID`) REFERENCES planta(ID), FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID), FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID), UNIQUE KEY `ID` (`colhidoID`) ) </syntaxhighlight>

Diagrama de Casos de Uso

Criando um diagrama para criar um banco de dados para uma plantação.

Interações com as tecnologias

Informações adicionais

Ranking de sistemas de bancos de dados mais usados em 2015/2016:


Referências bibliográficas

http://download.dominiosistemas.com.br/manuais/Introdu%E7%E3o%20a%20SQL.pdf

https://hal9k.ifsc.usp.br/~smaira/Gradua%C3%A7%C3%A3o/8%C2%BA%20Semestre/PVI/SlidesAulaBD-ComandosDDL.pdf

http://www.csiits.com/home/PDF/ApostilaSQL2.pdf

http://www.devmedia.com.br/principais-instrucoes-em-sql/37262

http://aprendaplsql.com/