Etiqueta: visualeditor
Etiqueta: visualeditor
 
(5 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:
<br>
*ORACLE
*SQL server (microsoft)
*IBM
 
Também há soluções de SGBDs gratuitas como:
*MySQL
*MariaDB
*Firebird
*PostgreSQL


= Código =
= Código =
<syntaxhighlight lang="python3">
<syntaxhighlight lang="sql">
Arquivo = "lista_contatos.txt" # Nome do arquivo
CREATE TABLE `canteiro` (
 
`canteiroid` INTEGER(11) NOT NULL AUTO_INCREMENT,
def ler_arquivo():              # Função que le o arquivo de texto
`nome` CHAR(20) COLLATE DEFAULT NULL,
    try:                        # Tratamento de erro
`luzdiaria` INTEGER(2) DEFAULT NULL,
        arq = open(Arquivo,"r+") # Abre o arquivo para leitura
`agua` INTEGER(3) DEFAULT NULL,
        print( '\n'+arq.read() ) # Quebra linha e mostra o conteudo
PRIMARY KEY (`canteiroid`),
        arq.close()             # Fecha o arquivo
UNIQUE KEY `canteiroid` (`canteiroid`)
    except IOError:              # Tratamento de erro
)
        print('\nArquivo não encontrado!')
 
CREATE TABLE `funcionario` (
def escrever_linhas(texto):        # Função que le e escreve no arquivo
`funcid` INTEGER(11) NOT NULL AUTO_INCREMENT,
    try:                          # Tratamento de erro
`nome` CHAR(80) COLLATE NOT NULL DEFAULT '',
        arq = open(Arquivo,"a+")  # Abre o arquivo para gravação no final do arquivo
`idade` INTEGER(2) UNSIGNED DEFAULT NULL,
        arq.writelines('\n'+texto) # Escreve no arquivo o parametro 'texto'
PRIMARY KEY (`funcid`),
        arq.close()               # Fecha o arquivo
UNIQUE KEY `funcid` (`funcid`)
        print('\nLinha gravada com sucesso')
)
    except IOError:                # Tratamento de erro
        print('\nErro ao abrir o arquivo!') # Mostra na tela uma mensagem de erro
CREATE TABLE `planta` (
 
`ID` INTEGER(11) NOT NULL AUTO_INCREMENT,
def pesquisar_contato(nome):
`nome` CHAR(20) COLLATE NOT NULL DEFAULT '',
    try:
`luzdiaria` INTEGER(2) DEFAULT NULL,
        arq = open(Arquivo, "r+")
`agura` INTEGER(2) DEFAULT NULL,
        dicionario = {'nome':'', 'telefone':'', 'email':''}
`peso` INTEGER(2) DEFAULT NULL,
        achei = False
PRIMARY KEY (`ID`),
        # lógica ler arquivo e comparar nome
UNIQUE KEY `ID` (`ID`)
        for cont, s in enumerate(arq.readlines()):
)
           
            dicionario['nome'], dicionario['telefone'],dicionario['email'] = s.split(' - ')
CREATE TABLE `plantio` (
            if dicionario['nome'] == nome:
`plantioID` INTEGER(11) NOT NULL AUTO_INCREMENT,
                print(cont)
`plantaID` INTEGER(11) NOT NULL,
                print('Nome: %s'% dicionario['nome'])
`funcID` INTEGER(11) NOT NULL ,
                print('Telefone: %s'% dicionario['telefone'])
`canteiroID` INTEGER(11) NOT NULL,
                print('Email: %s'% dicionario['email'])
`Data` DATE DEFAULT NULL,
                achei = True
`sementes` INTEGER(4) DEFAULT 0 NOT NULL,
               
PRIMARY KEY (`plantioID`),
        if not achei:
FOREIGN KEY(`plantaID`) REFERENCES planta(ID),
            print('Não existe %s' % (nome))
FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID),
 
FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID),
       
UNIQUE KEY `ID` (`plantioID`)
        # se achou imprime, se não mostra uma mensagem de nao encontrado
)
 
        arq.close
CREATE TABLE `colhido` (
       
`colhidoID` INTEGER(11) NOT NULL AUTO_INCREMENT,
    except IOError:
`plantaID` INTEGER(11) NOT NULL,
        print('\nContato não encontrado')
`funcID` INTEGER(11) NOT NULL ,
 
`canteiroID` INTEGER(11) NOT NULL,
 
`Data` DATE DEFAULT NULL,
def excluir_contatos():
`quantidade` INTEGER(4) DEFAULT 0 NOT NULL,
    try:
`peso` DOUBLE(4,3) DEFAULT 0 NOT NULL,
        arq =open('lista_contatos.txt','r+')
PRIMARY KEY (`colhidoID`),
        valores = arq.readlines()
FOREIGN KEY(`plantaID`) REFERENCES planta(ID),
        l = []
FOREIGN KEY(`funcID`) REFERENCES funcionario(funcID),
        splited =[]
FOREIGN KEY(`plantaID`) REFERENCES canteiro(canteiroID),
        nome = input('Entre com um nome:')
UNIQUE KEY `ID` (`colhidoID`)
        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>
</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>
<br>


= Diagrama de Casos de Uso =
= Diagrama de Casos de Uso =
[[Arquivo:Diagrama-bd.jpeg]]
[[Arquivo:Diagrama-bd.jpeg]]
----


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


= Interações com as tecnologias =
= Interações com as tecnologias =
Linha 137: Linha 98:


= Informações adicionais =
= Informações adicionais =
Descrever detalhes a mais sobre esse tema.
 
<br>
 
 
Ranking de sistemas de bancos de dados mais usados em 2015/2016:
 
[[Arquivo:Tabela sgbd.jpg]]
 
 


= Referências bibliográficas =
= Referências bibliográficas =
Relacionar aqui as referências bibliográficas no padrão ABNT.  
http://download.dominiosistemas.com.br/manuais/Introdu%E7%E3o%20a%20SQL.pdf
Bases de procura: Artigos, publicações acadêmicas, revistas e sites de fornecedores
 
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/
 
<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/