Banco de dados exemplo...

Iniciado por Watila, 19 de Março , 2008, 12:19:01 AM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

Watila

Um dos exercícios que tive, achei bastante legal, resolvi dividir aqui com vcs, me desculpe se tem algum erro ou tem algo incompleto (a meu ver ta tudo certo), espero que gostem, estou colocando da maneira mais explicavel possivel, se tiver algo errado pode corrigir e colocar o certo =)

Abraços...




1.

Empregado (ssn, nome, datanasc, end, sexo, salario, supervemp, alocacaodep)
Departamento (numero, nome, gerentemp, datainicio)
Depto_localização (dnumero, dlocalizacao)
Projeto (numero, nome, localizacao, numdep)
Trabalho_em (ssnemp, numproj, horas)
Dependete (ssn, nome_dependente, sexo, datanasc, parentesco)

2.


3.
   NENHUMA  INTEGRIDADE

CREATE TABLE EMPREGADO  ( SSN INTEGER,
               NOME VARCHAR(50),
               DATANASC DATE,
               END VARCHAR(50),
               SEXO CHAR(1),
               SALARIO DECIMAL(10,2),
              SUPERVEMP INTEGER,
              ALOCACAODEP INTEGER);   

CREATE TABLE DEPARTAMENTO  ( NUMERO INTEGER,
               NOME VARCHAR(50),
               GERENTEMP INTEGER,
               DATAINICIO DATE);

CREATE TABLE DEPTO_LOCALIZACAO  ( DNUMERO INTEGER,
               DLOCALIZACAO VARCHAR(20));

CREATE TABLE PROJETO  ( NUMERO INTEGER,
               NOME VARCHAR(50),
               LOCALIZACAO VARCHAR(20),
               NUMDEP INTEGER);

CREATE TABLE TRABALHA_EM  ( SSNEMP INTEGER,
               NUMPROJETO INTEGER,
               HORA TIME);

CREATE TABLE DEPENDENTE  ( ESSN INTEGER,
               NOME_DEPENDENTE VARCHAR(50),
               SEXO CHAR(1),
               DATANASC DATE,
               PARENTESCO VARCHAR(20));


 
·   BAIXA INTEGRIDADE

CREATE TABLE EMPREGADO  ( SSN INTEGER NOT NULL PRIMARY KEY,
               NOME VARCHAR(50),
               DATANASC DATE,
               END VARCHAR(50),
               SEXO CHAR(1),
               SALARIO DECIMAL(10,2),
              SUPERVEMP INTEGER,
              ALOCACAODEP INTEGER,
                   PRIMARY KEY (SUPERVEMP) REFERENCES EMPREGADO (SSN),
                   PRIMARY KEY (ALOCACAODEP) REFERENCES DEPARTAMENTO( NUMERO  ) );

CREATE TABLE DEPARTAMENTO ( NUMERO INTEGER NOT NULL PRIMARY KEY,
               NOME VARCHAR(50),
               GERENTEMP INTEGER,
               DATAINICIO DATE,
          PRIMARY KEY (GERENTEMP) REFERENCES EMPREGADO (SSN) );

CREATE TABLE DEPTO_LOCALIZACAO  ( DNUMERO INTEGER NOT NULL PRIMARY KEY,
               DLOCALIZACAO VARCHAR(20) NOT NULL,
PRIMARY KEY (DNUMERO) REFERENCES DEPARTAMENTO (NUMERO));

CREATE TABLE PROJETO  ( NUMERO INTEGER NOT NULL PRIMARY KEY,
               NOME VARCHAR(50),
               LOCALIZACAO VARCHAR(20),
               NUMDEP INTEGER,
                   PRIMARY KEY (NUMDEP) REFERENCES DEPARTAMENTO (NUMERO) );

CREATE TABLE TRABALHA_EM  ( SSNEMP INTEGER,
               NUMPROJETO INTEGER,
               HORA TIME,
          PRIMARY KEY (SSNEMP) REFERENCES EMPREGADO (SSN),
                   PRIMARY KEY (NUMPROJETO) REFERENCES PROJETO (NUM) );

CREATE TABLE DEPENDENTE  ( ESSN INTEGER,
               NOME_DEPENDENTE VARCHAR(50),
               SEXO CHAR(1),
               DATANASC DATE,
               PARENTESCO VARCHAR(20),
          PRIMARY KEY (ESSN) REFERENCES EMPREGADO (SSN) );
 
·   ALTA INTEGRIDADE
            
CREATE TABLE EMPREGADO  ( SSN INTEGER NOT NULL,
               NOME VARCHAR(50) NOT NULL,
               DATANASC DATE NOT NULL,
               END VARCHAR(50) NOT NULL,
               SEXO CHAR(1) NOT NULL,
               SALARIO DECIMAL(10,2) NOT NULL,
              SUPERVEMP INTEGER NOT NULL,
              ALOCACAODEP INTEGER NOT NULL,
          CONSTRAINT PK_EMPREGADO PRIMARY KEY(SSN),
                   CONSTRAINT FK_EMPREGADO FOREING KEY(SUPERVEMP) REFERENCES EMPREGADO (SSN),
          CONSTRAINT FK_DEPARTAMENTO FOREING KEY(ALOCACAODEP) REFERENCES DEPARTAMENTO (NUMERO),
                   CONSTRAINT MIN_SALARIO CHECK (SALARIO > 0),
          CONSTRAINT OPCOES_SEXO CHECK (SEXO='F' OR SEXO='M') );

CREATE TABLE DEPARTAMENTO ( NUMERO INTEGER NOT NULL,
               NOME VARCHAR(50) NOT NULL,
               GERENTEMP INTEGER NOT NULL,
               DATAINICIO DATE NOT NULL,
          CONSTRAINT PK_DEPARTAMENTO PRIMARY KEY(NUMERO),
          CONSTRAINT FK_EMPREGADO FOREING KEY(GERENTEMP) REFERENCES EMPREGADO (SSN) );

CREATE TABLE DEPTO_LOCALIZACAO  ( DNUMERO INTEGER NOT NULL,
               DLOCALIZACAO VARCHAR(20) NOT NULL
                   CONSTRAINT PK_DEPTO_LOCALIZACAO PRIMARY KEY(DNUMERO),
          CONSTRAINT FK_DEPARTAMENTO FOREING KEY(DNUMERO) REFERENCES DEPARTAMENTO(NUMERO));

CREATE TABLE PROJETO  ( NUMERO INTEGER NOT NULL,
               NOME VARCHAR(50) NOT NULL,
               LOCALIZACAO VARCHAR(20) NOT NULL,
               NUMDEP INTEGER NOT NULL,
           CONSTRAINT PK_PROJETO PRIMARY KEY(NUMERO),
                    CONSTRAINT FK_DEPARTAMENTO FOREING KEY(NUMDEP) REFERENCES DEPARTAMENTO (NUMER) );

 
CREATE TABLE TRABALHA_EM  ( SSNEMP INTEGER NOT NULL,
               NUMPROJETO INTEGER NOT NULL,
               HORA TIME NOT NULL,
                   CONSTRAINT PK_TRABALHA_EM PRIMARY KEY(SSNEMP, NUMPROJETO),
                   CONSTRAINT FK_EMPREGADO FOREING KEY(SSEMP) REFERENCES EMPREGADO (SSN),
          CONSTRAINT FK_PROJETO FOREING KEY(NUMPROJETO) REFERENCES PROJETO (NUMERO) );

CREATE TABLE DEPENDENTE  ( ESSN INTEGER NOT NULL,
               NOME_DEPENDENTE VARCHAR(50) NOT NULL,
               SEXO CHAR(1) NOT NULL,
               DATANASC DATE NOT NULL,
               PARENTESCO VARCHAR(20) NOT NULL,
    CONSTRAINT PK_DEPENDENTE PRIMARY KEY(ESSN),
             CONSTRAINT FK_EMPREGADO FOREING KEY(ESSN) REFERENCES EMPREGADO (SSN),
 CONSTRAINT OPCOES_SEXO CHECK (SEXO='F' OR SEXO='M') );

Skipolit

SQL , estou a dar isso na escola =) , muito bacano , obrigado por aprtilhares este material aqui []