diff --git a/base-datos-tutorial-Base.odb b/base-datos-tutorial-Base.odb new file mode 100644 index 0000000..4fe79f2 Binary files /dev/null and b/base-datos-tutorial-Base.odb differ diff --git a/base-datos-tutorial-Base.sql b/base-datos-tutorial-Base.sql new file mode 100644 index 0000000..de8fc82 --- /dev/null +++ b/base-datos-tutorial-Base.sql @@ -0,0 +1,128 @@ +DROP TABLE "Phone Number" IF EXISTS; +DROP TABLE "Schedule" IF EXISTS; +DROP TABLE "Assignment" IF EXISTS; +DROP TABLE "Patient" IF EXISTS; +DROP TABLE "Medical Doctor" IF EXISTS; +DROP TABLE "Therapist" IF EXISTS; +DROP TABLE "Therapist Number" IF EXISTS; +DROP TABLE "Medication" IF EXISTS; +DROP TABLE "Patient Medication" IF EXISTS; +DROP TABLE "Psychiatrist" IF EXISTS; + +CREATE TABLE "Psychiatrist" ( +"ID Number" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT +NULL PRIMARY KEY, +"First Name" VARCHAR(25) NOT NULL, +"Surname" VARCHAR(25) NOT NULL, +"Gender" CHAR(6), +"Street and number" VARCHAR(50), +"City" VARCHAR(25), +"Postal code" CHAR(5), +"State" CHAR(2), +"Phone Number" VARCHAR(10) +); +CREATE TABLE "Medical Doctor" ( +"ID Number" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"First Name" VARCHAR(25) NOT NULL, +"Surname" VARCHAR(25) NOT NULL, +"Gender" CHAR(6), +"Street and number" VARCHAR(50), +"City" VARCHAR(25), +"Postal code" VARCHAR(5), +"State" CHAR(2), +"Phone Number" VARCHAR(10) +); +CREATE TABLE "Patient" ( +"ID Number" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"First Name" VARCHAR(25) NOT NULL, +"Surname" VARCHAR(25) NOT NULL, +"Gender" CHAR(6), +"Date of Birth" DATE, +"Street and number" VARCHAR(50), +"City" VARCHAR(25), +"Postal code" VARCHAR(5), +"State" CHAR(2), +"Diagnosis" VARCHAR(60), +"Medical Doctor ID" INTEGER, +"Psychiatrist ID" INTEGER, +"Time of registry" TIMESTAMP, +CONSTRAINT "CK_PAT_GNDR" CHECK( "Gender" in ( 'Male', 'Female' ) ), +CONSTRAINT FK_PAT_PSY FOREIGN KEY ("Psychiatrist ID") REFERENCES "Psychiatrist" ("ID Number"), +CONSTRAINT FK_PAT_DOC FOREIGN KEY ("Medical Doctor ID") REFERENCES "Medical Doctor" ("ID Number") +); +CREATE TABLE "Phone Number" ( +"Phone ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Patient ID" INTEGER NOT NULL, +"Number" VARCHAR(10), +"Description" VARCHAR(10), +CONSTRAINT FK_PAT_PHN FOREIGN KEY ("Patient ID") REFERENCES "Patient" ("ID Number") +); +CREATE TABLE "Therapist" ( +"ID Number" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"First Name" VARCHAR(25) NOT NULL, +"Surname" VARCHAR(25) NOT NULL, +"Gender" CHAR(6), +"Street and number" VARCHAR(50), +"City" VARCHAR(25), +"Postal code" VARCHAR(5), +"State" CHAR(2), +"Tax number" VARCHAR(20), +"Academic degree" VARCHAR(25), +"License number" VARCHAR(15), +"Hiring date" DATE NOT NULL, +"Termination date" DATE, +CONSTRAINT "CK_THP_GNDR" CHECK( "Gender" in ( 'Male', 'Female' ) ), +CONSTRAINT "CK_TERM_DT" CHECK( "Termination date" > "Hiring date" ) +); +CREATE TABLE "Therapist Number" ( +"Phone ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL +PRIMARY KEY, +"Therapist ID" INTEGER, +"Number" VARCHAR(10), +"Description" VARCHAR(10), +CONSTRAINT FK_THP_PHN FOREIGN KEY ("Therapist ID") REFERENCES "Therapist" ("ID Number") +); +CREATE TABLE "Assignment" ( +"Assignment ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Patient ID" INTEGER NOT NULL, +"Therapist ID" INTEGER NOT NULL, +"Date assigned" DATE DEFAULT CURRENT_DATE NOT NULL, +"Date case closed" DATE, +CONSTRAINT FK_PAT_ASMT FOREIGN KEY ("Patient ID") REFERENCES "Patient" ("ID Number"), +CONSTRAINT FK_THP_ASMT FOREIGN KEY ("Therapist ID") REFERENCES "Therapist" ("ID Number"), +CONSTRAINT "CK_CLOSE_DT" CHECK( "Date case closed" >= "Date assigned" ) +); +CREATE TABLE "Schedule" ( +"Schedule ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Assignment ID" INTEGER, +"Slot date" DATE NOT NULL, +"Slot hour" TIME NOT NULL, +"Status of the session" VARCHAR(20), +CONSTRAINT FK_SCH_ASMT FOREIGN KEY ("Assignment ID") REFERENCES "Assignment" ("Assignment ID") +); +CREATE TABLE "Payment" ( +"Payment ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Patient ID" INTEGER NOT NULL, +"Date and time of Payment" TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP, +"Amount" DECIMAL (10, 2) NOT NULL, +"Notes" VARCHAR(100), +"Result" CHAR(6) NOT NULL, +CONSTRAINT FK_PAT_PYMNT FOREIGN KEY ("Patient ID") REFERENCES "Patient" ("ID Number"), +CONSTRAINT CK_DBT CHECK("Result" IN ('DEBIT', 'CREDIT')) +); +CREATE TABLE "Medication" ( +"Medication ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Name" VARCHAR(30) NOT NULL, +"Description" VARCHAR(256) +); +CREATE TABLE "Patient Medication" ( +"Patient ID" INTEGER NOT NULL, +"Medication ID" INTEGER NOT NULL, +"Dosage" VARCHAR(50), +"Start date" DATE DEFAULT CURRENT_DATE, +"End date" DATE, +CONSTRAINT PK_PAT_MED PRIMARY KEY ("Patient ID", "Medication ID" ), +CONSTRAINT FK_MED_PAT FOREIGN KEY ("Medication ID") REFERENCES "Medication" ("Medication ID"), +CONSTRAINT FK_PAT_MED FOREIGN KEY ("Patient ID") REFERENCES "Patient" ("ID Number"), +CONSTRAINT CK_END_DT CHECK( "End date" >= "Start date" ) +); diff --git a/base-datos-tutorial-Base_ES.sql b/base-datos-tutorial-Base_ES.sql new file mode 100644 index 0000000..f41ad17 --- /dev/null +++ b/base-datos-tutorial-Base_ES.sql @@ -0,0 +1,140 @@ +DROP TABLE "Medicación-paciente" IF EXISTS; +DROP TABLE "Medicación" IF EXISTS; +DROP TABLE "Pago" IF EXISTS; +DROP TABLE "Horario" IF EXISTS; +DROP TABLE "Asignación" IF EXISTS; +DROP TABLE "Teléfono de terapeuta" IF EXISTS; +DROP TABLE "Teléfono" IF EXISTS; +DROP TABLE "Paciente" IF EXISTS; +DROP TABLE "Psiquiatra" IF EXISTS; +DROP TABLE "Médico" IF EXISTS; +DROP TABLE "Terapeuta" IF EXISTS; + +CREATE TABLE "Psiquiatra" ( +"Número de ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Nombre" VARCHAR(25) NOT NULL, +"Apellido" VARCHAR(25) NOT NULL, +"Sexo" CHAR(6), +"Calle y número" VARCHAR(50), +"Ciudad" VARCHAR(25), +"Código postal" CHAR(5), +"Estado" CHAR(2), +"Teléfono" VARCHAR(10) +); + +CREATE TABLE "Médico" ( +"Número de ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Nombre" VARCHAR(25) NOT NULL, +"Apellido" VARCHAR(25) NOT NULL, +"Sexo" CHAR(6), +"Calle y número" VARCHAR(50), +"Ciudad" VARCHAR(25), +"Código postal" CHAR(5), +"Estado" CHAR(2), +"Teléfono" VARCHAR(10) +); + +CREATE TABLE "Paciente" ( +"Número de ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Nombre" VARCHAR(25) NOT NULL, +"Apellido" VARCHAR(25) NOT NULL, +"Sexo" CHAR(6), +"Fecha de nacimiento" DATE, +"Calle y número" VARCHAR(50), +"Ciudad" VARCHAR(25), +"Código postal" CHAR(5), +"Estado" CHAR(2), +"Diagnóstico" VARCHAR(60), +"ID de médico" INTEGER, +"ID de psiquiatra" INTEGER, +"Hora de registro" TIMESTAMP, +CONSTRAINT CK_PAT_GNDR CHECK( "Sexo" in ('Masculino', 'Femenino')), +CONSTRAINT FK_PAT_PSY FOREIGN KEY ("ID del psiquiatra") REFERENCES "Psiquiatra" ("Número de identificación"), +CONSTRAINT FK_PAT_DOC FOREIGN KEY ("ID del médico") REFERENCES "Médico" ("Número de ID") +); + +CREATE TABLE "Número de teléfono" ( +"ID de teléfono" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"ID del paciente" INTEGER NOT NULL, +"Número" VARCHAR(10), +"Descripción" VARCHAR(10), +CONSTRAINT FK_PAT_PHN FOREIGN KEY ("ID del paciente") REFERENCES "Paciente" ("Número de ID") +); + +CREATE TABLE "Terapeuta" ( +"Número de ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Nombre" VARCHAR(25) NOT NULL, +"Apellido" VARCHAR(25) NOT NULL, +"Sexo" CHAR(6), +"Calle y número" VARCHAR(50), +"Ciudad" VARCHAR(25), +"Código postal" CHAR(5), +"Estado" CHAR(2), +"ID tributario" VARCHAR(20), +"Título académico" VARCHAR(25), +"Número de licencia" VARCHAR(15), +"Fecha de contratación" DATE NOT NULL, +"Fecha de terminación" DATE, +CONSTRAINT "CK_THP_GNDR" CHECK("Género" IN ('Masculino', 'Femenino')), +CONSTRAINT "CK_TERM_DT" CHECK( "Fecha de terminación" > "Fecha de contratación") +); + +CREATE TABLE "Número de terapeutas" ( +"ID de teléfono" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"ID del terapeuta" INTEGER, +"Número" VARCHAR(10), +"Descripción" VARCHAR(10), +CONSTRAINT FK_THP_PHN FOREIGN KEY ("ID del terapeuta") REFERENCES "Terapeuta" ("Número de ID") +); + +CREATE TABLE "Asignación" ( +"ID de asignación" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"ID del paciente" INTEGER NOT NULL, +"ID del terapeuta" INTEGER NOT NULL, +"Fecha asignada" DATE DEFAULT CURRENT_DATE NOT NULL, +"Fecha de caso cerrado" DATE, +CONSTRAINT FK_PAT_ASMT FOREIGN KEY ("ID del paciente") REFERENCES "Paciente" +(Número de ID), +CONSTRAINT FK_THP_ASMT FOREIGN KEY ("ID del terapeuta") REFERENCES "Terapeuta" ("Número de ID"), +CONSTRAINT "CK_CLOSE_DT" CHECK( "Fecha de cierre del caso" >= "Fecha de asignación") +); + +CREATE TABLE "Horario" ( +"ID Horario" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"ID de asignación" INTEGER, +"Fecha de la ranura" DATE NOT NULL, +"Hora del intervalo" TIME NOT NULL, +"Estado de la sesión" VARCHAR(20), +CONSTRAINT FK_SCH_ASMT FOREIGN KEY ("ID de asignación") REFERENCES +"Asignación" ("ID de asignación") +); + +CREATE TABLE "Pago" ( +"ID de pago" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"ID del paciente" INTEGER NOT NULL, +"Fecha y hora de pago" TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP, +"Cantidad" DECIMAL (10, 2) NOT NULL, +"Notas" VARCHAR(100), +"Resultado" CHAR(6) NOT NULL, +CONSTRAINT FK_PAT_PYMNT FOREIGN KEY ("ID del paciente") REFERENCES "Paciente" ("Número de ID"), +CONSTRAINT CK_DBT CHECK("Resultado" IN ('DÉBITO', 'CRÉDITO')) +); + +CREATE TABLE "Medicación" ( +"ID de medicamento" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, +"Nombre" VARCHAR(30) NOT NULL, +"Descripción" VARCHAR(256) +); + +CREATE TABLE "Medicación-paciente" ( +"ID del paciente" INTEGER NOT NULL, +"ID de medicamento" INTEGER NOT NULL, +"Dosificación" VARCHAR(50), +"Fecha de inicio" DATE DEFAULT CURRENT_DATE, +"Fecha de cierre" DATE, +CONSTRAINT PK_PAT_MED PRIMARY KEY ("ID del paciente", "ID del medicamento"), +CONSTRAINT FK_MED_PAT FOREIGN KEY ("Medication ID") REFERENCES "Medication" ("Medication ID"), +CONSTRAINT FK_PAT_MED FOREIGN KEY ("ID del paciente") REFERENCES "Paciente" ("Número de ID"), +CONSTRAINT CK_END_DT CHECK( "Fecha de finalización" >= "Fecha de inicio" ) +); + diff --git a/capitulo-07_ES-trad-MC.odt b/capitulo-07_ES-trad-MC.odt index 72d39af..c3307e0 100644 Binary files a/capitulo-07_ES-trad-MC.odt and b/capitulo-07_ES-trad-MC.odt differ