Nosso projeto consiste em desenvolver um script na linguagem SQL (sintaxe SQLite). Esse script deve contemplar a criação das tabelas de acordo com o modelo físico abaixo:
Um colega escreveu isso:
Bem, primeiro vamos definir a ordem da criação das tabelas.
1. SITUACAO
2. SOCIO
3. MARCA
4. CARRO
Não precisa ser necessariamente nessa ordem, mas optei por ela. Após definir a ordem, crie cada tabela apenas colocando o nome das colunas. Ex.:
-- Tabela da Situacao
CREATE TABLE SITUACAO (
id_situacao INTEGER NOT NULL PRIMARY KEY,
situacao VARCHAR(10),
id_socio INTEGER DEFAULT NULL,
FOREIGN KEY(id_socio) REFERENCES SOCIO(id_socio) -- Para (1,1)
);
-- Tabela do Socio
CREATE TABLE SOCIO (
id_socio INTEGER NOT NULL PRIMARY KEY,
nome VARCHAR(256),
cpf VARCHAR(11),
email VARCHAR(256),
id_situacao INTEGER,
FOREIGN KEY(id_situacao) REFERENCES SITUACAO(id_situacao)
);
-- Tabela da Marca
CREATE TABLE MARCA (
id_marca INTEGER NOT NULL PRIMARY KEY,
marca VARCHAR(128),
id_carro INTEGER DEFAULT NULL,
FOREIGN KEY(id_carro) REFERENCES CARRO(id_carro) -- Para (1,1)
);
-- Tabela do Carro
CREATE TABLE CARRO (
id_carro INTEGER NOT NULL PRIMARY KEY,
modelo VARCHAR(128),
cor VARCHAR(64),
placa VARCHAR(10),
id_socio INTEGER,
id_marca INTEGER,
FOREIGN KEY(id_socio) REFERENCES SOCIO(id_socio),
FOREIGN KEY(id_marca) REFERENCES MARCA(id_marca)
);
Mas eu preciso salvar isso em PDF para poder enviar.
E não sei como que faço.
Tem como alguém me ajudar?
Soluções para a tarefa
Inicialmente é preciso realizar a definição da ordem que as tabelas serão criadas:
1. SITUAÇÃO
2. SÓCIO
3. MARCA
4. CARRO
Após a definição da ordem, deve-se criar cada tabela somente colocando o nome das colunas.
Exemplo:
CREATE TABLE TABELA (
campo1,
campo2,
campoN
);
É necessário fazer para todas as tabelas. Após, deve-se adicionar o tipo dos dados e, nos campos chaves, adicionar a propriedade de primary key e not null.
Depois deve-se criar os campos que serão a chave estrangeira e abaixo declará-los como chaves estrangeiras e para qual tabela.atributo farão o referenciamento.
Para a criação da relação (1, 1), apenas crie uma foreign key nas duas tabelas.
Tabela Situação
CREATE TABLE SITUACAO (
id_situacao INTEGER NOT NULL PRIMARY KEY,
situacao VARCHAR(10),
id_socio INTEGER DEFAULT NULL,
FOREIGN KEY(id_socio) REFERENCES SOCIO(id_socio) -- Para (1,1)
);
Tabela Sócio
CREATE TABLE SOCIO (
id_socio INTEGER NOT NULL PRIMARY KEY,
nome VARCHAR(256),
cpf VARCHAR(11),
email VARCHAR(256),
id_situacao INTEGER,
FOREIGN KEY(id_situacao) REFERENCES SITUACAO(id_situacao)
);
Tabela Marca
CREATE TABLE MARCA (
id_marca INTEGER NOT NULL PRIMARY KEY,
marca VARCHAR(128),
id_carro INTEGER DEFAULT NULL,
FOREIGN KEY(id_carro) REFERENCES CARRO(id_carro) -- Para (1,1)
);
Tabela Carro
CREATE TABLE CARRO (
id_carro INTEGER NOT NULL PRIMARY KEY,
modelo VARCHAR(128),
cor VARCHAR(64),
placa VARCHAR(10),
id_socio INTEGER,
id_marca INTEGER,
FOREIGN KEY(id_socio) REFERENCES SOCIO(id_socio),
FOREIGN KEY(id_marca) REFERENCES MARCA(id_marca)
);
Acrescente esse script em um arquivo com a extensão SQL (script.sql) e após faça uma base de dados com o sqlite3.
Como por exemplo:
$ sqlite3 minha_base.sqlite3
Ou abra o sqlite3 e use o comando:
sqlite> .open minha_base.sqlite3.
Depois execute o script para criar as tabelas e suas relações:
sqlite> .read script.sql
Por fim, liste as tabelas com o comando .tables e veja a estrutura delas com o .schema.
Bons estudos!