jacobpressures
Technical User
Hi guys! I'm creating a testing application. One of my goals is to store the employee info, questions, number of test taken, etc for each test an employee takes. The tests are all the same except that the questions will be selected from a pool.
Questions are grouped into Categories. Each Category has one or more goals. Some questions may have a diagram.
Below are 10 tables. I think they are pretty normalized. I just want to know if you think this is a good design or not. I've attached a picture of an ER-Diagram i created in MS Access also.
I also have a few questions about some derived fields i would like to ask later.
Thanks!
Employee
--EmpID*
--FName
--LName
--Position Employee’s Title or Position
--Center Employee’s Main Location
Table Description:
Stores vital information about Employees
Center
--CenterID*
--CenterName Name of each Franklin Center
Table Description:
Stores all my company's centers
Test
--TestID* Identifies all employee testing information
--EmpID
Table Description:
Used to identify all employee tests using a unique identifier (TestID) that can be used to identify all questions presented to employee.
Category
--CatID* Primary Key; Unique Identifier for all categories
--CategoryName
--CategoryPurpose Desc. of the purpose of each testing Category
Table Description:
Provides each testing category with a unique identifier and name. It also stores a description of the purpose of the testing category.
Goal
--GoalID*
--CatID
--GoalDescription Desc. of what each employee should learn after completing a Category.
Table Description:
Stores all of the goals for each Category (or testing Objective).
Question
--QID*
--CatID Foreign Key from Category table. Used to identify which question belongs to which Category.
--Question Description of question
Table Description:
Provides a pool of questions for each Category.
Answer
--AnswerID*
--QID
--Answer Possible answer to a particular question
--Correct Boolean value describing whether Answer is a correct choice.
Table Description:
Stores all the possible answers to a particular question.
Diagram
--DiagramID*
--QID
--FileName Name of diagram file; used to find file on disk.
--DiagramDescription Description of file
Table Description:
Stores information diagrams used on the test.
Completed_Category
--CCID*
--TestID Foreign Key from Test table; used to identify which set of Categories belong to each TestID.
--CatID Foreign Key from Category table; used to identify tested or completed Category.
--StartTime Stores the date and time testing of Category began.
--FinishTime Stores the date and time testing of Category was completed.
Table Description:
Used to store all Categories completed by user. Ties completed Category to a specific TestID, allowing for retesting.
Completed_Question
--CQID* Primary Key; Uniquely identifies completed questions for each TestID
--CCID Foreign Key from Completed_Category table. Identifies a Category and TestID to a completed or answered question.
--QID
--Correct Boolean value
Table Description:
Stores all the test questions for a particular TestID by Category while providing information indicating whether the question was correctly answered or not.
Questions are grouped into Categories. Each Category has one or more goals. Some questions may have a diagram.
Below are 10 tables. I think they are pretty normalized. I just want to know if you think this is a good design or not. I've attached a picture of an ER-Diagram i created in MS Access also.
I also have a few questions about some derived fields i would like to ask later.
Thanks!
Employee
--EmpID*
--FName
--LName
--Position Employee’s Title or Position
--Center Employee’s Main Location
Table Description:
Stores vital information about Employees
Center
--CenterID*
--CenterName Name of each Franklin Center
Table Description:
Stores all my company's centers
Test
--TestID* Identifies all employee testing information
--EmpID
Table Description:
Used to identify all employee tests using a unique identifier (TestID) that can be used to identify all questions presented to employee.
Category
--CatID* Primary Key; Unique Identifier for all categories
--CategoryName
--CategoryPurpose Desc. of the purpose of each testing Category
Table Description:
Provides each testing category with a unique identifier and name. It also stores a description of the purpose of the testing category.
Goal
--GoalID*
--CatID
--GoalDescription Desc. of what each employee should learn after completing a Category.
Table Description:
Stores all of the goals for each Category (or testing Objective).
Question
--QID*
--CatID Foreign Key from Category table. Used to identify which question belongs to which Category.
--Question Description of question
Table Description:
Provides a pool of questions for each Category.
Answer
--AnswerID*
--QID
--Answer Possible answer to a particular question
--Correct Boolean value describing whether Answer is a correct choice.
Table Description:
Stores all the possible answers to a particular question.
Diagram
--DiagramID*
--QID
--FileName Name of diagram file; used to find file on disk.
--DiagramDescription Description of file
Table Description:
Stores information diagrams used on the test.
Completed_Category
--CCID*
--TestID Foreign Key from Test table; used to identify which set of Categories belong to each TestID.
--CatID Foreign Key from Category table; used to identify tested or completed Category.
--StartTime Stores the date and time testing of Category began.
--FinishTime Stores the date and time testing of Category was completed.
Table Description:
Used to store all Categories completed by user. Ties completed Category to a specific TestID, allowing for retesting.
Completed_Question
--CQID* Primary Key; Uniquely identifies completed questions for each TestID
--CCID Foreign Key from Completed_Category table. Identifies a Category and TestID to a completed or answered question.
--QID
--Correct Boolean value
Table Description:
Stores all the test questions for a particular TestID by Category while providing information indicating whether the question was correctly answered or not.