Você é membro da equipe da conferência SurgeTech, uma reunião de startups de tecnologia procurando publicidade e investidores. O organizador lhe incumbiu da tarefa de criar um banco de dados para gerenciar os participantes, as empresas, as apresentações, as salas e o comparecimento nas apresentações. Como esse banco de dados deve ser projetado?
Teremos de registrar a ID, o nome, o número de telefone, o email e o status VIP de cada participante.
CREATE TABLE ATTENDEE (
ATTENDEE_ID INTEGER PRIMARY KEY AUTOINCREMENT,
FIRST_NAME VARCHAR (30) NOT NULL,
LAST_NAME VARCHAR (30) NOT NULL,
PHONE INTEGER,
EMAIL VARCHAR (30),
VIP BOOLEAN DEFAULT (0)
);
A ID, o nome, a descrição e o contato principal (que deve ser listado como participante) de cada empresa devem ser registrados.
CREATE TABLE COMPANY (
COMPANY_ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME VARCHAR(30) NOT NULL,
DESCRIPTION VARCHAR(60),
PRIMARY_CONTACT_ID INTEGER NOT NULL
);
Cada período de apresentação também deve ser reservado para a empresa condutora e reservar um número de sala.
CREATE TABLE PRESENTATION (
PRESENTATION_ID INTEGER PRIMARY KEY AUTOINCREMENT,
BOOKED_COMPANY_ID INTEGER NOT NULL,
BOOKED_ROOM_ID INTEGER NOT NULL,
START_TIME TIME,
END_TIME TIME
);
CREATE TABLE PRESENTATION_ATTENDANCE (
TICKET_ID INTEGER PRIMARY KEY AUTOINCREMENT,
PRESENTATION_ID INTEGER,
ATTENDEE_ID INTEGER
);
Haverá salas disponíveis para as apresentações, e cada sala terá um número identicador, um número de andar e a capacidade de pessoas sentadas.
CREATE TABLE ROOM (
ROOM_ID INTEGER PRIMARY KEY AUTOINCREMENT,
FLOOR_NUMBER INTEGER NOT NULL,
SEAT_CAPACITY INTEGER NOT NULL
);
PRESENTATION.BOOKED_COMPANY_ID e PRESENTATION.ROOM_ID se conectam as chaves externas COMPANY_ID , ROOM_ID
CREATE TABLE PRESENTATION (
PRESENTATION_ID INTEGER PRIMARY KEY AUTOINCREMENT,
BOOKED_COMPANY_ID INTEGER NOT NULL,
BOOKED_ROOM_ID INTEGER NOT NULL,
START_TIME TIME,
COMPANY_ID INTEGER,
ROOM_ID INTEGER,
CONSTRAINT PRESENTATION_COMPANY_FK FOREIGN KEY (COMPANY_ID) REFERENCES COMPANY(COMPANY_ID),
CONSTRAINT PRESENTATION_ROOM_FK FOREIGN KEY (ROOM_ID) REFERENCES ROOM(ROOM_ID)
);
PRESENTATION_ATTENDEE.PRESENTATION_ID e PRESENTATION_ATTENDEE.ATTENDEE_ID se conectam as chaves externas PRESENTATION.PRESENTATION_ID , ATTENDEE.ATTENDEE_ID
CREATE TABLE PRESENTATION_ATTENDANCE (
TICKED_ID INTEGER PRIMARY KEY AUTOINCREMENT,
PRESENTATION_ID INTEGER,
ATTENDEE_ID INTEGER,
CONSTRAINT PRESENTATION_ATTENDANCE_PRESENTATION_FK FOREIGN KEY (PRESENTATION_ID) REFERENCES PRESENTATION(PRESENTATION_ID),
CONSTRAINT PRESENTATION_ATTENDANCE_PRESENTATION_FK_1 FOREIGN KEY (PRESENTATION_ID) REFERENCES PRESENTATION(PRESENTATION_ID),
CONSTRAINT PRESENTATION_ATTENDANCE_ATTENDEE_FK FOREIGN KEY (ATTENDEE_ID) REFERENCES ATTENDEE(ATTENDEE_ID)
);
CREATE TABLE COMPANY (
COMPANY_ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME VARCHAR NOT NULL,
DESCRIPTION VARCHAR,
PRIMARY_CONTACT_ID INTEGER NOT NULL,
ATTENDEE_ID INTEGER,
CONSTRAINT COMPANY_ATTENDEE_FK FOREIGN KEY (ATTENDEE_ID) REFERENCES ATTENDEE(ATTENDEE_ID)
);