Database的第一次作业，也是最基础的，画UML图。虽然UML叫Unified Modeling Language，不过这并不算是编程语言。另外UML图的画法很多网站都有介绍，不过初学者最容易搞错的是对象的抽象。
Consider an online IDE (Integrated Development Environment) that allows developers create online Web applications. A developer has username, password, email, first and last name. Applications have a name, date created, and are described as a collection of things or entities, e.g., a blogging application might have users, posts, comments, etc. an address book might have contacts, addresses, phone numbers, etc. Entities describe real things in terms of attributes, e.g., a user might have attributes username, password, first name, etc., a blog post might have attributes title, content, date posted, etc. Attributes can be of various types such as number, string, date and long string, e.g., a first name attribute might be of type string, a blog post might be of type long string, a date posted attribute might be of type date. Attributes can also be of type collection to denote that the attribute represents a collection of other entities, e.g., in a blogging application, a user entity might have collection attribute blog posts which is a collection of blog post entities; and in turn a blog post entity might have collection attribute comments which is a collection of comment entities. If an attribute is of type collection, the attribute further keeps track of the entity the collection is made up of. Entities are further described by scripts that execute when a new entity is created, when an entity is deleted, or when an entity is updated. Scripts are made up of statements that are described by a title, short description, and type.
Applications developed by developers can be executed by users which also have username, password, email, first and last name. Users can purchase any number of applications, and an application can be used by users. Even though different users can use the same application, the application data is stored separately for every user, i.e., user1 using app1 can not see the data for user2 using the same app1
Create a UML class diagram for the application described above. Develop the diagram using any UML tool but submit your diagram as PDF.
Create a class diagram following the techniques described in class.
- (10pts) List nouns that are candidate classes (except trivial nouns)
- (10pts) List verbs as candidate relations between classes (except trivial verbs)
- (10pts) Generalization (inheritance) (if applicable, explain)
- (10pts) Aggregation or Composition (1 to or 1 to 1..) (if applicable, explain)
- (10pts) Classes Vs. Attributes analysis
- (10pts) Correct Data Types, e.g., Date, String, Integer, List, Array, Enumeration, etc.
- (10pts) Cardinality
- (10pts) Remove any inadequate relationships (if applicable, explain)
- (10pts) Reify (if applicable, explain)
- (10pts) Prose