Other Business Rules, Constraints, and Requirements for the
Database
- In CDM, we create a MEMBER entity and subclass it to SCIENTIST and MODERATOR. The reason is we notice Scientists and Moderators share many attributes, and almost all the moderators are scientists at the same time. So we decide to use the MEMBER table to store all the common data, then make SCIENTIST and MODERATOR refer to it.
- In the second page of CDM (PROCESSING ZOOM IN), we conceptually describe the whole procedures of how MadSci actually process questions.
- After a user asked a question, it was temporarily stored in the question queue (one of our file DIRECTORY), waiting for review.
- Then a moderator can review and edit (change area, correct typing, etc.) that question.
- Another moderator (can be the same) then would pass the question to a scientist in the corresponding area. This will generate a PASS entity. However, the combination of QuestionNo, MODERATOR.MemberID, and SCIENTIST.MemberID cannot uniquely decide a PASS record, if we incorporate the Date_Pass as a part of the PK, then it gets too long. At last, we decide to use an artificial PK Pass_No.
- A pass might be answered by the scientist, or the scientist could defer it if he/she feels it's beyond his/her touch. If the scientist kept silent after he/she received the question, a moderator (can be different from who pass the question) can assign a delinquent hit to that scientist. We decide to subclass PASS to ANSWER, DEFER and DELINQUENT to discriminate different cases. BTW, a scientist who defers a question can give tentative answers (comments) for the next scientist.
- An answer then would be edited (can be a new moderator) before it is evaluated, the ANSEDIT table is similar to QUESEDIT table here.
- An edited answer would be evaluated by a moderator (also can be a new one), he/she can make a final decision whether to accept it or reject it. For an accepted answer, the moderator (should be the same one who evaluated it) can choose to assign a rank to it (from 1 to 5). Since accepted and rejected answers involve in different relations and processes, we have two more subclass here (ACCEPT and REJECT).
- Not accepted answers (REJECT, DEFER, and DELINQUENT) must connect back to the PASS for question recycling.
- STATUS is related to QUESTION, however, we have to check all the sub types of PASS and see which table is the most recent question record in to decide the question status (deleted, pending, posted, etc.).
- We can scan the sub types of PASS to calculate some statistical values for scientists: Q_Answered, Q_Defered, Q_Delinquent, Q_Unusable.
- Besides questions, MadSci also stores data about scientific experiments (MadSci Laboratory), and some WWW resource (MadSci Library). One is able to use various methods (area, directory, level, and keyword) to search all the questions, experiments, and WWW links. Due to the space, we couldn't break down the m:n between KEYWORD and QUESTION, EXPERIMENT, LINK, please refer to ERDs for details of searching function.
- A scientist can put himself on hold if he'd not like to receive question during a particular period. A moderator can also put himself on hold only when he serves as a scientist (a moderator alone doesn't receive questions).