Desenvolvimento de software Aula 7 Fabiano Gonçalves dos Santos Sistemas de Banco de Dados • • • • • • • Redundância e inconsistência de dados: Dificuldade de acesso a dados: Isolamento de dados Problemas de integridade Problemas de atomicidade Anomalias de acesso concorrente Problemas de segurança 2 Sistema Gerenciador de Banco de Dados (SGBD) • A arquitetura de implementação de um banco de dados costuma seguir um de três padrões: – Banco de dados embutido – Banco de dados local – Arquitetura cliente-servidor 3 Arquitetura cliente-servidor 4 Problemas decorrentes de armazenamento de dados em arquivos de texto ou planilhas ou relacionados a bancos de dados não centralizados • • • • • • • • • Separação entre programas e dados Armazenamento persistente de dados Padronização de dados Compartilhamento de dados Controle de redundância e restrições de integridade Restrições de acesso Eliminação de código redundante nas aplicações para gerenciamento de dados e flexibilidade Disponibilidade Escalabilidade 5 Modelagem de Dados • Entidades – Pessoas – Ideias – Avaliações • Atributos • Tabelas • Super-chave • Chaves Candidatas • Chaves Primárias • Relacionamentos • Esquema 6 Regras • Regras de Entidades • Regras de Relacionamentos • Regras de Atributos • Regras de Negócio 7 SQL Server https://upload.wikimedia.org/ • O SQL Server é o sistema gerenciador de bancos de dados da Microsoft 8 Tipos de dados do SQL Server Numéricos exatos bigint -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807) Ocupa 8 bytes de armazenamento bit Tipo de dados inteiro que pode armazenar os valores 1, 0 ou NULL. decimal Tipo numérico que pode ter precisão e escala definidos. Exemplo: [Coluna_exemplo decimal(5,2)] Assim, essa coluna armazenará valores como 123,00. Precisão é o numero total de dígitos, e escala é a quantidade de dígitos após o ponto decimal. A quantidade de bytes ocupados depende de precisão e escala definidos. int -2^31 (-2.147.483.648) a 2^31-1 (2.147.483.647) Ocupa 4 bytes de armazenamento money -922.337.203.685.477,5808 a 922.337.203.685.477,5807 Ocupa 8 bytes de armazenamento numeric É equivalente ao tipo decimal. smallint -2^15 (-32.768) a 2^15-1 (32.767) Ocupa 2 bytes de armazenamento smallmoney -214.748,3648 a 214.748,3647 Ocupa 4 bytes de armazenamento tinyint 0 a 255 Ocupa 1 byte de armazenamento 9 Tipos de dados do SQL Server Numéricos exatos bigint -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807) Ocupa 8 bytes de armazenamento bit Tipo de dados inteiro que pode armazenar os valores 1, 0 ou NULL. decimal Tipo numérico que pode ter precisão e escala definidos. Exemplo: [Coluna_exemplo decimal(5,2)] Assim, essa coluna armazenará valores como 123,00. Precisão é o numero total de dígitos, e escala é a quantidade de dígitos após o ponto decimal. A quantidade de bytes ocupados depende de precisão e escala definidos. int -2^31 (-2.147.483.648) a 2^31-1 (2.147.483.647) Ocupa 4 bytes de armazenamento money -922.337.203.685.477,5808 a 922.337.203.685.477,5807 Ocupa 8 bytes de armazenamento numeric É equivalente ao tipo decimal. smallint -2^15 (-32.768) a 2^15-1 (32.767) Ocupa 2 bytes de armazenamento smallmoney -214.748,3648 a 214.748,3647 Ocupa 4 bytes de armazenamento tinyint 0 a 255 Ocupa 1 byte de armazenamento 10 Tipos de dados do sql server Numéricos aproximados float Ocupada até 8 bytes, representando valores: [-1,79E+308 a -2,23E-308]; [0]; [2,23E-308 a 1,79E+308] real Ocupa 4 bytes, representando valores: [-3,40E+38 a -1,18E-38]; [0]; [1,18E-38 a 3,40E+38] 11 Tipos de dados do sql server Data e hora Date Define uma data no SQL Server. Ocupa 3 bytes. Formato da literal: AAAA-MM-DD Intervalo: 000-01-01 a 9999-12-31 datetime2 Define uma data combinada com uma hora do dia que se baseia em um período de 24 horas. Ocupa 6 bytes Formato da literal: YYYY-MM-DD hh:mm:ss[segundos fracionários] Intervalo: 0001-01-01 a 9999-12-31 datetime Define uma data combinada com uma hora do dia que inclui frações de segundos e se baseia em um período de 24 horas. Ocupa 8 bytes Intervalo de datas: Janeiro 1, 1753, a dezembro 31, 9999 Intervalo de horas: 00:00:00 a 23:59:59.997 datetimeoffset Define a data combinada com uma hora de um dia que possui reconhecimento de fuso horário e é baseada em um relógio de 24 horas. Ocupa 10 bytes. Formato da literal: AAAA-MM-DD hh:mm:ss[. nnnnnnn] [{+|-}hh:mm] Intervalo de datas: 0001-01-01 a 9999-12-31 Intervalo de horas: 00:00:00 a 23:59:59.9999999 smalldatetime Define uma data que é combinada com uma hora do dia. Ocupa 4 bytes. Intervalo de datas: 1900-01-01 a 2079-06-06 Intervalo de horas: 00:00:00 a 23:59:59 time Define uma hora de um dia. A hora se encontra sem reconhecimento de fuso horário e se baseia em um relógio de 24 horas. Formato da literal: hh:mm:ss[. nnnnnnn] Intervalo: 00:00:00.0000000 a 23:59:59.9999999 Ocupa 5 bytes 12 Tipos de dados do sql server Cadeias de caracteres char Dados de cadeia de caracteres não Unicode de comprimento fixo. Uso: char(n), onde n é o tamanho da cadeia e pode ser de 0 a 8.000. Número de bytes ocupados é igual a n. text Dados não Unicode de comprimento variável na página de código do servidor e com um comprimento máximo de cadeia de caracteres de 2^31-1 (2.147.483.647). varchar Dados de cadeia de caracteres não Unicode de comprimento variável. Uso: char(n), onde n é o tamanho máximo da cadeia e pode ser de 0 a 8.000. Número de bytes ocupados é igual a n. Cadeias de caracteres Unicode nchar Dados de cadeia de caracteres Unicode de comprimento fixo. Uso: nchar(n), onde n é o tamanho da cadeia e pode ser de 0 a 4.000. Número de bytes ocupados é igual a 2×n. ntext Dados Unicode de comprimento variável com um comprimento máximo de cadeia de caracteres de 2^30 - 1 (1.073.741.823) bytes. O tamanho de armazenamento, em bytes, é duas vezes o comprimento da cadeia de caracteres inserido. nvarchar Dados de cadeia de caracteres Unicode de comprimento variável. Uso: nchar(n), onde n é o tamanho máximo da cadeia e pode ser de 0 a 4.000. Número de bytes ocupados é igual a 2×n. 13 Tipos de dados do sql server Cadeias de caracteres binárias binary Dados binários de comprimento fixo com um comprimento de n bytes, em que n é um valor de 1 a 8.000. O tamanho de armazenamento é n bytes. Uso: binary(n) image Dados binários do comprimento variável de 0 a 2^31-1 (2.147.483.647) bytes. varbinary Dados binários de comprimento variável. n pode ser um valor de 1 a 8.000. Uso: varbinary(n) Outros tipos de dados cursor Um tipo de dados para parâmetros OUTPUT de variáveis ou procedimento armazenado que contém uma referência a um cursor. Serve para manipulações do banco de dados. hierarchyid hierarchyid é um tipo de dados de tamanho variável. Usa-se hierarchyid para representar posição em uma hierarquia, e assim é possível fazer uma relação hierárquica entre as entidades no BD. sql_variant Um tipo de dados que armazena valores de vários tipos de dados que o SQL Server. Ele é como um coringa para dados. table É um tipo de dados especial que pode ser usado para armazenar um conjunto de resultados para processamento posterior. table é utilizada principalmente para o armazenamento temporário de um conjunto de linhas retornadas como o conjunto de resultados de uma função com valor de tabela. timestamp É um tipo de dados que expõe números binários exclusivos, gerados automaticamente, em um banco de dados. Serve para controlar versões através de um tempo relativo. uniqueidentifier É um Identificador Único Global (GUID - Globally Unique IDentifier) de 16 bytes. Um número único sequencialmente gerado. xml É o tipo de dados que armazena dados XML. 14 Desenvolvimento de software Atividade 7 Fabiano Gonçalves dos Santos 15 Questão de concurso O SQL Server possui uma linguagem relacional denominada Transact-SQL, que é um dialeto da linguagem SQL. • Certo • Errado Ano: 2010 Banca: CESPE Órgão: Banco da Amazônia Prova: Técnico Científico - Tecnologia da Informação 16 Questão de concurso O SQL Server possui uma linguagem relacional denominada Transact-SQL, que é um dialeto da linguagem SQL. • Certo • Errado Ano: 2010 Banca: CESPE Órgão: Banco da Amazônia Prova: Técnico Científico - Tecnologia da Informação 17 Questão de concurso O SQL Server oferece escalabilidade, mas não pode implementar o data warehouse. Certo Errado Ano: 2010 Banca: CESPE Órgão: Banco da Amazônia Prova: Técnico Científico - Tecnologia da Informação 18 Questão de concurso O SQL Server oferece escalabilidade, mas não pode implementar o data warehouse. Certo Errado Ano: 2010 Banca: CESPE Órgão: Banco da Amazônia Prova: Técnico Científico - Tecnologia da Informação 19 Questão de concurso O Microsoft SQL Server 2012 provê ferramentas específicas para Business Intelligence. Uma dessas ferramentas possibilita a apresentação e visualização de dados (View), enquanto a outra auxilia o usuário no acesso aos dados que são exibidos (Model). Essas ferramentas são chamadas, respectivamente, a) SQL Viewer - Data Miner b) Data Explorer - Data Acquirer c) Power View - Power Pivot. d) MS Exhibition - SQL Query+ e) Data Show - Data Miner Ano: 2013 Banca: FCC Órgão: TRT - 15ª Região Prova: Analista Judiciário Tecnologia da Informação 20 Questão de concurso O Microsoft SQL Server 2012 provê ferramentas específicas para Business Intelligence. Uma dessas ferramentas possibilita a apresentação e visualização de dados (View), enquanto a outra auxilia o usuário no acesso aos dados que são exibidos (Model). Essas ferramentas são chamadas, respectivamente, a) SQL Viewer - Data Miner b) Data Explorer - Data Acquirer c) Power View - Power Pivot. d) MS Exhibition - SQL Query+ e) Data Show - Data Miner Ano: 2013 Banca: FCC Órgão: TRT - 15ª Região Prova: Analista Judiciário Tecnologia da Informação 21 Questão de concurso Consultas podem ser criadas no SQL Server 2008, com maior produtividade, baseadas em um modelo de entidades de dados, ou na linguagem de programação em vez de SQL, por meio da linguagem a) SSIS. b) LINQ. c) determinar os atributos da tabela. d) Microsoft Visual C#. Ano: 2010 e) Microsoft Visual Basic. Banca: FCC Órgão: DPE-SP Prova: Agente de Defensoria Administrador de Banco de Dados 22 Questão de concurso Consultas podem ser criadas no SQL Server 2008, com maior produtividade, baseadas em um modelo de entidades de dados, ou na linguagem de programação em vez de SQL, por meio da linguagem a) SSIS. b) LINQ. c) determinar os atributos da tabela. d) Microsoft Visual C#. Ano: 2010 e) Microsoft Visual Basic. Banca: FCC Órgão: DPE-SP Prova: Agente de Defensoria Administrador de Banco de Dados 23