Commits

Vineet Reynolds committed 30dfa0a

Added notes on the logical data model.

Comments (0)

Files changed (1)

 
 {{Galleria-LogicalDataModel.png|The Logical Data Model of the Application}}
 
+The data model is quite simple for now.
+
+{{User}}s are associated with {{Group}}s. Many users can be associated with a group, and there may be multiple groups.
+For now, there is only one group, for registered users.
+
+{{Group}}s are associated with a unique {{groupId}}.
+
+A {{User}} is identified by a user-specified {{userId}} that is unique among users, and is associated with a password, to enable the user to sign in to the application.
+
+{{User}}s can have many {{Album}}s, with each {{Album}} containing {{Photo}}s. Each {{Album}} can have a cover {{Photo}}; an album with no photos will have no cover photo.
+When a {{User}} is deleted, the {{Album}}s owned by the user are deleted. When an {{Album}} is deleted, the {{Photo}}s in the album are also deleted.
+
+When an {{Album}} is created, a {{name}} and an optional {{description}} must be supplied. These are provided by users to organize albums.
+
+{{Album}}s will be identified by a unique number - the {{albumId}} which is an incrementing sequence that will be provided by the application.
+Album names could be the same across multiple users - we do not want users to be unable to choose a name for their album because another user had chosen the same!
+
+When a {{Photo}} is uploaded, the application is expected to store
+
+* a {{title}} for the photo
+* a short {{description}} of the photo in the {{description}} attribute,
+* the file name of the uploaded photo in the {{fileName}} attribute,
+* the binary contents of the photo in the {{file}} attribute,
+* the time of the upload in the {{uploadTime}} attribute.
+
+{{Photo}}s will be identified by a unique number - the {{photoId}} which is an incrementing sequence that will be provided by the application.
+The {{title}} and {{description}} attributes are used to enable users to organize photos - photos could lack a title at the time of creation, making them unsuitable as primary key candidates.
+Also, titles of photos could be the same across multiple users - we do not want users to be unable to choose a title because another user had chosen the same for a differnt photo!
+The {{file}}, {{fileName}} and {{uploadTime}} attributes for a {{Photo}} cannot be null, since a photo is expected to be associated with a binary file that was uploaded at some point in time.
+
 == The Physical Data Model ==
 
-{{Galleria-PhysicalDataModel.png|The Physical Data Model of the Application}}
+{{Galleria-PhysicalDataModel.png|The Physical Data Model of the Application}}
+