🚧 Under construction — VoTechWorks is being built. A free tech program — complimentary, as our commitment to get America working.
voTechWorksGrade 13 · a vocational technology learning center, by urbanicity
newSchoolWorks.com › VoTechWorks › Technology & Design › Data Management / Database Administration › Relational Design & Normalization › Lesson 8
TEC-DATA86-02 · Lesson 8 · 10 clock hours · lab

Integrated Schema Design Project

Objective. Students will independently design, normalize, implement, and document a relational database schema from a new business requirements narrative, demonstrating end-to-end mastery of all course skills.

⚠ Pending professional review

This lesson, its worked examples and its practice questions has not yet been verified by an industry-certified professional or by a certification or approval body. It is a study draft and may contain errors. Do not use it as instructions for work on a job site or on live equipment. Always follow your instructor, your supervising professional, and current official references and regulations.

VoTechWorks program approval and accreditation are still in progress. Credentials are issued only by the certifying bodies named in each program, after their own exams.

Integrated Schema Design Project

This lab is the capstone of your Relational Design & Normalization course. You will work independently from a business requirements narrative through to a fully implemented, normalized, and documented PostgreSQL database. This mirrors exactly what a database administrator or data engineer does on the job when a new system is commissioned.

Step 1: Requirements Analysis

Before touching any design tool, read the veterinary clinic narrative carefully — twice. On the first pass, highlight every noun that could be an entity or attribute. On the second pass, note every verb phrase that could describe a relationship. Common entities in a veterinary context include Patient (the animal), Owner, Veterinarian, Appointment, Treatment, Medication, and Invoice. Attributes belong to exactly one entity; if you find yourself assigning the same attribute to two entities, that is a signal the model needs refinement.

Once you have a candidate list, draw your crow's-foot ERD in draw.io. Label every relationship line with its cardinality: one-to-one (1:1), one-to-many (1:M), or many-to-many (M:N). Every M:N relationship must be resolved into an associative (bridge) entity with its own primary key before you proceed to the relational schema, because relational tables cannot directly represent M:N without an intermediate table.

Check your ERD for completeness: every entity has a primary key, every relationship has cardinality notation, and no attribute is left floating outside an entity.

Step 2: Mapping ERD to Relational Schema

Each entity becomes a table. Each single-valued attribute becomes a column. A 1:M relationship is implemented by placing the primary key of the "one" side as a foreign key in the "many" side table. Each resolved M:N associative entity becomes its own table containing foreign keys to both parent tables, plus any attributes that belong to the relationship itself (such as a dosage on a prescription link table).

Once you have a draft schema, run the normalization checklist:

Document every check. For each table, write one or two sentences confirming it satisfies each normal form or describing the change you made to achieve it. This documentation is required for the defense.

Step 3: Writing and Executing PostgreSQL DDL

Write your DDL in a single `.sql` script file. A disciplined structure prevents errors:

1. `DROP TABLE IF EXISTS` statements in reverse dependency order (child tables before parent tables).

2. `CREATE TABLE` statements in dependency order (parent tables before child tables).

3. All constraints inline or as named `ALTER TABLE` additions after creation.

Use `NOT NULL` wherever the business rules require a value. Use `CHECK` constraints to enforce domain rules (for example, `CHECK (weight_kg > 0)`). Use `REFERENCES` with `ON DELETE` behavior that matches business rules — for instance, you might use `ON DELETE RESTRICT` to prevent deleting an owner who still has active patients.

Execute the script against a clean PostgreSQL schema. A clean execution with zero errors is a hard requirement for passing this lab. If errors occur, read the PostgreSQL error message carefully: it will identify the line and the constraint violated. Fix and re-run.

Step 4: Building the Data Dictionary

Use the provided template to document every table and column: table name, column name, data type, constraints, and a plain-English description of what the column stores. A complete data dictionary is what allows another DBA — or your future self — to maintain the database without guessing the intent of a column named `stat_cd`.

Step 5: Oral Defense

Your five-minute presentation should cover four areas in order: (1) your ERD with entity and relationship justification, (2) your normalized schema diagram, (3) your normalization justification table, and (4) a selected excerpt from your data dictionary. Practice answering "why" questions: why did you choose that data type, why did you add that foreign key constraint, why did that column move during normalization? The instructor will ask two specific questions about your design decisions, and you must answer both correctly to pass the defense component.

Professional and Safety Standards

In a database administration role, data integrity is a safety issue whenever the database supports health, safety, or financial systems. A veterinary clinic database holds medication dosage records and patient medical histories. Incorrect schema design — for example, a missing NOT NULL constraint on a drug name column — can allow NULL medication records to reach clinical staff. Treat every constraint as a safeguard, not a formality. Additionally, when working in a shared lab environment, never execute DDL against a shared or production schema; always confirm you are connected to your personal lab schema before running DROP or CREATE statements. This habit protects other learners' work and mirrors the strict change-control procedures you will follow in the workplace.

Key terms10

Crow's-foot notationA widely used ERD style that represents cardinality using symbols resembling a crow's foot for the 'many' end of a relationship and a single line or vertical bar for the 'one' end.
Associative entityA table created to resolve a many-to-many relationship between two entities; it holds foreign keys to both parent tables and may carry its own attributes that describe the relationship.
Functional dependencyA relationship in which the value of one column (or set of columns) uniquely determines the value of another column; written A → B, meaning A determines B.
Third Normal Form (3NF)A normalization level requiring that a table be in 2NF and that no non-key column is transitively dependent on the primary key through another non-key column.
Transitive dependencyA situation where a non-key column A determines another non-key column B, so B is indirectly dependent on the primary key through A rather than directly; this violates 3NF.
DDL (Data Definition Language)The subset of SQL used to define and modify database structures, including CREATE TABLE, ALTER TABLE, and DROP TABLE statements along with their constraints.
Data dictionaryA structured reference document that describes every table and column in a database, including names, data types, constraints, and plain-English business definitions.
Referential integrityThe guarantee that every foreign key value in a child table corresponds to an existing primary key value in the parent table, enforced through FOREIGN KEY constraints.
Atomic valueA column value that cannot be meaningfully subdivided further within the context of the database; a requirement of First Normal Form (1NF).
ON DELETE RESTRICTA referential action clause that prevents deletion of a parent row if any child rows reference it, protecting data integrity by blocking orphan-creating operations.
In class: Requirements analysis: students receive a two-page business requirements narrative for a veterinary clinic management system; they independently identify entities, attributes, and relationships and draw a crow's-foot ERD in draw.io. · Schema build and normalization: students map the ERD to a relational schema, verify normalization to at least 3NF (documenting each normal form check), write complete PostgreSQL DDL with all constraints, and execute it in a clean PostgreSQL database. · Defense preparation: students prepare a five-minute oral presentation with their ERD, schema diagram, normalization justification, and data dictionary excerpt, then present to the instructor and two peers who use a structured evaluation rubric.
Materials: Veterinary clinic business requirements narrative, draw.io, PostgreSQL lab environment, data dictionary template, oral defense rubric, projector
Check: Instructor evaluates ERD completeness, normalization correctness (must reach at least 3NF with documented justification), DDL execution without errors, and quality of data dictionary. Oral defense must correctly answer two instructor questions about design decisions. Pass: 75% of total rubric points; DDL must execute without errors.

Practice check8

Answer each question, then check it. Nothing is recorded; this is your own practice.

Relational design and normalization — DAMA CDMP / Oracle DBA CA
1. A student's Appointment table has a composite primary key of (appointment_id, vet_id). The column vet_specialty is present and depends only on vet_id, not on the full composite key. Which normal form is violated?
Relational design and normalization — DAMA CDMP / Oracle DBA CA
2. In a veterinary clinic schema, the Owner table stores owner_zip and owner_city, where city is fully determined by zip code. Which statement correctly describes this situation?
Relational design and normalization — PostgreSQL CE / Oracle DBA CA
3. A student needs to represent the relationship between Patient and Medication, where one patient can receive many medications and one medication can be prescribed to many patients. How should this be implemented in the relational schema?
DDL and constraint implementation — PostgreSQL CE / Microsoft DP-300
4. A student's DDL script drops tables in this order: Owner, Patient, Appointment. Patient has a foreign key referencing Owner, and Appointment has a foreign key referencing Patient. What will happen when this script runs with foreign key constraints active?
DDL and constraint implementation — PostgreSQL CE / Microsoft DP-300
5. Which PostgreSQL DDL clause would best enforce the business rule that an animal's recorded weight must always be a positive number?
Relational design and normalization — DAMA CDMP / Oracle DBA CA
6. During requirements analysis, a student identifies that a veterinary clinic needs to track multiple phone numbers for each owner. Storing all phone numbers in a single column as a comma-separated string violates which normal form?
Data governance and documentation — DAMA CDMP
7. In the context of the oral defense rubric, why is it insufficient for a student to simply state 'the table is in 3NF' without further explanation?
Database administration best practices — PostgreSQL CE / Microsoft DP-300 / Oracle DBA CA
8. A student is about to run a DDL script that drops and recreates tables. What should the student verify before executing the script in the lab environment?
Record this lesson on my transcript. Sign in with your key and enrollment email to record lessons (enroll free if you have no key). This page stays open to read and practise.