Develop a schema to manage a set of Web forms composed of several Web input fields: text field, text area, select, radio, check boxes, date, and time. Each Web form is created by a developer for a particular Web application and is intended to be filled in by a particular user. Anonymous users can fill in Web forms as well. All fields have a name and can have several values. Text fields can be configured to have a type of number, string, URL, or email. Text fields also have a max size. The default type is string. This is used for validation purposes. Text area can have a number of rows and columns and a maximum number of characters. Date and time fields can have a min and max or no limitations at all. Select, radio and check boxes require a set of values and labels from which a user can chose. The labels are used to display the values in human readable prose. The user can select a single value from radio fields, but can choose several values from select and check box fields. The fields can be arranged in a particular order. Fields have associated descriptive labels that appear next to the field, and tooltips that appear when users hover over the field for help. The database is used to render the forms to be filled by a user. When the user fills in and submits the form, the data is stored in such a way that groups the application, form, user, date submitted, fields, and values. Submissions are used to generate reports in the form of Excel spreadsheets.
Create a class diagram that captures the data described above. Apply the data analysis techniques that were discussed in class. Clearly annotate your class diagram using classes, attributes, cardinality, associations, the name of the relationship, aggregation, composition, and generalizations. Apply the techniques described in class to convert the class diagram to a relational model and write the equivalent SQL create statements. Argument, and defend your choices as you apply the analysis.
- (40pts) Class Diagram
- (10pts) Generalization, Aggregation or Composition (1 to or 1 to 1..) (if applicable, explain)
- (10pts) Correct Data Types, e.g., Date, String, Integer, List, Array, Enumeration, etc.
- (10pts) Cardinality
- (10pts) Reify: revise Weak-Weak and strong-strong relationships (if applicable, explain)
- (50pts) Schema
- (10pts) Primary Keys, required, artificial keys vs. natural keys
- (10pts) Foreign Keys
- (10pts) Primary Keys that are also Foreign Keys (if applicable, explain)
- (10pts) Delete Cascade (if applicable, explain)
- (10pts) Correct Data Types, e.g., DATE, VARCHAR, etc.
- (10pts) Prose: defend your assumptions and how they guided your decisions