VoidWorks Software Inc.

Detailed Design
Data Dictionary

Document Navigator For The Design Index
Previous Section (Top Level Data Flow Diagram) Next Section (Testing Plan)

 


Data Dictionary                                   


** Books Database **

Book = @ISBN Number + Title + Author + Publisher + Subject + Book Category
+ Media Type + Cost of Book + Version + Edition + Number of Copies

* Entity; represents a book residing in the library. *


ISBN Number = String

* Key attribute for Book. Consists of a 10 digit number in the form *
* D-DD-DDDDDD-D where D is a number from 0-9. Each ISBN number is *
* is unique to an instance of Book. *


Title = String

* Non-key attribute for Book. Represents the title of the book, with *
* a maximum of 150 characters. *


Author = String

* Non-key attribute for Book. Contains the author of the book, in the form *
* Last Name, First Name *
* If there are multiple authors, they are separated by semicolons. Maximum *
* length is 120 characters. *


Publisher = String

* Non-key attribute for Book. Contains the publisher of the book, with a *
* maximum length of 150 characters. *


Subject = String

* Non-key attribute for Book. This is a description of the subject *
* book, to be used as a search term in the database. Maximum length *
* is 100 characters. *


Book Category = ["Overnight" | "Two Week Loan" | "Reserved" ]

* Non-key attribute for Book. Used for determining the length of time a book *
* can be borrowed, or if it can be taken out at all. *

Media Type = ["Book" | "CD" | "CD-ROM" | " Film" | "Laser-disk" | "Journal" | "Cassette" ]

* Non-key attribute for Book. Describes the format of the item. *

Cost of Book = currency

* Non-key attribute of Book. Contains a dollars and cents value of the Book, *
* representing the price one would be charged for replacement of the item. *

Version = real

* Non-key attribute of Book. This is not a required attribute for book, but is *
* only used if the item in question has a version number. It is in the form
* DDD.DD where D ranges from 0 - 9. Version thus ranges from 0 - 999.99

Edition = real

* Non-key attribute of Book. Similar to Version, in that it is not a required *
* attribute, and only applies if the item has an edition number. It is in the *
* form DDD.DD where D ranges from 0 - 9. Edition thus ranges from 0 - 999.99. *


Number of Copies = integer

* Non-key attribute of Book. Represents the number of copies that of the *
* item in question. Used in creating instances of the Book Copy weak entity, *
* whose definition follows. Ranges from 0 - 999. *


Book Copy = @Call Number + ISBN Number + Location + Floor + Circulation Status

* Weak Entity associated with Book. Each instance of Book can have zero or more *
* instances of Book Copy. Represents a copy of an item in the library. *


Call Number = integer

* Key attribute of Book Copy. Represents the unique number to identify *
* each copy of an item in the library. Each time an instance of Book Copy *
* is created, the next available number is assigned to Call Number. *
* Call Number can range from 0 - 999999999. *


ISBN Number = string

* Non-key attribute of Book Copy. This is the same as the ISBN Number for the *
* instance of Book associated with this instance of Book Copy. *

Location = string

* Non-key attribute of Book Copy. Represents the name of the library location *
* where this particular copy is residing. Maximum 20 characters. *

Floor = integer

* Non-key attribute of Book Copy. Represents the floor number of Location at *
* which the copy is located. This number ranges from 0 - 99. *

Circulation Status = [ "On Loan" | "Overdue" | "On Hold" | "Available" |
"Out of Circulation" ]

* Non-key attribute of Book Copy. Represents the current status of the copy in *
* question, and used for decisions on some functions acting on a Book Copy. *




** Customer Database **

Customer = @User ID + Last Name + First Name + Phone + Address + City
+ Province + Country + Postal Code + Category + Fine
+ Max Books + Max Fine + Restricted

* Entity; represents customers that have membership in the library. *


User ID = integer

* Key attribute for Customer. It is created when the customer is *
* registered for a membership. It is unique. *


Last Name = String

* Non-Key attribut for Customer. Represent the customer's last name. *
* Length should be between 1 and 60. *


First Name = String

* Non-Key attribut fro Customer. Represent the customer's first name. *
* Length should be between 1 and 40. *


Phone = String

* Non-key attribute for Customer; represent the customer's phone number. *
* Standard North American phone number. (3 digit area code) 3 digit local *
* exchange-4 digit number. The 3 digit area code is optional. The length *
* should be between 8 to 14. *


Address = String

* Non-key attribute for Customer; represent the customer's address include *
* Apartment number, street, P.O.Box. Length should be between 1 to 80. *


City = String

* Non-Key attribute for Customer; represent the city of the Customer's *
* mailing address. Length should be between 1 to 20. *


Province = String

* Non-Key attribute for the Customer; represent the province/state of the *
* Customer's mailing address. It should be exactly 2 characters. *


Country = String

* Non-Key attribute for the Customer; represent the country of the *
* customer's mailing address. The maximum length is 10 characters. *


Postal Code = String

* Non-Key attribute for the Customer; represent the postal code of the area *
* the customer's mailing address. The Maximum Length is 11 characters. *


Category = ["regular" | "librarian" | "supervisor"]

* Non-Key attribute for the Customer; represent the customer type. Extra *
* category can not be added. *


Fine = currency

* Non-Key attribute for the Customer; represent the current fine that the *
* customer has. Two digits following decimal point should be stored (to *
* represent dollars and cents). *


Max Fine = currency

* Non-Key attribute for the Customer; represent the maximum fine that the *
* customer can have . This can only be modified by a user with supervisor *
* category. *


Max Books = integer

* Non-Key attribute for the Customer; represent the maximum number of books *
* that the customer can borrow. This can only be modified by a user with *
* supervisor category. *


Restricted = ["yes" | "no"]

* Non-Key attribute for the Customer; represent whether or not the customer *
* can borrow. It becomes "yes" when the customer's fines exceed the *
* maximum amount allowed. *


** Holds Database **

Hold = @User ID + @Call Number + Hold Date

* Entity; represent the book that is on hold by the customer with the *
* User ID. *


Call Number = real

* Key attribute for the Hold entity and Bookcopy entity; represent the call *
* number of the book that is on hold. This is a unique number that is *
* created after the book is added to the Book's database. *


Hold Date = integer

* Non-Key attribute for the Hold entity; represent the date that the book *
* is put on hold. *


** Loans Database **

Loans = @User ID + @Call Number + Loan Date

* Entity; represent the books that are borrowed by the customer with the *
* specified User ID. *


Loan Date = integer

* Non-Key attribute for the Loans entity; represent the date that the book *
* is borrowed. *

*********************
User ID and Call Number has been defined.
*********************


** Fines Database **


Fines = @User ID + Fine + Date

* Entity; represent the Fine situation of the Customer with the specified *
* User ID. *


Date = integer

* Non-Key attribute for the Fines entity; represent the date that the fine *
* has been added or subtracted. *

************************
User ID and Fine has been defined above.
************************

** Circtype Database **

Circtype = @Kind

* Entity; represent the enumerated Circulation that the user can enter. *


Kind = String

* Key attribute for Circtype entity; stores the new circulation value when *
* user entering a Bookcopy. *


** Custtype Database **

Custtype = @Kind

* Entity; represent the enumerated Category that the user can enter. *


Kind = String

* Key attribute for Custtype entity; stores the new category value when *
* user entering a Customer. *


** Loctype Database **

Loctype = @Kind

* Entity; represent the enumerated Location that the user can enter. *


Kind = String

* Key attribute for Loctype entity; stores the new location value when *
* user entering a Book. *


** Medtype Database **

Medtype = @Kind

* Entity; represent the enumerated Media Type that the user can enter. *


Kind = String

* Key attribute for Custtype entity; stores the new media type when *
* user entering a Book. *


** Subjtype Database **

Subjtype = @Kind

* Entity; represent the enumerated Subject that the user can enter. *


Kind = String

* Key attribute for Medtype entity; stores the new subject value when *
* user entering a Book. *

Document Navigator For The Design Index
Previous Section (Top Level Data Flow Diagram) Next Section (Testing Plan)

Send mail to the Group Leader or the Webmaster
Back to the Main Page
Pages created and maintained with Mortar