Midterm Rubric

CategoryPointsFull creditPartial creditMinimal / no creditExamples / anchors
1. Completeness and submission requirements10Answers all 7 questions with substantive paragraph-length responses; submits final .db, schema-generation Python code, and Ship It population codeMissing minor detail, short answer to one question, or one required file is missingSeveral questions unanswered or major files missingStrong: all parts submitted. Weak: answers only 3 questions; no .db file
2. Evolution from ER diagram to final schema15Clearly explains how the design changed from ER diagram to final schema, including specific changes to tables, entities, attributes, relationships, or keysDescribes some changes but explanation is vague or mostly chronologicalSays the design changed but does not explain how or whyStrong: “We split StudentClub into Student, Club, and Membership because students can join many clubs.” Weak: “Our database became more organized.”
3. What the database represents well15Identifies 2–3 real-world aspects the schema captured well and connects each to concrete schema choicesGives examples of what the database stores but does not fully explain why the schema handles them wellMakes broad claims without specificsStrong: “The schema handles many-to-many relationships between books and authors using a join table.” Weak: “It captures books pretty well.”
4. Modeling difficulty and tradeoffs15Identifies something genuinely hard to model and explains the database-design tradeoff or compromiseIdentifies a difficulty but frames it mostly as coding/debugging rather than modelingOnly says the project was hardStrong: “User preferences were hard because one user can have many overlapping interests, so we had to choose between a separate Preferences table and storing preferences as text.” Weak: “SQLite was confusing.”
5. Assumptions, constraints, and simplifications15Identifies meaningful assumptions about uniqueness, required values, categories, cardinality, or real-world simplification, and explains consequencesNames assumptions but does not explain how they affect representationGives generic assumptions unrelated to schema designStrong: “We assumed each event has exactly one location, which means we cannot represent hybrid or multi-room events.” Weak: “We assumed the data would be correct.”
6. Data generation, insertion, and debugging reflection10Describes what broke or almost broke, explains why using database concepts, and connects it to expectations or fixesDescribes an error but gives limited explanation of the underlying causeMentions vague bugs without detailStrong: “Ship It generated duplicate names, but we had used name as the primary key, so inserts failed. We should use an artificial ID.” Weak: “The code broke but then we fixed it.”
7. Revision plan and future improvement10Proposes a specific first schema revision and explains why it should be prioritizedSuggests a plausible improvement but does not justify priority or connect to a known limitationSays only that the database should be improvedStrong: “I would add a foreign key from Enrollment.student_id to Student.id so enrollments cannot refer to nonexistent students.” Weak: “I would make it more organized.”
8. SQLite-specific reflection10Identifies a SQLite-specific limitation or behavior and explains how it affected this project’s data modelMentions SQLite limitations but connection to project is thin or partly inaccurateComplains about SQLite without identifying a concrete storage/type issueStrong: “SQLite does not enforce strict column types by default, so we had to be careful that prices were inserted as numbers rather than text.” Weak: “SQLite is weird.”