62
Faculty of Science Project Databasetoepassingen Coordinator: Dr. Hamideh Afsarmanesh Course Lecturer: Jos de Bruin Course Assistant: Anton Bossenbroek June 28th, 2006 Team 4: Nick Botter 0359572 [email protected] Dominic Settels 0062375 [email protected] Rienk Su 0469785 [email protected] Deepak Sharma 0367907 [email protected]

5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

Faculty of Science

Project Databasetoepassingen

Coordinator: Dr. Hamideh Afsarmanesh Course Lecturer: Jos de Bruin

Course Assistant: Anton Bossenbroek

June 28th, 2006

Team 4:

Nick Botter 0359572 [email protected] Dominic Settels 0062375 [email protected] Rienk Su 0469785 [email protected] Deepak Sharma 0367907 [email protected]

Page 2: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

2

Table of contents

1. INTRODUCTION 2. LITERATURE REVIEW 3. SYSTEM DESIGN

3.1 User Requirements 3.2 Scenarios

4. SYSTEM ARCHITECTURE 4.1 Data storage

4.1.1 MySQL Table schemas 4.1.2 ER­diagram

4.2 Logic 4.2.1 PHP 4.2.2 Security 4.2.3 Error Handling

4.3 Implementation 4.4 GUI­design

5. EVALUATION 5.1. Traceability 5.2 Issues & Solutions

5.2.1 System Design 5.2.2 Database 5.2.3 GUI 5.2.4 Compatibility

5.3 Literature Evaluation 5.4 Discussion

6. CONCLUSION 7. REFERENCES

APPENDIX: A ­ User Manual APPENDIX: B ­ ER­diagram APPENDIX: C ­ User Requirements APPENDIX: D ­ Browser Comparison APPENDIX: E ­ MySQL Tables APPENDIX: F – PHP code

Page 3: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

3

PROJECT DATABASETOEPASSINGEN

Nick Botter (0359572) [email protected]

Dominic Settels (0062375) [email protected]

Rienk Su (0469785) [email protected]

Deepak Sharma (0367907) [email protected]

This document presents the development and implementation of a database system as part of the course ‘Project Databasetoepassingen’ at the University of Amsterdam. The aim of this course is constructing a centralized relational database system. The purpose of this database is to administrate information about employees and to make it possible for other employees to search for and look at other employees profile pages to aid in formal and informal contact. First a literature review is presented showing related work on ‘friends networks’. Then, based on requirements analysis, the design of the database and Graphical User Interface coded in PHP will be presented. Followed by a presentation of the results and the implementation. At the end of the document conclusions will be drawn and the project will be evaluated.

1. INTRODUCTION

This document is part of the course 'Project Databasetoepassingen' at the University of Amsterdam for the year 2005­2006. In this document the process of designing and implementing a database and graphical user interface for a friends network will be described. The aim is to design and implement a functionally correct database and graphical user interface (GUI) with adequate functionality for employees of a large multinational to improve both formal and informal contact among these employees. A profile page for each member with both formal and informal information about that person and search engine to find other users, are designed and implemented. The members can form ‘communities’ by filling in their profile pages and/or becoming members of special community pages. This document is divided into three main sections: system design, system architecture and implementation and traceability. In this last section the steps that were taken will be described, and an explanation will be given on why certain decisions were made during the entire process.

04

Page 4: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

4

2. LITERATURE REVIEW

In this part of the paper we shall discuss some work that we found from our literature study. The main purpose of this part is to show the relation between this project and the subjects that are being researched in the field about communities.

A small study of Homans (Homans, 1954) about informal networks in an office department proves that informal communication is not always contra productive. Homans studied several employees of a department and concluded that the informal environment had positive effect on them. The employees delivered more work than expected by the department managers. A study of Flap about informal networks inside companies describes some positive effects of informal networking inside companies. In his study he marks that informal communication between colleagues improves the cooperation between them, what results in better work and improves happiness of the employees. Flap describes that time investment in work is better when a company has a good social network. Colleagues will do more for each other when they know each other in a positive way, in other words employees will help each other faster when they know each other. A social network in a company improves the friends network inside a company, if there is a informal environment in a company colleagues with same interests, hobbies etc. can meet each other easily. (Flap, 2001)

As mentioned above our main goal in our project is to build a community page. To build a community page, you have to know the user needs. After a quick start on the project, we considered some interface designs. After a literature search we found that community’s experience many tensions on daily base, these tensions are often mediated supported or enhanced by technology. Wenger describes, in his paper, these tensions as: Interaction, Publishing and Tending.

Nowadays there are many tools on the market to build communities and to give current communities more functionality. Not all of these tools are useful for communities; therefore we are forced to look carefully at these tools. Generally many tools are needed to build and keep a community running. Most of these tools are made to design communities. Unfortunately not all these tools provide good design functionality which often results in bad community page design. Literature research brought us at Wenger, who wrote an article about technology for communities.

Wenger describes in his paper some essential design principles for communities. These principles are listed below. Design for ease of use and learning. Because communities are rarely their members’ highest priority, the general principle of simplicity is doubly important. A team that will spend extensive time working together may be ready to invest in learning a complex system, but community members rarely have such luxury. Difficulties in learning to use the technology will quickly discourage participation. Design for evolution. It is always a good idea to design technology that can evolve, but with

Page 5: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

5

communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time—a challenge for technology providers. Unlike the trajectory of a team, which can often be fairly well planned from the start, the life of a community is a voyage of discovery. Design for “closeness at hand”. Community members often do not work together on a day­to­day basis, but what they interact about is often related to their main occupations. Solutions that are “one click away” from the tools that members use day­to­day are preferable to those that seem “farther away” from their working environment and require effort to switch context. Providing “close at hand” access to a community of practice can be complicated by the fact that members may want to participate from home, office, or on the road. This is one reason e­mail is still a very successful community tool in spite of all the recent developments: it integrates community interactions in the tool where people spend a large portion of their working and social lives. Design from a user ’s per spective. Like most users of technology, communities come together for a purpose, which is rarely a fascination with technology for its own sake. As in any technology design, the user perspective has to be the focus. However, because community technology is designed for communities but experienced by individuals, the process has to balance community and individual perspectives. Individual participation is shaped by many forces, including different needs and preferences, personal learning goals in the community context, as well as familiarity with the technology. (Wenger, 2005)

In the article “Input – friendliness: motivating knowledge sharing across intranets” by Hall we found one of the best way to let users participate in a online community, implement a reward system in the community. The interview, in the article, already showed that users are not willing to participate active to a community if their work is not rewarded. Hall describes a coloured profile, the colour of a members profile reflects the status of the member. The systems works with different grades for users, active users will get a higher grade what results in a different profile colour. Users who contribute much to the community will be rewarded as experts by the system.(Hall, 2003)

Concluding we can note that there are a lot of aspects worth considering when developing a online community. Wenger gives a clear boundary about design principles for communities. We used these principles in our interface design and tried to come up with an “easy” user interface. The reward system of Hall is an option to be considered because it has many advantages to get users interested in a community.

3. SYSTEM DESIGN

3.1 User Requirements The application aims to enable more informal contact between its users. The users in this case are the employees of a multinational organization. It is often stated that informal contact and more accessible knowledge about colleagues’ skills and know­

Page 6: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

6

how will greatly improve cooperation among employees and thus company proceeds. The administrator creates accounts for all users using their company ID. In that area some information is put in by the administrator and some by the user himself. By setting up a profile page that way with both formal and informal information about that particular user, and allowing for users to search for and connect to others by adding them to their ‘friend list’ or form ‘communities’ with others that have the same interests or project membership, will make it easier for employees of that company to find other users or browse through other user’s profile pages within the company or within a certain project. This application shall thereby make it easier for the users to find in­house expertise among the company’s employees and to learn a little about their colleagues’ preferences and interests outside the company scope to help improve social contact.

In order to reach these goals this application shall offer certain options to users and to one different user called the administrator. These options shall consist of a possibility to search for other employees by their skills, interests, education level, hobbies, department, branch, project membership, community membership and current function within the company of project. There will be a special account for the administrator. This is the account of the person who has all the rights to access every part of the application. Safety reasons and to prevent every user adjusting their information ad hoc, there’s one person who changes the vital information in the database or the application structure. The administrator shall have these rights. He shall have the option to create, modify and delete member accounts, whereas the users shan’t. This application shall offer the options for the administrator to create, modify and delete all attributes and entities within the database. Also this application shall offer the option for the administrator to assign and remove user’s skills and change function descriptions. The essential information about a user that won’t change or will change only sporadically, such as user name, real name and work address are taken from the general company database. That way the information about a user will be known and can be updated by the administrator using the company’s primary user information database. The application shall offer the option for a user to create and modify a community page. That can be a community for people with the same interests, skills, hobbies or project membership. The application shall offer the option for the administrator to create and modify but also delete such community page. This application shall offer the option to a user to assign or delete other users to their contact list. For now, it’s not thought necessary for one user to allow the other to add them as a contact on the contact list by okaying a request to become some other user’s ‘friend’.

This application shall have a search engine to facilitate searching for another user or employee within the company. It shall be possible to search by real name, function description, department, branch, project, skill, interest education level and community. Users shall be able to modify their profile page by creating or adjusting their profile picture, hobbies, interests, skills and work experience. In addition to those functions a profile page shall have a user name, a home or work address, current function description, department, branch, e­mail address and sex. These attributes shall be listed on the profile page but shall not be adjustable by the user.

Page 7: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

7

These are taken from the company database and can only be adjusted by the administrator.

In addition to having an e­mail address present on the profile page, it shall be possible to send an e­mail to a user, using a separate text box on the page of a user. To improve the informal contact information and communication between the users, this application shall also have a function that shows three or less other users within the company that have the same project, hobby, skill or interest. That way, users can quickly see other employees working on the same project or have the same hobby and thus will improve both formal and informal contact by making it easier to get into contact with others by not having to actually make the effort to deliberately search for them. On the user page an event list is shown. It shall be possible for users to create on that list upcoming events that might be of interest to other users. These events shall be visible for all users and every user can create an event on this list. The events shall be ordered by date. The application shall offer a user the option to assign or compliment another user’s skill by clicking on that person’s skill in a separate compliment area. This will serve as a feedback system that allows users to show how much they agree with another employee’s skills that that particular employee has listed himself. As a functional extra, it shall also be made possible for a user to assign a skill not listed by that employee himself from the same predefined list of skills. Thereby complimenting that skill for that particular user and incrementing the cumulative rating by one. The skills that have received compliments shall have a number next to the skill that shows how many others have complimented that skill. This 'rating' will make it possible to indicate an employee's degree of skill by showing users much other users agree with that. And last but not least, the application shall offer the option to leave a personal note (‘krabbel’) on another user’s page. It shall be possible for users to edit or delete the ones written by themselves.

3.2 Scenar ios

3.2.1 Logon, change password and logout:

The first thing a user has to do is log on. Logging on is done through entering your user name and password in the respective text boxes on the logon page, followed by an 'enter' or mouse click on the enter button. When this is done, the profile page of that user is loaded and shown on the screen. Once inside the user can change his or her password by clicking on the link 'Change password' near the user information on the top left of the screen. By doing so, a screen will appear with three text boxes. One for the old password, one for the new password and one to confirm the new password. When these are filled in, the user can make these changes permanent by clicking on the 'Save' button below the three text fields. When on the profile page, a user can log out by pressing the button on the top right corner that says 'Logout'. When this button is pressed the user will be logged out and the user shall be returned to the logon page of the application.

3.2.2 Edit profile page:

Page 8: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

8

If the profile page has not been filled in yet, the profile page will be empty, showing just the elementary information that is provided by the company. These include items that are not likely to change or are part of the general company database, such as real name, address, department, date of birth, etc. The next thing a user has to do is fill in their profile page. This is done by clicking on the 'edit me!!'­buttons next to the items that the users are allowed to edit. When this is done a small window is loaded showing three options with radio­buttons and an 'edit'­button. The first option is 'add', the second 'change' and the third 'delete'. When a radio­button for one of these options is selected and the edit­button is pressed, the items that are associated with that item can be edited. For instance, when the 'edit me!'­button of the work­ experience section is selected, the three above mentioned options are shown. When the 'add'­button is selected and the 'edit!'­button is pressed, a list of items of work­ experience that can be added is listed with respective text fields next to it. The user fills in the text fields and presses the 'add!'­button. A screen appears that the addition was successful, along with a 'go back!'­button to go back to the edit window. And of course the option to go back to the main edit­window is present in every step of the process, by simply clicking on the 'back!'­button. When the 'change'­option is selected a list of all the work­experience for that user is listed with radio­buttons next to them. The user selects one of the items by clicking on the radio­button of that item and presses the 'update!'­button. When this is done all the fields of that work experience that can be updated are shown with radio­buttons next to each name. When one is selected and the 'update!'­button is pressed a text field is shown with the 'update!'­button once again. The value of that can be updated by filling in the text field and pressing the 'update!'­button. Afterwards a message will appear that say the operation was successful and a 'Go back!'­button to go back to the main edit­window. When the 'delete'­option is selected again a list of all the work­ experience for that user is listed with radio­buttons next to them. When the user wishes to delete one of the items, the respective radio­button is selected and the 'delete!'­button is pressed. An extra safety window is shown asking the user if he's sure. The user can then press the 'sure!'­button or go back. When the 'sure'­button is pressed the user is told the operation was successfully carried out and the user can go back to the main edit­window via the 'Go back'­button.

3.2.3 Searching for and adding a friend:

For a user to search for a user and then add him or her to their contact list is done quite straight forward. When in the profile page, the user selects the tab called 'Search'. The search page will then be displayed on the screen. On this page there will be three search options. The user can search by name, project or both. If for example the user wishes to select someone working on a certain project, he selects the radio­button called 'projects' and writes the name of the project in the text field above. If, for instance, the user wishes to search for an employee via his or her real name, he or she can fill in that name in the text field and click the ‘search’­ button. It is also possible to search on both these items by writing AND or OR between the search items and clicking the ‘both’ radio­button before pressing the ‘search’­button. This means the search engine will search and return the users that have both items selected in the fields above. Should a user wish to find a user with either a

Page 9: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

9

membership to a certain project or by his real name he or she can write ‘OR’. Should the user wish to find a user with both a membership to a certain project and his real name, he or she can write ‘AND’, which will return the users that have either or both the items selected.

The real names and profile pictures of the users that form the search result are shown. From this list of search results the user can click on the link ‘Go to this user’. Then the profile page of that user is shown on screen. To add the user to whose profile the user is currently watching to their friend list, all he or she has to do is press the button called 'add as friend' near the user information in the top left corner of the profile page. When this is done, a small window opens that asks the user if he's sure. When this is so, the 'yes'­button can be pressed and the contact is added to the user's contact list. When the user whom the logged on user is currently watching is already in his or her contact list, a message will indicate this after the 'yes'­button is pressed.

4. SYSTEM ARCHITECTURE

4.1 Data Storage

MySQL causes a lot of trouble creating and using the database. The default engine is MyISAM, but MyISAM tables are not transaction safe and do not support foreign keys. We looked at other storage engines and the options were ISAM, MEMORY, MERGE, BDB and InnoDB. Since foreign keys are only possible in the engine InnoDB we chose for this engine, however InnoDB does not support full text searching. This brought us into a dilemma, because our application requires both possibilities we could not choose between the engines. This resulted in the search function to have an option to choose between engines. For the MyISAM full text search we created a virtual table to demonstrate the possibility to search.

4.1.1 MySQL Table schemas

We have defined thirty three tables in MySQL for our database, listed below:

• USER(user_name, real_name, work_address, work_phone, mobile_phone, sex, date_of_birth, email_address, user_description, password, profile_picture)

• HAS_CONTACT(user_name, colleague_name) • FUNCTION_LIST(function_name, function_description) • HAS_FUNCTION(user_name, function_name) • BRANCH(branch_name, branch_address) • HAS_BRANCH(user_name, branch_name) • DEPARTMENT(department_name, department_description) • HAS_DEPARTMENT(user_name, department_name) • HOBBY(hobby_name, hobby_description) • HAS_HOBBY(user_name, hobby_name) • PROJECT(project_name, project_description, project_begin, project_end)

Page 10: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

10

• HAS_PROJECT(user_name, project_name) • SKILL(skill_name, skill_description) • HAS_SKILL(user_name, skill_name) • HAS_COMPLIMENT(complimenter, complimentee, skill_name,

compliment_description, compliment_date) • COMMUNITY(community_name, community_description) • HAS_COMMUNITY(user_name, community_name) • WORK_EXPERIENCE(work_experience_id, past_function, company,

date_of_employment, date_of_departure, work_experience_description) • HAS_WORK_EXPERIENCE(user_name, work_experience_id) • NOTE(note_id, note_title, note_date, note_content) • HAS_NOTE(note_id, sender, receiver) • INTEREST(interest_name, interest_description) • HAS_INTEREST(user_name, interest_name) • EVENT_LIST(event_list_name, event_list_description) • EVENT(event_id, event_name, event_description, event_date) • HAS_EVENT(event_list_name, event_id) • POST_EVENT(event_poster, event_id) • HAS_EVENT_LIST(event_list_name, user_name) • EDUCATION(education_id, education_name, education_level) • HAS_EDUCATION(user_name, education_id) • IMAGE(image_id, image_title, image_url, image_timestamp,

image_description) • HAS_IMAGE(user_name, image_id) • USERMYISAM (user_name, real_name, work_address, user_description,

function_name,_name, department_name, hobby_name, project_name, skill_name, interest_name, past_function, past_company)

To explain how it works we will use three tables as an example. For this example we shall use the tables of ‘user’, ‘work_experience’ and ‘has_work_experience’.

CREATE TABLE user( user_name VARCHAR(64) NOT NULL, real_name VARCHAR(64) NOT NULL, work_address VARCHAR(64) NOT NULL, sex ENUM('male','female') NOT NULL, date_of_birth DATE NOT NULL, email_address VARCHAR(64) NOT NULL, user_description TEXT NOT NULL, password VARCHAR(40) NOT NULL, mobile_phone VARCHAR(15) NOT NULL, work_phone VARCHAR(15) NOT NULL, profile_picture TEXT NOT NULL DEFAULT

'http://websec.science.uva.nl/~rsu/templates/images/mannetje.png', PRIMARY KEY(user_name)) ENGINE=INNODB;

CREATE TABLE work_experience(

Page 11: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

11

work_experience_id INT(11) NOT NULL AUTO_INCREMENT, past_function VARCHAR(64) NOT NULL, company VARCHAR(64) NOT NULL, date_of_employment DATE NOT NULL, date_of_departure DATE NOT NULL, work_experience_description TEXT NOT NULL, PRIMARY KEY(work_experience_id)) ENGINE=INNODB;

CREATE TABLE has_work_experience( user_name VARCHAR(64) NOT NULL, work_experience_id INT(11) NOT NULL, PRIMARY KEY(user_name, work_experience_id), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (work_experience_id) REFERENCES work_experience(work_experience_id) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE=INNODB;

The user and work_experience entities are related via the relation HAS_WORK_EXPERIENCE. The user table consists of eleven attributes which have different data types. For instance, the first attribute ‘user_name’ is a VARCHAR(64) which means that this attribute can contain a maximum of 64 characters. In our view, an advantage of VARCHAR compared to CHAR is that it doesn’t store 64 characters regardless of how many are filled in by the user. Also we assigned a NOT NULL statement to this most attributes in the database, because this way they cannot be left empty. Another way to deal with empty fields is the use of the default value. The profile_picture for instance has an default value assigned to it. In this their will always be shown a profile_picture on the profile page, regardless if the user provided one or not.The primary key for this entity is ‘user_name’, because every user has a unique user name. The work_experience table consists of six attributes. The work_experience_id for instance, is an integer with a maximum of eleven integers. To make sure every work experience listing is unique we have assigned an auto_increment for the work_experience_id. The third table shows the relationship between user and work_experience. The HAS_WORK_EXPERIENCE relationship consists of two attributes. These attributes are the primary keys of the entities that are connected to this relationship. We already stated that we use the InnoDB database engine as opposed to the MyISAM to enable foreign keys. These foreign keys refer to the primary keys of the entities to which the relationship is connected. We also assigned extra restrictions to these foreign keys to make sure that the primary keys of the user or work experience tables cannot be deleted or updated so long as it is related to the other table of the relation.

Page 12: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

12

4.1.2 ER­diagram

In this section we will show the architecture of the database. We will do this using the Entity Relationship Diagram (ERD) (Appendix B). The ER­diagram shows the structure of our database. As you can see the ERD describes the entities User, Community, Skill, Project, Education, Event, Event_list, , Interest, Hobby, Department, Image, Branch, Project, Function_list, Note and Work_experience. The name Function_list has been chosen over Function to indicate that this table holds a list of functions. The relationship HAS_FUNCTION indicates that one user can have a function, rather than a function list. Each entity has a primary key, the primary keys are underlined in the ER­ diagram. The discriminators for the weak entities are underlined with a dashed line to indicate that they are not primary keys but discriminators. HAS_CONTACT is a relationship between two users, therefore the relationship is connected in the diagram to the ‘user’­diagram on both ends.

User

Work_experience

Community

Skill

Interest

Project

Hobby

Event

HAS_INTERES T

POST_EVENT HAS_WORK_E XPERIENCE

HAS_COMMU NITY

HAS_PROJEC T

HAS_COMPLI MENT

HAS_HOBBY

HAS_SKILL

HAS_CONTAC T

complim

entee

sender

complimen

ter HAS_BRANCH Branch

Function_list

HAS_FUNCTIO N

Department

HAS_DEPART MENT

work_phone

community_name community_descri ption company

event_description

event_name

event_id

event_date

skill_description

skill_name

sex

note_id

note_title

work_address

note_content

real_name

compliment_date interest_name interest_descriptio n hobby_name hobby_description department_descri

ption department_name

branch_name

branch_address

user_description

project_name

project_description

function_name

function_descriptio n

note_date

user

colleague

work_experience_ description

date_of_employme nt

date_of_departure

work_experience_i d

past_function

date_of_birth

e­mail_address

password

user_name

mobile_phone

HAS_EDUCATI ON

Education

education_name

education_id

education_level

HAS_EVENT_L IST

Event_list

compliment_descri ption

HAS_EVENT

profile_picture

HAS_NOTE

receiver

HAS_IMAGE

Image

image_name image_description

project_begin

project_end

Note

event_list_name

event_list_descripti on

Figure 1: ER­diagram (For full view diagram, see appendix B)

Mapping cardinalities: • All relationship lines without black arrows are many to many relations • One user can post many events, one event has one poster (many to one) • One event has one event list, one event list has many events (one to many) • One user has many work experiences, one work experience has one user

(many to one) • One user has one branch, one branch has many users (one to many)

Page 13: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

13

• One user has one department, one department has many users (one to many)

• One user has one function, one function has many users ( one to many)

As you can see in the ER diagram, most of the relations are many to many relationships. A few of the relations are related otherwise, the relation “event to user” is a many to one relationship. Each user can post more than one event, but every event is posted by only one user. The next relation “event to event list” is an rather clear one (one to many ), it is clear that a single event can be on only one event list, but that each event list can have more than one event. The relationship “work_experience to user” is a many to one relationship. That means each work experience is unique within the database. It is highly unlikely that two users will fill in the same exact work experience description. In other words it means that each work experience can be written by only one user. The relationship “user to branch” is a many­to­one relationship. In other words it means that each user is limited to working in one branch of the company. The user is also limited to work at one department, the relationship “user to department” describes this. The relationship “user to function” describes that each user can have only one current function within the company.

4.2 Logic

In this section we will describe the logic we used for our application. First we will discuss the PHP functions and classes we used, followed by the security issues we have taken care of. In the last part we will discuss the used error handling.

4.2.1 PHP

We can distinguish two different PHP logics for our application. First, how pages are loaded, second, how PHP sets up a connection and communicates with the database and translates the results to HTML. To load a page, first of all index.php is called upon. This loads the necessary functions and starts a session. It loads the files with all the functions. Next, it checks which variables are given to the URL and assigns it to the array page. Then, the function ‘loadpage’ is called with the parameters page id, user id and the errors.

CODE The ‘loadpage’ function returns an array with a template and all the other variables to load the right page. Next a new class of template is created. The variables from the array are added to the class and the page is loaded.

CODE

Page 14: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

14

The second logic we used is how PHP sets up a connection and communicates with the database. To create a connection and send queries between the database and PHP a class has been created called ‘database’. The constructor of the class connects to the MySQL database and selects the right database for the query.

CODE The database class consists of five functions not including the constructor. The first is ‘run_query’ and it has a string for a parameter and the string holds the query. The query is cleaned up, sent and the result is put in a variable that can be read by the entire class.

CODE The second function is ‘get_array’. Same as before, this function has a string for a parameter and the string holds the query. Next, the query is put in the ‘run_query’­ function and the rows of the result are added to an array. Thus, the function ‘get_array’ returns this array.

CODE The third function, ‘num_rows’, counts the rows of the result and returns this count. The fourth function, ‘database_close’, closes the connection between the database and PHP. The fifth function, ‘mysql_error_redirect’, has a parameter that holds a string with the error message. When a query fails, or if the connection to the database fails, this query is called and redirects the browser to the error page.

CODE We can perform four actions on the database, ‘select’, ‘insert’, ‘delete’ and ‘update’. These actions have several functions for each specific query we want to send to the database. However, these actions have the same logic, so we will only discuss one of them, namely, ‘select’. For our example we will use the ‘get_work_experience’ function. The parameter is a string with the user name. First this it does is create a new database class, next, a string is created which holds the query. The result of this query is checked for having more than zero rows. If it is has more than zero rows, the result of these rows are added to an array. Then, the number of rows are added to the array. If there are zero rows, it returns a Boolean saying the result is false. The result is then returned and the database is closed.

CODE To convert the resulting array to HTML it is first put into a variable of a template. If the variable is false it returns a string containing a message saying there is no result. Else, for each row in the array, HTML code will be generated to put the result on the screen.

Page 15: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

15

CODE 4.2.2 Security

We use authentication to prove that someone is actually who she claims to be. (Welling, Thomson, 2005) We use passwords that are encrypted and saved in the database. For encryption we used Secure Hash Algorithm 1 (SHA­1)

CODE To screen user data before putting it into a database we used different techniques. We have used ‘magic_quotes_gpc’ to automatically add strip slashes. This formatting is for GET and POST variables. GET variables are used to get variables from the URL. POST variables are used to send variables to a file. The strip_tags() strips out the HTML and PHP tags from a string. This way we prevent that users plant malicious scripts in user data which can be echoed back to the browser. (Welling, Thomson, 2005) We used the htmlspecialchars() function to convert characters to their HTML entity equivalents.

CODE 4.2.3 Error Handling

If not all fields of a form are fully inserted, or, if an SQL­function fails, an error_redirect is called. This function sends the browser to the error page.

CODE 4.3 Implementation

To explain how we implemented the SQL tables and the PHP code into an operational application, an example is used to clarify. The example we use is the work_experience table and code.

Function INSERT DELETE UPDATE SELECT get V edit F R F, V V, R Login F add colleague V V give compliment S, F V Change password F V search R, F Table 2: Implementation of the functions

S: Select list – List is retrieved from the Database V: PHP Variable ­ values derived from php script

Page 16: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

16

F: Text Field – Attributes number of attributes and field names are retrieved from database R: Radio Buttons – Values are retrieved from Database

In this section we provide an overview of how we implement the functions which are shown on the screen. The values can be retrieved from a php script or from a form. The form has to be filled in by the user and is further handled in the back end PHP script.

The get and edit function are general function which apply to all the get and functions handled in this application. All the get and edit functions are handled in the same way as these general functions.

4.4 GUI­design

The logon page will consist of a logo of the company and two text fields. One for filling in a user_name and one for filling in a password. Next to the password text field there will be an enter button. (See figure 2: Login screenshot)

Figure 2: Login screenshot

The profile page consists of a few areas with different functions, located in such a way to help users quickly understand the various functions and thus attain high usability of the page and its information. A row of tabs is displayed at the top of the page. These will link to pages with special functions, such as 'Home', 'My_profile', and 'Search'.

All fields on the rest of the page have a name or text explaining the function of what comes below and within the indicated rectangle. The top left of the page contains the general user information, such as a profile picture, user name, real name, work address, department, branch, work phone number, mobile phone number, e­mail address, age, sex, branch name and current function. That bit of the profile page shall also contain the formal and informal information attributed to that person. It holds lists of related work experience, skills, hobbies and interests.

In the top left corner there is a small list of functions. One link is called 'Change password'. By following this link a screen is shown that has three text boxes underneath one another and a 'Save'­button. There is also a button that says 'Add as

Page 17: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

17

friend' which, by clicking on it, will add that user to the currently logged on user as a contact. The same thing will apply to a community page where in this place there will be a button that will add the current user to the community currently viewed by that user. At the top right of the page there is a button called 'Log out'. Which by pressing shall log out the user and return to the logon page. (See figure 3: Profile page screenshot)

Below hobby on the right, there is an area called ‘This user has the following compliments’ where a list of compliments is shown. When hovering over it with the mouse, the entire information is shown. In the middle of the page, there is a small area containing thumbnails of pictures the user wishes to share with visitors of his or her page. When moving the mouse across the thumbnail, the whole picture is shown. To the right of that rectangle there is a small area containing upcoming events listed by users, ordered by date. Also showing time and name of the event and when hovering over it, the even description is shown. Beneath this area to the left there is one which holds the 'friends' or 'colleagues' area of that particular user. To the right one that holds the communities of which that user is a member. Both indicated by their (real) name and (profile) pictures. When hovering over these the total information of that user or community is shown. (See figure 3: Profile page screenshot)

At the bottom left there will be a bigger area that holds notes given to that user by other users. It has a subject or title, the profile picture and real name of the user that has given the comment and the date and time at which the comment was posted. Below that will be the message entered by the writer of the comment. At the bottom right there will be an area that lists 'interesting users' that have the same skill, project membership, hobby or interest as the user. Those interesting users shall be shown with their profile picture, name, function and the attribute that binds them, in our application we have taken the skill they possess as an example. (See figure 3: Profile page screenshot)

Page 18: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

18

Figure 3: Profile page screenshot

The search page consists of three items you can search on. ‘User’, ‘project’ and ‘both’. They are situated on the left side of the screen. On the right all the search results are shown from the search query. When hovering over the resulting users the information of those users shall be displayed. When the hover screen is shown the user can click on the ‘Go to this user’ link at the bottom and the profile page of that user is shown. (See figure 4: Search page screenshot)

Page 19: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

19

Figure 4: Search page screenshot

The edit window that pops up when the user presses the ‘edit me!’­button has three options. Add, change and delete. The pane looks like Figure 5: Edit pane screenshot.

Figure 5: Edit pane screenshot

5. EVALUATION

This section describes the various aspects that have required our attention during the process of creating the database and the application. First a requirements traceability

Page 20: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

20

matrix is presented, then some issues and their solutions are given, an evaluation of the literature is given and last but not least a discussion section is presented.

5.1. Traceability

5.1.1 Requirements Traceability Matrix

The following matrix shows whether or not the user requirements are satisfied. (See Appendix C: for the full list of requirements.)

Requirement Satisfied Explanation 1 Y Informal contacts between users by creating a sense of

belonging not only based on corporate properties, but also hobbies and interests.

2 Y It is possible to search users by skill. Users with similar skills will also be displayed on each other’s page.

3 Y The administrator holds all rights to create, modify and delete.

4 Y The administrator holds all rights to create, modify and delete.

5 Y The administrator holds all rights to create, modify and delete.

6 Y Users have to log­in with a unique user name and password.

7 Y A contact list is displayed on the page, which is constructed by the user.

8 Y, partially

It is possible to search for other users and projects.

9 Y An “edit” button will be displayed on the user’s own profile page to edit the page’s content.

10 Y Profile pages consist of all the described properties. 11 Y,

partially Users with similar skills will be displayed on each other’s page.

12 Y It is possible to write down past work experience which consists of the function, the date, the concerning company and a short description.

13 Y The user’s e­mail address will be displayed on the profile page.

14 Y It is possible to post events on a event list, which will be visible for other users by retrieving the concerning event list.

15 Y By clicking on a user’s skill and give a short comment it is possible to compliment a user. The amount of clicks will be counted which will result in a score.

16 Y Their will be a link to a textbox on the profile page to leave the user a short personal note.

Page 21: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

21

17 N Users can start a sub­community page based on their own criteria which can be joined by other users.

18 Y The administrator holds all rights to create modify and delete.

Table 2: Requirements Traceability Matrix

5.1.2 Extensions

In this section some extensions to the user requirements are stated and explained.

Education We added the entity “Education” with the relation “has_education” so that colleagues can see some sort of background information of each other. The purpose is the same as “Work_experience”.

Image We added the entity “Image” with the relation “has_image”, since it is obvious to post your own images. The images are not uploaded in the application, but are retrieved through links.

Event_list We added the entity “Event_list” with the relation “has_event_list”, because we found out that users had two roles when it comes to events: an active role as an event poster and a passive role as an event watcher. We tried to link two connections from the entity “User” to “Event”, but since “Event” is atomic, that’s not the case. Users that watch an event do not watch them separately, but through a list. This meant that a list had to be created, which resulted in “Event_list”. Later on we thought that multiple lists were a better idea, because then it would be possible to categorize them; informal events and important business meetings will not get mixed in this way.

5.2 Issues & Solutions

5.2.1 System Design

The system design, which consists of the User Requirements and the Scenario did not bring any problems. Every aspect and option was possible to realize. This resulted in a solid basis for the database as well as the graphical user interface.

5.2.2 Database

We did have to cope with a few problems when we were creating the Entity­ Relationship Diagram. A user has a profile page with properties of the user like his name, age, hobby etc. At first glance it seems logical to assign all the properties as attributes of the entity “User”, however one of the requirements was the possibility to search users according to a certain property. By assigning all the properties as attributes, this would not be possible.

Page 22: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

22

We solved the problem by selecting the possible search criteria and assign these as separate entities connected through relations. For example, the new entity “hobby” was connected through the relation “has_hobby”. All the other possible search criteria were also connected through “has_....” .

The entity “compliment” is connected with the entities “Skill” and “User” and has “compliment_id” as Primary Key, but a compliment is merely the assignment of a “skill_name” to “user”. So it would not be obvious to create the Primary Key “compliment_id”. We solved this by removing the entity “compliment” and moving its attributes to the relation “has_compliment”. We also removed the Primary Key “compliment_id”. The Primary Key of Skill (skill_name) and the Primary Key of User (user_name) in the form of a “complimenter” and “complimentee” would be unique enough, since it is only possible for a user to compliment another user once on a certain skill.

The entities “Department” and “Branch” are not linked because it could be possible for a company to have the same departments in multiple branches. To enable that option the entities “Department” and “Branch” are independent.

If users would have the freedom to name lists (like a hobby or interest) themselves, there could be a lot of ambiguity; multiple terms that mean exactly the same. We used fixed lists for such attributes called “…._name” and “….._description” to prevent ambiguity when searching for users according to certain criteria. When it is necessary to have a value added (like a hobby that is not on the list), it is possible for users to contact the .administrator about it.

The entity “Note” and the relation “has_note” were created which raised a lot of questions since a note is merely a relation between two users. We proposed to drop the entity “Note”. This resulted in more complications, since a relation cannot have its own primary key, which was necessary for every note. Combinations of attributes could not make it unique (like in “has_compliment”). We eventually re­added the entity “Note”.

The entity “Education” initially had “education_institute” as attribute, because an education is different per institute. Eventually this attribute was removed because of the unlimited combinations it would have with “education_name” to form an “education_id”.

Administrator is not explicitly implemented, although it is mentioned in the requirements. The reason is that administrator is able to do everything and the full functionality is provided in the application, but since websec does not support granted there is no explicit difference between user and administrator. Actually our role as “group04” in the database shows exactly the possibilities of the administrator. This is why we marked the requirements concerning the administrator as satisfied.

Views were created and partially used for search functions. The reason is that they were originally created to separate the user from the administrator. But since the

Page 23: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

23

difference between user and administrator cannot be set on websec, it was unnecessary to implement the views.

MySQL also caused a lot of trouble creating and using the database. See Data Storage section. Another issue with MySQL is that it can’t give itself any errors and does a sort of recovery to prevent the error. In our database we clearly stated that columns can not be left empty (NOT NULL). However, MySQL replaces the NULL value with an empty syntax (“”), which is possible. The solution was to use triggers to signal an error ourselves. Again MySQL had a flaw; it does not support SIGNAL. Since it has so many problems we did not implement “error if NULL”, but it should be present. However, the issue was solved using PHP to check if each field is filled before it is inserted in MySQL.

5.2.3 GUI

The scope of the connection with the database is not as planned. The connection was set as a variable. By calling this variable the application connects with the database, however the server did not connect as expected. The solution was making the variable GLOBAL. The problem with making it global is that unauthorized functions can easily access our database.

We didn’t implement the community pages in the application. These pages however will have the same set up and will look the same as a profile page. Therefore we have chosen to not implement this function yet and focus purely on the profile page and the search functions.

We initially wanted to use a dropdown menu in the search function. The advantage of a dropdown menu is that the containing lists are very clear and typing errors can not be made. Eventually we chose for a text field. To prevent and cope with spelling errors, it is possible to search for partial terms. AND and OR are also executed in the text field. It is possible to search for “User” by entering: name, user_description, work_address and e­mail address. To search for “Project” enter project_name or project_description (both InnoDB). When you search for “Both” it includes all of the above. The search function is DEFAULT set on “Both”.

5.2.4 Compatibility

The application presentation is designed in CSS 3.0 for Mozilla Firefox. This way it is possible to separate the layout from the structure. This results in the advantage of a clear application structure. Another reason for choosing Mozilla Firefox is the expectation that it will be a ubiquitous browser in the near future and has a higher overall compatibility. (See Appendix: D – Browser Comparison)

5.3 Literature Evaluation

In this section we will compare the literature to our project, we will try to show the link between the literature and how we used the literature in our project.

Page 24: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

24

As stated in the literature section of this document Wenger describes that a good community design is essential, the design principles of Wenger (in short) are “Design for ease of use and learning, Design for evolution, Design for “closeness at hand”, Design from a user’s perspective”(Wenger, 2005). The first design principle of Wenger “Design for ease of use and learning” we used in all stages of our project. We tried to design a community concept that is easy to use and easy to learn for the user. We designed the community in a user perspective way. We developed a community website “Con2Col”, in the visual design of the website we tried to create a website design that is easy to use and easy to learn. The website includes a user manual, for users who never used a community website. The second design principle of Wenger “Design for evolution” was not an easy one for us to implement due the lack of time. At first we planned to apply all design principles of Wenger but when the project progressed we could not implement all principles fully. We created the website in a manner that more options can be implemented to the website trough the website admin, the community can evolve in a certain level of degree. A restriction to this community is that it can’t evolve over time, it is restricted to the manner it has been build at the moment. The community has been bound to one community concept view. The third design principle of Wenger “Design for closeness at hand” we tried to use in the design of our community. We tried to make a simple interface that can be viewed and used from everywhere in the world. The users of our community can participate from home, office, or on the road etc. Wenger stated in his article “e­mail is still a very successful tool”, the use of email is an important tool in the community. Community users spend a large portion of their time using e­mail structured programs. In our Con2Col project we implemented “notes”, users can contact each other by notes. The note option we implemented can be compared with an e­mail option. The fourth design principle of Wenger “Design from a user perspective” used in the implementation of our community, and the whole project. As Wenger stated “In any technology design, the user perspective has to be the focus”, we tried to make an easy to use website interface. We made an option “Community” in Con2Col, where users can start/join a community inside our Con2Col community. An single user has his own profile page, where information can be found concerning the user. The user is also able to modify content in his profile page. Wenger describes that a community has to find a balance between community perspectives and individual perspectives.

As stated in the literature section of this document Hall found a way to get the community activity on a higher level: the colored profile idea. After reading this article we searched manners to implement this idea in our community. After some ideas we invented a concept in which users can complement each other on skill. The number of compliments on one skill gives a rating to an individual user, what correspondents with the “colored profile” of Hall.

5.4 Discussion

In this section we discuss lessons we have learned during this project and how we would do similar work in the future with current knowledge.

Page 25: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

25

In the future we might work with a different database than MySQL to prevent any of the main problems we had with MySQL and have encountered during the process. These issues are mention above. With more time to design and build the application, some things in the application would have been carried out more thoroughly and with more accuracy. For instance, the search results are now sorted by date or alphabet, but sorting on relevance could be a future improvement. That means that when a user has a lot of compliments for a certain skill, then searching for that a user providing that skill should give him/her a higher listing in the search results. More of the functionalities could have been made operational. For instance, for the search engine, more items one can search on could have been implemented. Plus a community page could have been constructed and a page could have been added to tell the user his password was incorrect.

6. CONCLUSION

To conclude, we can say that we have shown that it is possible to design and implement a database and Graphical User Interface for a network with formal and informal information about it’s users to provide additional (social) contact between a company’s employees.

7. REFERENCES

Welling L., Thomson L., PHP and MSQL Web Development, Third Edition, Indianapolis: Developer’s Library (2005)

A. Silberschatz, H. Korth, and S. Sudarshan, Database System Concepts, 5th ed: McGraw­Hill. (2006) ISBN: 0­07­295886­3.

Etienne Wenger, Nancy White, John D. Smith and Kim Rowe, Technology for communities. (2005)

Hazel Hall, Input friendliness: motivating knowledge sharing across intranets. (2003)

Kendal Whitehouse, Cutting through the clutter: what makes an intranet successful? (2006)

Homans, G.G., The cash posters: a study of a group of working girls, American Sociological Review 6 (1954)

Flap, H. Informele sociale netwerken binnen bedrijven. Bij wijze van Inleiding. Universiteit van Utrecht (2001)

Page 26: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

26

APPENDIX A: User Manual

If you see that this manual is incorrect or that it misses important information, please contact the administrator. Before reading the manual, we wish to note that we expect some experience with web pages from the user.

General topics

1. Login 2. Profile

2.1 General 2.2 Interest 2.3 Skills 2.4 Work experience 2.5 Hobby 2.6 Compliments 2.7 Photo 2.8 Agenda 2.9 Colleagues of User 2.10 Communities 2.11 Projects 2.12 Notes 2.13 Interesting users

3. Search function

Login

Username: Fill in username Password: Fill in password

After filling both fields, press LOGIN

Profile:

General Information about: name, address, telephone number, department, date of birth, function, mobile phone, sex, user description, branch, education, upload your profile picture.

Only a few options on this page can be modified.

Interest List of interests, user is able to add/remove interests

Skills List of skills, user is able to add/remove skills

Page 27: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

27

Work experience List of work experience in the past, user is able to add/remove/modify work experiences

Hobby List of hobby’s, user is able to add/remove hobby’s

This user has the following compliments List of compliments, users can’t give compliments to themselves.

Photo List of personal photos of the user, user is able to add/remove photos.

Agenda General agenda points, users are able to add agenda points to the general agenda.

Colleagues of User List of colleagues of the user, user is able to add/remove colleagues. Colleagues in this section are hyperlinked to their own profile pages.

Communities List of communities, the user is participating in. User is able to create community/delete (created community)/modify (created community)/join community/leave community

Projects List of projects the user is participating in. User is able to join/leave project

Notes List of notes, the user received Users can’t give notes to themselves.

Interesting users List of possible interesting users, automatically generated by the machine

Search function

Search Username: Fill in the username you want to search Project: Select the project you want to search Users have two search options, users can search on username OR project or username AND project.

APPENDIX B: ER­diagram (see next page)

Page 28: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

28

User

Work_experience

Community

Skill

Interest

Project

Hobby

Event

HAS_INTERES T

POST_EVENT HAS_WORK_E XPERIENCE

HAS_COMMU NITY

HAS_PROJEC T

HAS_COMPLI MENT

HAS_HOBBY

HAS_SKILL

HAS_CONTAC T

complim

entee

sender

complimen

ter HAS_BRANCH Branch

Function_list

HAS_FUNCTIO N

Department

HAS_DEPART MENT

work_phone

community_name community_descri ption company

event_description

event_name

event_id

event_date

skill_description

skill_name

sex

note_id

note_title

work_address

note_content

real_name

compliment_date interest_name interest_descriptio n hobby_name hobby_description department_descri

ption department_name

branch_name

branch_address

user_description

project_name

project_description

function_name

function_descriptio n

note_date

user

colleague

work_experience_ description

date_of_employme nt

date_of_departure

work_experience_i d

past_function

date_of_birth

e­mail_address

password

user_name

mobile_phone

HAS_EDUCATI ON

Education

education_name

education_id

education_level

HAS_EVENT_L IST

Event_list

compliment_descri ption

HAS_EVENT

profile_picture

HAS_NOTE

receiver

HAS_IMAGE

Image

image_name image_description

project_begin

project_end

Note

event_list_name

event_list_descripti on

Page 29: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

29

APPENDIX: C – User Requirements

• This application shall enable more informal contacts between its users. • This application shall make it facile to find inhouse expertise. • This application shall offer the option for the administrator to create,

modify and delete member_accounts. • This application shall offer the option for the administrator to assign and

remove skills and change function_descriptions. • This application shall offer the option for the administrator to create,

modify and delete all attributes and entities in the database. • This application shall have a user_name and password acces to the user

only, and an option to change the password inside the application. • This application shall offer the option to a user to assign other users to their

contact list. • This application shall have a search engine to search by name,

function_description, education level, department, branch, project, skill, hobby, interest and community.

• Users shall be able to modify profile_picture, hobbies, interests, education and work_experience on their own profile pages.

• A profile page shall list a user_name, real_name, work_address, work_phone_number, mobile_phone_number, profile_picture, function_description, department, branch, e­mail_address, skills, hobbies, interests, sex, education, work_experience, date_of_birth.

• This application shall have a function that shows 3 or less other people within the company with the same project, hobby, skill or interest.

• The application shall offer the option to the user to give a description of work_experience via a small text box.

• The application shall offer the option to send an e­mail from the profile page of a user to that user.

• The application shall offer the option for users to list events in an event_list that will be visible to all users.

• The application shall offer the option to assign or compliment a skill of an employee by clicking on their skill.

• The application shall offer the option to leave a personal note for a user to read, that will be listed by date at the bottom of the user's profile page.

• The application shall offer the option for a user to create and adjust a community_page.

• The application shall offer the option for the administrator to create, modify and delete a community_page.

Page 30: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

30

APPENDIX: D – Browser Comparison

Operating system suppor t The operating systems the browsers were designed to run on without emulation; for the given browser/OS combination, there are six possibilities:

• No indicates that it does not exist or was never released.

• Partial indicates that while the browser works, it lacks important functionality compared to versions for other OSs; it is still being developed however.

• Beta indicates that while a version of the browser is fully functional and has been released, it is still in development (e.g. for stability).

• Yes indicates that the browser has been officially released in a fully functional, stable version.

• Dropped indicates that the latest stable version of the browser does not work on the operating system without emulation, although an older version is available that does. The number in parentheses is the last known stable version which was officially released for that OS.

• Included indicates that the browser comes pre­packaged as part of or has been integrated into the operating system.

Please note that the list is not exhaustive, but rather reflects the most common OSs today (e.g. Netscape Navigator was also developed for OS/2 at a time when Mac OS X did not yet exist) but does not include the growing appliance segment (e.g.the Opera browser has gained a leading role for use in mobile phones, smartphones and Personal Digital Assistants, and is also used in Interactive televisions).

Browser Windows Mac OSX

Mac OS9

Linux Berkeley Software

Distr ibution Unix

Internet Explorer (Tr ident) Included No No No No Dropped (5.0)

Page 31: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

31

Mozilla Fir efox Yes Yes No Yes Yes Yes

Netscape Yes Yes Yes Yes Yes Yes

Browser features Information about what common browser features are implemented natively (without third­party add­ons).

Browser Bookmark managing

Download managing

Password managing

Form managing

Spell checking

Search engine toolbar

Internet Explorer † Yes No Yes Yes No † No †

Mozilla Fir efox Yes Yes Yes Yes No † Yes

Netscape Yes Yes Yes Yes Yes Yes

Accessibility features Information about what common accessibility features are implemented natively (without third­party add­ons).

Browser Tabbed browsing

Pop­up blocking

Incremental finding

Ad filter ing

Page zooming

Internet Explorer No † Partial † No No No †

Mozilla Fir efox Yes Yes Yes Partial † No [1]

Netscape Yes Yes Yes Partial † No

Page 32: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

32

Accessibility features (cont.) Information about what common accessibility features are implemented natively (without third­party add­ons).

Browser HTML access key

Tabbing navigation

Spatial navigation

Caret navigation

Mouse gesture

Text­ to­

speech

Voice control

Internet Explorer Yes Yes No No No † No No

Mozilla Fir efox Yes Yes No † Yes No † No † No

Netscape Yes Yes No Yes No † No No

Web technology suppor t Information about what web standards, and technologies the browsers support, except for JavaScript. External links lead to information about support in future versions of the browsers or extensions that provide such functionality.

Browser CSS2 †

Frame s Java XSLT

XHT ML 1.0 †

XHT ML 1.1 †

Mat hM L

XFo rms RSS Atom SVG

Web Form s 2.0

Voice XML/ X+V

Internet Explorer

Partia l Yes Yes Yes No No No † No No † No No No † No

Mozilla Fir efox Yes Yes Yes Yes Yes Yes Yes Yes Yes Ye s

Parti al No No

Netscape Yes Yes Yes Yes Yes Yes Yes No No No No No No

Page 33: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

33

JavaScr ipt suppor t Information about what JavaScript technologies the browsers support. Note that although XPath is used by XSLT, it is only considered here if it can be accessed using JavaScript. External links lead to information about support in future versions of the browsers or extensions that provide such functionality.

Browser JavaScr ipt ECMAScr ipt 3

DOM 1

DOM 2

DOM 3 XPath DHTML AJAX Rich editing

Internet Explorer Yes Yes Partial No † No Yes Yes Yes Yes

Mozilla Fir efox Yes Yes Yes Yes No † Yes Yes Yes Yes

Netscape Yes Yes Yes Yes No † Yes Yes Yes Yes

Protocol suppor t Information about what internet protocols the browsers support. External links lead to information about support in future versions of the browsers or extensions that provide such functionality.

Browser HTTP E­

mail † FTP NNTP

(Usenet) † SSL IRC Gopher IDN data: URL BitTorrent

Internet Explorer Partial

† No Yes No Partial † No Disabled No † No No

Mozilla Fir efox Yes No Yes No Yes No † Yes Yes † Yes No

Netscape Yes Yes Yes Yes Yes No † Yes Yes Yes No

Page 34: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

34

Image format suppor t Information about what image formats the browsers support. External links lead to information about support in future versions of the browsers or extensions that provide such functionality.

Browser JPEG GIF PNG MNG TIFF † SVG † PDF † 2D

Canvas

Internet Explorer Partial † Yes Partial † No disable No No No †

Mozilla Fir efox Yes Yes Yes No No Partial † No Yes

Netscape Yes Yes Yes No No No No No

Internationalization Most browsers are available in more than one language.

Browser Languages (Total)

Internet Explorer

Arabic (ar), Brazilian (br), Bulgarian (bg), Catalan (ca), Chinese (Simplified) (zh), Chinese (Traditional) (zh), Chinese (Hong Kong) (zh), Croatian (hr), Czech (cs), Danish (da), Dutch (nl), English (en), Estonian (et), Finnish (fi), French (fr), German (de), Greek (el), Hebrew (he), Hungarian (hu), Italian (it), Japanese (ja), Korean (ko), Latvian (lv), Lithuanian (lt),

Norwegian (nb), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Slovak (sk),

Slovenian (sl), Spanish (es), Swedish (sv), Thai (th), Turkish (tr) (33)

Mozilla Fir efox

Afrikaans (af), Albanian (sq), Arabic (ar), Asturian (??), Basque (eu), Bulgarian (bg),

Catalan (ca), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), English (en), Finnish (fi),

French (fr), German (de), Greek (el), Hebrew (iw), Hungarian (hu), Irish (ga), Italian (it), Japanese (ja), Korean (ko), Lithuanian (lt),

Page 35: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

35

Macedonian (mk), Norwegian (no), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Slovak (sk), Slovenian (sl), Spanish (es),

Swedish (sv), Turkish (tr) (34)

Netscape English (en)

Vulnerabilities (disputed — see talk page) This comparison of unpatched publicly known vulnerabilities in latest stable version browsers is based on vulnerabilities reports by SecurityFocus and Secunia. See computer security for more details about the importance of unpatched known flaws.

Known unpatched vulnerabilities

Secunia Secur ityFocus Browser

extr emely cr itical (number / oldest)

highly cr itical (number / oldest)

moderately cr itical

(number / oldest)

less cr itical (number / oldest)

not cr itical

(number / oldest)

(number / oldest)

Internet Explorer (Windows 98, NT, Me, 2000)

0

1 April 25, 2006

5 November 17, 2004

8 February 27, 2004

7 November 7, 2003

92 April 18, 2001

Internet Explorer (Windows XP SP2)

0

1 April 25, 2006

5 November 17, 2004

8 February 27, 2004

7 November 7, 2003

56 September 16,

2004

Page 36: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

36

Mozilla Fir efox 0 0 0

2 August 30, 2004

1 May 23, 2006

0

Page 37: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

37

APPENDIX: E – MySQL Tables

== SQL CREATE TABLE ==

CREATE TABLE usermyisam( user_name VARCHAR(64) NOT NULL, real_name VARCHAR(64) NOT NULL, work_address VARCHAR(64) NOT NULL, user_description TEXT NOT NULL, function_name VARCHAR(64) NOT NULL, branch_name VARCHAR(64) NOT NULL, department_name VARCHAR(64) NOT NULL, hobby_name VARCHAR(64) NOT NULL, project_name VARCHAR(64) NOT NULL, skill_name VARCHAR(64) NOT NULL, interest_name VARCHAR(64) NOT NULL, past_function VARCHAR(64) NOT NULL, past_company VARCHAR(64) NOT NULL, PRIMARY KEY(user_name), FULLTEXT (user_name, real_name, work_address, user_description,

function_name, branch_name, department_name, hobby_name, project_name, skill_name, interest_name, past_function, past_company)

) ENGINE=MYISAM;

CREATE TABLE user( user_name VARCHAR(64) NOT NULL, real_name VARCHAR(64) NOT NULL, work_address VARCHAR(64) NOT NULL, sex enum('male','female') NOT NULL, date_of_birth DATE NOT NULL, email_address VARCHAR(64) NOT NULL, user_description TEXT NOT NULL, password VARCHAR(40) NOT NULL, mobile_phone VARCHAR(15) NOT NULL, work_phone VARCHAR(15) NOT NULL, profile_picture TEXT NOT NULL DEFAULT 'http://websec.science.uva.nl/~rsu/templates/images/mannetje.png', PRIMARY KEY(user_name)

) ENGINE=INNODB;

CREATE TABLE function_list( function_name VARCHAR(64) NOT NULL, function_description TEXT NOT NULL,

Page 38: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

38

PRIMARY KEY(function_name) ) ENGINE=INNODB;

CREATE TABLE has_function( user_name VARCHAR(64) NOT NULL, function_name VARCHAR(64) NOT NULL, PRIMARY KEY(user_name, function_name), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (function_name) REFERENCES function_list(function_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE has_contact( user_name VARCHAR(64) NOT NULL, colleague_name VARCHAR(64) NOT NULL, PRIMARY KEY(user_name, colleague_name), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (colleague_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE branch( branch_name VARCHAR(64) NOT NULL, branch_address VARCHAR(64) NOT NULL, PRIMARY KEY(branch_name)

) ENGINE=INNODB;

CREATE TABLE has_branch( user_name VARCHAR(64) NOT NULL, branch_name VARCHAR(64) NOT NULL, PRIMARY KEY(user_name, branch_name), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (branch_name) REFERENCES branch(branch_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE department( department_name VARCHAR(64) NOT NULL, department_description TEXT NOT NULL, PRIMARY KEY(department_name)

Page 39: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

39

) ENGINE=INNODB;

CREATE TABLE has_department( user_name VARCHAR(64) NOT NULL, department_name VARCHAR(64) NOT NULL, PRIMARY KEY(user_name, department_name), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (department_name) REFERENCES department(department_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE hobby( hobby_name VARCHAR(64) NOT NULL, hobby_description TEXT NOT NULL, PRIMARY KEY(hobby_name)

) ENGINE=INNODB;

CREATE TABLE has_hobby( user_name VARCHAR(64) NOT NULL, hobby_name VARCHAR(64) NOT NULL, PRIMARY KEY(user_name, hobby_name), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (hobby_name) REFERENCES hobby(hobby_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE project( project_name VARCHAR(64) NOT NULL, project_description TEXT NOT NULL, project_begin DATE NOT NULL, project_end DATE NOT NULL, PRIMARY KEY(project_name)

) ENGINE=INNODB;

CREATE TABLE has_project( user_name VARCHAR(64) NOT NULL, project_name VARCHAR(64) NOT NULL, PRIMARY KEY(user_name, project_name),

Page 40: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

40

FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (project_name) REFERENCES project(project_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE skill( skill_name VARCHAR(64) NOT NULL, skill_description TEXT NOT NULL, PRIMARY KEY(skill_name)

) ENGINE=INNODB;

CREATE TABLE has_skill( user_name VARCHAR(64) NOT NULL, skill_name VARCHAR(64) NOT NULL, PRIMARY KEY(user_name, skill_name), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (skill_name) REFERENCES skill(skill_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE has_compliment( complimenter VARCHAR(64) NOT NULL, complimentee VARCHAR(64) NOT NULL, skill_name VARCHAR(64) NOT NULL, compliment_date TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL, compliment_description TEXT NOT NULL, PRIMARY KEY(complimenter, complimentee, skill_name), FOREIGN KEY(complimenter) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY(complimentee) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY(skill_name) REFERENCES skill(skill_name) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE=INNODB;

CREATE TABLE community( community_name VARCHAR(64) NOT NULL, community_description TEXT NOT NULL, PRIMARY KEY(community_name)

) ENGINE=INNODB;

Page 41: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

41

CREATE TABLE has_community( user_name VARCHAR(64) NOT NULL, community_name VARCHAR(64) NOT NULL, PRIMARY KEY(user_name, community_name), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (community_name) REFERENCES community(community_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE work_experience( work_experience_id INT(11) NOT NULL AUTO_INCREMENT, past_function VARCHAR(64) NOT NULL, company

VARCHAR(64) NOT NULL, date_of_employment DATE NOT NULL, date_of_departure DATE NOT NULL, work_experience_description TEXT NOT NULL, PRIMARY KEY(work_experience_id)

) ENGINE=INNODB;

CREATE TABLE has_work_experience( user_name VARCHAR(64) NOT NULL, work_experience_id INT(11) NOT NULL, PRIMARY KEY(user_name, work_experience_id), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (work_experience_id) REFERENCES work_experience(work_experience_id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE note( note_id INT(11) NOT NULL AUTO_INCREMENT,

note_title VARCHAR(64) NOT NULL, note_date TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL, note_content TEXT NOT NULL, PRIMARY KEY(note_id)

) ENGINE=INNODB;

Page 42: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

42

CREATE TABLE has_note( sender VARCHAR(64) NOT NULL, receiver VARCHAR(64) NOT NULL, note_id INT(11) NOT NULL,

PRIMARY KEY(note_id, sender, receiver), FOREIGN KEY (sender) REFERENCES user(user_name) ON UPDATE RESTRICT, FOREIGN KEY (receiver) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE interest( interest_name VARCHAR(64) NOT NULL, interest_description TEXT NOT NULL, PRIMARY KEY(interest_name)

) ENGINE=INNODB;

CREATE TABLE has_interest( user_name VARCHAR(64) NOT NULL, interest_nameVARCHAR(64) NOT NULL, PRIMARY KEY(user_name, interest_name), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (interest_name) REFERENCES interest(interest_name) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE event( event_id INT(11) NOT NULL AUTO_INCREMENT, event_name VARCHAR(64) NOT NULL, event_description TEXT NOT NULL, event_date TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY(event_id)

) ENGINE=INNODB;

CREATE TABLE event_list( event_list_name VARCHAR(64) NOT NULL, event_list_description TEXT NOT NULL, PRIMARY KEY(event_list_name)

) ENGINE=INNODB;

CREATE TABLE post_event( event_poster VARCHAR(64) NOT NULL,

Page 43: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

43

event_id INT(11) NOT NULL, PRIMARY KEY(event_poster, event_id), FOREIGN KEY (event_poster) REFERENCES user(user_name), FOREIGN KEY (event_id) REFERENCES event(event_id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE has_event( event_list_name VARCHAR(64) NOT NULL, event_id INT(11) NOT NULL, PRIMARY KEY(event_list_name, event_id), FOREIGN KEY (event_list_name) REFERENCES event_list(event_list_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (event_id) REFERENCES event(event_id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE has_event_list( event_list_name VARCHAR(64) NOT NULL, user_name VARCHAR(64) NOT NULL,

PRIMARY KEY (event_list_name, user_name), FOREIGN KEY (event_list_name) REFERENCES event_list(event_list_name) ON

DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (user_name) REFERENCES user(user_name) ) ENGINE=INNODB;

CREATE TABLE education( education_id INT(11) NOT NULL AUTO_INCREMENT, education_name VARCHAR(64), education_level VARCHAR(64) NOT NULL, PRIMARY KEY(education_id)

) ENGINE=INNODB;

CREATE TABLE has_education( user_name VARCHAR(64) NOT NULL, education_id INT(11) NOT NULL, PRIMARY KEY(user_name, education_id), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (education_id) REFERENCES education(education_id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE image ( image_id int(11) NOT NULL auto_increment,

Page 44: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

44

image_title varchar(64) NOT NULL, image_url varchar(128) NOT NULL, image_timestamp TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL, image_description text NOT NULL, PRIMARY KEY (image_id)

) ENGINE=InnoDB;

CREATE TABLE has_image( user_name VARCHAR(64) NOT NULL, image_id INT(11) NOT NULL, PRIMARY KEY(user_name, image_id), FOREIGN KEY (user_name) REFERENCES user(user_name) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (image_id) REFERENCES image(image_id) ON DELETE RESTRICT ON UPDATE RESTRICT

) ENGINE=INNODB;

CREATE TABLE usermyisam( user_name varchar(64) NOT NULL, real_name varchar(64) NOT NULL, work_address varchar(64) NOT NULL, user_description text NOT NULL, function_name varchar(64) NOT NULL, branch_name varchar(64) NOT NULL, department_name varchar(64) NOT NULL, hobby_name varchar(64) NOT NULL, project_name varchar(64) NOT NULL, skill_name varchar(64) NOT NULL, interest_name varchar(64) NOT NULL, past_function varchar(64) NOT NULL, past_company varchar(64) NOT NULL, PRIMARY KEY (user_name) ) ENGINE=MyISAM;

#set autocommit=0;

Page 45: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

45

== Invulling database ==

INSERT INTO user VALUES ('Rienk83', 'Rienk Su', 'Roetersstraat 15', 'Male', '1983­02­15',

'[email protected]', 'Student Informatiekunde', sha1('password'), '0612345678', '020­1234567', DEFAULT);

INSERT INTO user VALUES ('dsettels', 'Dominic Settels', 'Roetersstraat 15', 'Male', '1980­10­14',

'[email protected]', 'Student Informatiekunde', sha1('password'), '0627335789', '020­1234568', DEFAULT);

INSERT INTO user VALUES ('nbotter', 'Nick Botter', 'Roetersstraat 15', 'Male', '1985­10­23',

'[email protected]', 'Student Informatiekunde', sha1('password'), '0645864545', '020­1234569', DEFAULT);

INSERT INTO user VALUES ('deepak', 'Deepak Sharma', 'Roetersstraat 15', 'Male', '1986­06­10',

'[email protected]', 'Student Informatiekunde', sha1('password'), '0646843394', '020­1234570', DEFAULT);

INSERT INTO user VALUES ('Jos', 'Jos de Bruin', 'Parklaan 55', 'Male', '1955­02­01', '[email protected]',

'Chief Software Engineer', sha1('password'), '0626130936', '030–2294066', DEFAULT);

INSERT INTO user VALUES ('Anton', 'Anton Bossenbroek', 'Roetersstraat 15', 'Male', '1982­06­10',

'[email protected]', 'Practicum begeleider', sha1('password'), '0687654321', '020­1234570', DEFAULT);

INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Anna Paulowna', 'Regulierstraat 68'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Ouderlandertocht', 'Oudweg 1'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Beverwijk', 'Genieweg 5'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Wieringermeer', 'Wieringerwerf 2'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Groningen', 'Meibergerweg 31­ 34'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Ommen', 'Overlooplaan 38'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Ravenstein', 'Dorpsweg 14'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'St. Petersburg', 'Nevski Prospekt 67'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Genova', 'Via Vitoria 45­47'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Milano', 'Fatebenefratelli di Milano 1'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Brussel', 'Rue DEmaret 8'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Eindhoven', 'Phillipsweg 4'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Maasvlakte', 'Laan van de wereld 123'); INSERT INTO `branch` ( `branch_name` , `branch_address` ) VALUES ( 'Rotterdam', 'Amsterdamseweg 78');

Page 46: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

46

INSERT INTO `department` ( `department_name` , `department_description` ) VALUES ('ICT', 'The companys computer department, it handles the internal

computer system and its network.'); INSERT INTO `department` ( `department_name` , `department_description` ) VALUES ('Marketing', The department that handles the commercial functions of

transferring goods to consumers.'); INSERT INTO `department` ( `department_name` , `department_description` ) VALUES ('Personnel', 'The administrative division of the organization concerned

with the body of persons employed by or active in it.'); INSERT INTO `department` ( `department_name` , `department_description` ) VALUES ('Finance', 'De companys financial department. It handles incoming and

outgoing finances.'); INSERT INTO `department` ( `department_name` , `department_description` ) VALUES ('Management', 'The entirety of managerial functions in the company are

catergorized in this department.'); INSERT INTO `department` ( `department_name` , `department_description` ) VALUES ('Logistics', 'The companys transport department. It handles all the non­

electronic transfers.'); INSERT INTO `department` ( `department_name` , `department_description` ) VALUES ('Research & Development', 'The R&D department occopies itself with

with coming up with new ideas and trying to develop them so they can be used to add to the companys efficiency aspects.');

INSERT INTO `department` ( `department_name` , `department_description` ) VALUES ('Legal', 'The legal department handles all the companys internal and

external aspects that involve the law, going from pension plans to law suits.');

INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'MAVO'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'HAVO'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'VWO'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'VMBO'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'LTS'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'MTS'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'HTS'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'LBO'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'MBO'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'HBO'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` )

Page 47: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

47

VALUES (NULL , 'Bedrijfskunde', 'HBO'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , NULL , 'WO'); INSERT INTO `education` ( `education_id` , `education_name` , `education_level` ) VALUES (NULL , 'Informatiekunde', 'WO');

INSERT INTO `hobby` ( `hobby_name` , `hobby_description` ) VALUES ('Sailing', 'Out on the open water, the wind in your sails, the sun on your

face...'); INSERT INTO `hobby` ( `hobby_name` , `hobby_description` ) VALUES ('Tennis', 'The nobel sport of trying to outdo your opponent by hitting a

small yellow, bouncy ball to his side of the field across a 90cm high net and inside the white lines.');

INSERT INTO `hobby` ( `hobby_name` , `hobby_description` ) VALUES ('Soccer', 'A popular sport that requires hardly any explanation, except

maybe to some female spectators as to why sometimes the players score but dont get points.');

INSERT INTO `hobby` ( `hobby_name` , `hobby_description` ) VALUES ('Golf', 'A gentlemens sport, requiring the player to hit a small white ball

across a large green into a small hole, using a club and ones keen wits.'); INSERT INTO `hobby` ( `hobby_name` , `hobby_description` ) VALUES ('Hockey', 'To be thought an upper class sport which involves two teams

of eleven players using wooden sticks to get a hard plastic white ball in the other teams goal.');

INSERT INTO `hobby` ( `hobby_name` , `hobby_description` ) VALUES ('Portret Painting', 'Using ones skill as a painter to portray a living person

onto a canvas.'); INSERT INTO `hobby` ( `hobby_name` , `hobby_description` ) VALUES ('Fishing', 'Doing nothing but sitting at the edge of water, enjoying that

very thing.'); INSERT INTO `hobby` ( `hobby_name` , `hobby_description` ) VALUES ('Horse Racing', 'The old craft of riding a horse as fast as one can.'); INSERT INTO `hobby` ( `hobby_name` , `hobby_description` ) VALUES ('Bungee jumping', 'Jumping off a high place restrained only by a thin bit

of elastic rubber, after which one will bounce back up and down again until one is hoisted up.');

INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Cars', 'Loving automobiles for their power, beauty, excellence and the

freedom they provide.'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Formula 1', 'The pinnacle of racing. Twenty two eight hundred

horsepower race cars battling for a Grand Prix every two weeks.'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Insurance', 'The exciting world of coverage by a contract binding a party

to indemnify another against specified loss in return for premiums paid'); INSERT INTO `interest` ( `interest_name` , `interest_description` )

Page 48: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

48

VALUES ('Electronics', 'The science and technology of devices and systems using electricity to function.');

INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Pop Music', 'Popular music, a genre dating back to the 1950s. A bland

watered­down version of rocknroll with more rhythm and harmony and an emphasis on romantic love.');

INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Rock and roll music', 'A form of popular music arising from and

incorporating a variety of musical styles, especially rhythm and blues, country music, and gospel. Originating in the United States in the 1950s, it is characterized by electronically amplified instrumentation, a heavily accented beat, and relatively simple phrase structure.');

INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Classical music', 'A traditional genre of music conforming to an

established form and appealing to critical interest and developed musical taste '); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Playing guitar', 'The art of making music using the guitar as an

instrument. The most widely played instrument today.'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Pottery', 'The craft of making earthenware, often using clay and then

baking the form ofr shape one has created to let it harden so it can be used.'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Reading', 'To examine and grasp the meaning of written or printed

characters, words, or sentences.'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Comics', 'To enjoy reading or making comic strips. Picturized stories for

ones amusement.'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Movies', 'Enjoying going to or seeing films. Big Hollywood blockbusters

or an obscure film noir...'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Astronomy', 'The (semi­)scientific study of matter in outer space,

especially the positions, dimensions, distribution, motion, composition, energy, and evolution of celestial bodies and phenomena.');

INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Religion', 'Interested in the belief in and reverence for a supernatural

power or powers regarded as creator and governor of the universe.'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Cooking', 'The preparation of food for consumption.'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Go out', 'To enjoy going on a date or to hang out with friends in a bar or

dancing.'); INSERT INTO `interest` ( `interest_name` , `interest_description` ) VALUES ('Dancing', 'To enjoy moving rhythmically to music whilst going out or

professionally.');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

Page 49: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

49

VALUES ('Aanleg C­124 l. Genua', 'The building of a large C­124 gas pipe to an platform in Genua, Italy', '2003­12­01', '2007­06­01');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('ATEX­2005', 'Changes to off­shore oil platform in the north sea.', '2005­ 10­01', '2006­02­01');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('BBL', 'Factory building ops.', '2004­06­01', '2006­06­30'); INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` ,

`project_end` ) VALUES ('Bouw mengstation Anna Paulowna ', 'Building a station near the Dutch

town of Anna Paulowna to mix and transport gas from The Netherlands to The United Kingdom.', '2005­12­01', '2007­01­01');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('Energy Delta Russia', 'The collaboration and adjustment of regulations to handle a large transportation grid between Russia and the rest of Europe using the Gasunie gas network.', '2006­04­01', '2008­04­01');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('EP­RO', 'Energy and Power for Russian Oil. The delivery of man power to help build knowhow in the alliance with Russia.', '2006­02­01', '2006­12­31');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('GWWL­leiding', 'The adjustment of a large pipe line in the middle of The Netherlands.', '2006­01­01', '2006­07­01');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('O­21', 'A guide for a largescale reorganization of company skills and objectives.', '2004­11­01', '2007­12­31');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('OBIS', 'Organizational Business and Internal Structure. A project aimed at reaching an organizational structure that facilitates its core business.', '2005­ 12­01', '2006­08­01');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('Rappèl', 'Restructuring of business with middle Europe.', '2006­06­01', '2006­07­01');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('VBS­BRZO', 'Adjustment of network in Eastern Holland.', '2006­02­01', '2006­08­01');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('VBS­BRZW', 'Adjustment of network in Western Holland.', '2006­02­ 01', '2006­08­01');

Page 50: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

50

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('WGC­2005(A) ', 'Project of Gasunie to invest in new safety measures.', '2005­09­01', '2006­06­30');

INSERT INTO `project` ( `project_name` , `project_description` , `project_begin` , `project_end` )

VALUES ('WGC­2006', 'Project of Gasunie to invest in new safety measures.', '2006­07­01', '2006­12­31');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('PHP programming', 'Excellent in being able to program using the PHP programming language.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Dutch', 'Fluent in the Dutch language.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('German', 'Fluent in the German language.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('French', 'Fluent in the French language.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Chinese', 'Fluent in the Chinese language.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('English', 'Fluent in the English language.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Spanish', 'Fluent in the Spanish language.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Windows', 'Being able to work well using the operating system Microsoft Windows.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Linux', 'Being able to work well using the operating system Linux.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Access', 'Being able to work well using the program Microsoft Access.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Excel', 'Being able to work well using the program Microsoft Excel.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Power­Point', 'Being able to work well using the program Microsoft Power­Point.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Word', 'Being able to well using the program Microsoft Word.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Adobe Photoshop', 'Being able to work well using the program Adobe Photoshop.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Paintshop Pro', 'Being able to work well using the program Paintshop Pro.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Flexible', 'Having a flexible attitude at work and being open to different view points.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Essay writing', 'Having a talent for writing essays, papers or reports.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Leadership', 'Being confident to take charge and having a quality others respond to when a decision is required.');

Page 51: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

51

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Research', 'Having a talent for doing research, being meticulous and inquisitive.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Communication', 'Having a talent for communicating with others and being open to others opinions.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Planning', 'Having a talent for organizing a scedule and plan activities with concern for many aspects.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Organization', 'Having a general organization skill in structuring activities and making sure these are done. ');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Management', 'A general talent for managing people, commodities and activities with the business process.');

INSERT INTO `skill` (`skill_name`, `skill_description`) VALUES ('Task­oriented', 'Being focussed on the job, having the best interests of the company in mind.');

INSERT INTO `work_experience` ( `work_experience_id` , `past_function` , `company` , `date_of_employment` , `date_of_departure` , `work_experience_description` )

VALUES (NULL , 'Senior Executive', 'Phillips', '1998­05­21', '2006­06­20', 'President of the board and CEO of Phillips Eindhoven.');

INSERT INTO `work_experience` ( `work_experience_id` , `past_function` , `company` , `date_of_employment` , `date_of_departure` , `work_experience_description` )

VALUES (NULL , 'Junior Manager', 'AT&T', '1995­08­11', '1998­05­21', 'I held the post of junior manager at AT&T.');

INSERT INTO `work_experience` ( `work_experience_id` , `past_function` , `company` , `date_of_employment` , `date_of_departure` , `work_experience_description` )

VALUES (NULL , 'Rayon Manager', 'AT&T', '1998­05­21', '2001­06­05', 'I held the post of manager of the entire Nortern part of the Netherlands for the communications company AT&T.');

INSERT INTO `work_experience` ( `work_experience_id` , `past_function` , `company` , `date_of_employment` , `date_of_departure` , `work_experience_description` )

VALUES (NULL , 'General Manager', 'Disneyworld', '1979­09­21', '1982­12­27', 'A managing director position at the Disneyworld complex in Florida.');

INSERT INTO `work_experience` ( `work_experience_id` , `past_function` , `company` , `date_of_employment` , `date_of_departure` , `work_experience_description` )

VALUES (NULL , 'Cleaning Staff', 'Disneyworld', '1978­04­01', '1979­09­21', 'Member of the cleaning staff in the main building at the Disneyworld complex in Florida.');

INSERT INTO `work_experience` ( `work_experience_id` , `past_function` , `company` , `date_of_employment` , `date_of_departure` , `work_experience_description` )

Page 52: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

52

VALUES (NULL , 'Assistant Teacher', 'University of Amsterdam', '2005­09­01', '2006­0901', 'Helping freshman students with programming in PHP.');

INSERT INTO `has_work_experience` ( `user_name` , `work_experience_id` ) VALUES ('Rienk83', '1'); INSERT INTO `has_work_experience` ( `user_name` , `work_experience_id` ) VALUES ('deepak', '2'); INSERT INTO `has_work_experience` ( `user_name` , `work_experience_id` ) VALUES ('deepak', '3'); INSERT INTO `has_work_experience` ( `user_name` , `work_experience_id` ) VALUES ('dsettels', '4'); INSERT INTO `has_work_experience` ( `user_name` , `work_experience_id` ) VALUES ('dsettels', '5'); INSERT INTO `has_work_experience` ( `user_name` , `work_experience_id` ) VALUES ('nbotter', '6');

INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Coordinator Trace Activities', 'The person responsible for making sure

the Trace Activities are handles properly and with the highest safety in mind.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Manager Development Center', 'The operation and efficiency of the

development center is this persons responsibility.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Staff Industrial Safety', 'An employee who is part of a group of people

that watches over the safety in industrial applications, so this new knowledge can be applied.');

INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Manager OBIS Project', 'The person who is responsible for the correct

applicatioin of the OBIS project requirements.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Senior Buyer', 'The person responsible for acquiring the necessary

products and tools for the company.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Researcher Integrity', 'Doing research on the integrity of the internal core

businesses and alerting the chief manager should there be any problems.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Researcher External Safety', 'In essence, the person who looks out for

the safety of operations with countries and businesses outside the Netherlands.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Trace Controller', 'The person responsible for the Trace Activities and

their efficiency.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Proces Operator LNG', 'The person responsible for correct operation of

the LNG and remaining within budget.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Analyst', 'A member of a laboratory staff analyzing the content and

accuracy of the Gasunie outgoing products.'); INSERT INTO `function_list` ( `function_name` , `function_description` )

Page 53: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

53

VALUES ('Chief Installation', 'The person responsible for an installation somewhere in the country.');

INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('GIS Operator', 'The person who operates the GIS according to the

guidelines set by Gasunie and with the necessary safety measures in mind.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Chief Management', 'The chairman of the management department.

Responsible for the decision making and accuracy of the management department.');

INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Chief Maintenance Engineering', 'The person responsible for

maintaining the highest safety of the equipment by developing correct and timely maintenance techniques.');

INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Chief Electronics & Instrumentation', 'The person responsible for the

electronic devices and instrumentation of the various departments. Mainly the installations.');

INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Operations Coordinator', 'The various processes in the company used to

transport gas are supervised and coordinated by this person.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Maintenance Coordinator', 'For every installation the maintenance

coordinator establishes a safe and cost efficient maintenance of the installations and its network of pipelines.');

INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Manager Installations', 'The supervising manager of all national

installations.'); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Manager Control & Administration', 'The person ultimately responsible

for the administration and all the controling aspects with the various departments.');

INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Budget Controller', 'The person who checks the companys income and

outgoing funds. Is responsible for correct management of funds. '); INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Control Advisor', 'The person that connects the research and

development department with the management staff, to advise and help the companys internal aspects.');

INSERT INTO `function_list` ( `function_name` , `function_description` ) VALUES ('Administrator', 'Member of the administration staff, responsible for

handling various tasks that require accounting knowledge.');

INSERT INTO `has_function` ( `user_name` , `function_name` ) VALUES ('dsettels', 'Maintenance Coordinator'); INSERT INTO `has_function` ( `user_name` , `function_name` ) VALUES ('nbotter', 'Senior Buyer'); INSERT INTO `has_function` ( `user_name` , `function_name` ) VALUES ('Rienk83', 'Trace Controller');

Page 54: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

54

INSERT INTO `has_function` ( `user_name` , `function_name` ) VALUES ('deepak', 'Researcher External Safety');

INSERT INTO `event_list` ( `event_list_name` , `event_list_description` ) VALUES ('Birthdays', 'Here birthdays of significance can be listed for others to

see.'); INSERT INTO `event_list` ( `event_list_name` , `event_list_description` ) VALUES ('Concerts', 'Here all kinds of concerts can be listed for others to take

notice of. ');

INSERT INTO `event` ( `event_id` , `event_name` , `event_description` , `event_date` )

VALUES (NULL , 'Dominics birthday party', 'Im celebrating my birthday the day after Christmas. its gonna be a awesome feast, youre all invited!', '2006­12­27 21:00:00');

INSERT INTO `event` (`event_id`, `event_name`, `event_description`, `event_date`) VALUES (NULL, 'Robbie Williams concert', 'Robbie Williams is giving a live concert in the Amsterdam Arena on june 25th, be there!', '2006­06­25 18:30:00');

INSERT INTO `event` ( `event_id` , `event_name` , `event_description` , `event_date` )

VALUES (NULL , 'My birthday', 'Those who want to enjoy a good nights fun with beer and music, come to my birthday on febuary 2nd!', '2007­02­02 21:00:00');

INSERT INTO `event` ( `event_id` , `event_name` , `event_description` , `event_date` )

VALUES (NULL , 'Concerts', 'A dance party in Paradiso in Amsterdam. There will be lots of music and large screens to watch the Dutch soccer team play!', '2006­ 06­25 21:00:00');

INSERT INTO `has_event` ( `event_list_name` , `event_id` ) VALUES ('Birthdays', '1'); INSERT INTO `has_event` ( `event_list_name` , `event_id` ) VALUES ('Concerts', '2'); INSERT INTO `has_event` ( `event_list_name` , `event_id` ) VALUES ('Birthdays', '3'); INSERT INTO `has_event` ( `event_list_name` , `event_id` ) VALUES ('Concerts', '4');

INSERT INTO `post_event` ( `event_poster` , `event_id` ) VALUES ('dsettels', '1'); INSERT INTO `post_event` ( `event_poster` , `event_id` ) VALUES ('nbotter', '2'); INSERT INTO `post_event` ( `event_poster` , `event_id` ) VALUES ('Rienk83', '3'); INSERT INTO `post_event` ( `event_poster` , `event_id` ) VALUES ('deepak', '4');

INSERT INTO `has_branch` ( `user_name` , `branch_name` ) VALUES ('dsettels', 'Beverwijk');

Page 55: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

55

INSERT INTO `has_branch` ( `user_name` , `branch_name` ) VALUES ('Rienk83', 'Eindhoven'); INSERT INTO `has_branch` ( `user_name` , `branch_name` ) VALUES ('deepak', 'Rotterdam'); INSERT INTO `has_branch` ( `user_name` , `branch_name` ) VALUES ('nbotter', 'Milano');

INSERT INTO `has_department` ( `user_name` , `department_name` ) VALUES ('dsettels', 'Management'); INSERT INTO `has_department` ( `user_name` , `department_name` ) VALUES ('Rienk83', 'ICT'); INSERT INTO `has_department` ( `user_name` , `department_name` ) VALUES ('deepak', 'Finance'); INSERT INTO `has_department` ( `user_name` , `department_name` ) VALUES ('nbotter', 'Marketing');

INSERT INTO `has_education` ( `user_name` , `education_id` ) VALUES ('dsettels', '4'); INSERT INTO `has_education` ( `user_name` , `education_id` ) VALUES ('nbotter', '13'); INSERT INTO `has_education` ( `user_name` , `education_id` ) VALUES ('deepak', '4'); INSERT INTO `has_education` ( `user_name` , `education_id` ) VALUES ('Rienk83', '4');

INSERT INTO `has_event_list` ( `event_list_name` , `user_name` ) VALUES ('Birthdays', 'dsettels'); INSERT INTO `has_event_list` ( `event_list_name` , `user_name` ) VALUES ('Concerts', 'dsettels'); INSERT INTO `has_event_list` ( `event_list_name` , `user_name` ) VALUES ('Birthdays', 'nbotter'); INSERT INTO `has_event_list` ( `event_list_name` , `user_name` ) VALUES ('Concerts', 'nbotter'); INSERT INTO `has_event_list` ( `event_list_name` , `user_name` ) VALUES ('Concerts', 'deepak'); INSERT INTO `has_event_list` ( `event_list_name` , `user_name` ) VALUES ('Birthdays', 'Rienk83');

INSERT INTO `has_hobby` ( `user_name` , `hobby_name` ) VALUES ('dsettels', 'Tennis'); INSERT INTO `has_hobby` ( `user_name` , `hobby_name` ) VALUES ('nbotter', 'Hockey'); INSERT INTO `has_hobby` ( `user_name` , `hobby_name` ) VALUES ('nbotter', 'Golf'); INSERT INTO `has_hobby` ( `user_name` , `hobby_name` ) VALUES ('deepak', 'Soccer'); INSERT INTO `has_hobby` ( `user_name` , `hobby_name` ) VALUES ('deepak', 'Sailing');

Page 56: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

56

INSERT INTO `has_hobby` ( `user_name` , `hobby_name` ) VALUES ('deepak', 'Horse Racing'); INSERT INTO `has_hobby` (`user_name`, `hobby_name`) VALUES ('deepak', 'Fishing'); INSERT INTO `has_hobby` ( `user_name` , `hobby_name` ) VALUES ('Rienk83', 'Sailing');

INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('dsettels', 'Cars'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('dsettels', 'Formula 1'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('dsettels', 'Pop music'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('dsettels', 'Movies'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('dsettels', 'Astronomy'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('nbotter', 'Movies'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('nbotter', 'Playing guitar'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('nbotter', 'Reading'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('nbotter', 'Go out'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('deepak', 'Go out'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('deepak', 'Cars'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('deepak', 'Reading'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('deepak', 'Comics'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('Rienk83', 'Go out'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('Rienk83', 'Electronics'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('Rienk83', 'Movies'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('Rienk83', 'Cooking'); INSERT INTO `has_interest` ( `user_name` , `interest_name` ) VALUES ('Rienk83', 'Rock and roll music');

INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('nbotter', 'Aanleg C­124 l. Genua'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('nbotter', 'BBL');

Page 57: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

57

INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('nbotter', 'O­21'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('nbotter', 'OBIS'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('dsettels', 'O­21'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('dsettels', 'BBL'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('dsettels', 'OBIS'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('dsettels', 'WGC­2006'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('Rienk83', 'O­21'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('Rienk83', 'VBS­BRZW'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('Rienk83', 'Rappèl'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('Rienk83', 'Energy Delta Russia'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('deepak', 'VBS­BRZW'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('deepak', 'O­21'); INSERT INTO `has_project` ( `user_name` , `project_name` ) VALUES ('deepak', 'WGC­2006');

INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('Rienk83', 'Windows'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('Rienk83', 'Linux'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('Rienk83', 'Flexible'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('Rienk83', 'Dutch'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('Rienk83', 'Chinese'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('Rienk83', 'Essay writing'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('nbotter', 'PHP programming'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('nbotter', 'Paintshop Pro'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('nbotter', 'Power­Point'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('nbotter', 'Dutch'); INSERT INTO `has_skill` ( `user_name` , `skill_name` )

Page 58: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

58

VALUES ('nbotter', 'Management'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('nbotter', 'Windows'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('nbotter', 'English'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('nbotter', 'German'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('nbotter', 'Organization'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('dsettels', 'Windows'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('dsettels', 'English'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('dsettels', 'German'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('dsettels', 'Dutch'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('dsettels', 'Research'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('dsettels', 'Organization'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('dsettels', 'Essay writing'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('deepak', 'Linux'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('deepak', 'Research'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('deepak', 'Planning'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('deepak', 'Windows'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('deepak', 'Access'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('deepak', 'Excel'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('deepak', 'Word'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('deepak', 'Communication'); INSERT INTO `has_skill` ( `user_name` , `skill_name` ) VALUES ('deepak', 'Task­Oriented');

INSERT INTO `image` ( `image_id` , `image_title` , `image_url` , `image_timestamp` , `image_description` )

VALUES (NULL , 'ZR­1s', 'http://home.student.uva.nl/dominic.settels/tiger.jpg', NOW( ) , 'Two black Corvette ZR­1s parked side by side.');

INSERT INTO `has_image` ( `user_name` , `image_id` )

Page 59: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

59

VALUES ('dsettels', '1');

INSERT INTO `community` ( `community_name` , `community_description` ) VALUES ('O­21', 'A community for all the employees that have an interest or

affeliation with the O­21 project.'); INSERT INTO `community` ( `community_name` , `community_description` ) VALUES ('OBIS', 'A community for all the employees that have an interest or

affeliation with the OBIS project.'); INSERT INTO `community` ( `community_name` , `community_description` ) VALUES ('Go out', 'A community for people who enjoy going out and having a

good time.'); INSERT INTO `community` ( `community_name` , `community_description` ) VALUES ('Movies', 'A community for people who enjoy watching or going to the

movies.');

INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('dsettels', 'OBIS'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('dsettels', 'O­21'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('nbotter', 'OBIS'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('nbotter', 'O­21'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('Rienk83', 'O­21'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('Deepak', 'OBIS'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('dsettels', 'Movies'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('nbotter', 'Movies'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('Rienk83', 'Movies'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('deepak', 'Go out'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('nbotter', 'Go out'); INSERT INTO `has_community` ( `user_name` , `community_name` ) VALUES ('Rienk83', 'Go out');

INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('dsettels', 'nbotter'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('dsettels', 'Rienk83'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('dsettels', 'deepak'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('nbotter', 'dsettels');

Page 60: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

60

INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('nbotter', 'Rienk83'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('nbotter', 'deepak'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('Rienk83', 'dsettels'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('Rienk83', 'nbotter'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('Rienk83', 'deepak'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('deepak', 'dsettels'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('deepak', 'nbotter'); INSERT INTO `has_contact` ( `user_name` , `colleague_name` ) VALUES ('deepak', 'Rienk83');

INSERT INTO `has_compliment` ( `complimenter` , `complimentee` , `skill_name` , `compliment_date` , `compliment_description` )

VALUES ('dsettels', 'nbotter', 'PHP programming', NOW( ) , 'Excellent job on our last project. This man knows PHP.');

INSERT INTO `has_compliment` ( `complimenter` , `complimentee` , `skill_name` , `compliment_date` , `compliment_description` )

VALUES ('deepak', 'nbotter', 'PHP programming', NOW( ) , 'My compliments!'); INSERT INTO `has_compliment` ( `complimenter` , `complimentee` , `skill_name`

, `compliment_date` , `compliment_description` ) VALUES ('Rienk83', 'deepak', 'Research', NOW( ) , 'Wonderful research skills.

Lovely ability for extracting information.'); INSERT INTO `has_compliment` ( `complimenter` , `complimentee` , `skill_name`

, `compliment_date` , `compliment_description` ) VALUES ('Rienk83', 'dsettels', 'Organization', NOW( ) , 'This mans organization

skills are beyond belief. Make sure you use him if you need something done right.');

INSERT INTO `has_compliment` ( `complimenter` , `complimentee` , `skill_name` , `compliment_date` , `compliment_description` )

VALUES ('nbotter', 'Rienk83', 'Essay writing', NOW( ) , 'Amazing writing skills, nothing is too hard for this man to write greatly about.');

INSERT INTO `has_compliment` ( `complimenter` , `complimentee` , `skill_name` , `compliment_date` , `compliment_description` )

VALUES ('deepak', 'Rienk83', 'Essay writing', NOW( ) , 'He did an excellent job on writing that evaluation for our last project!');

INSERT INTO `note` ( `note_id` , `note_title` , `note_date` , `note_content` ) VALUES (NULL , 'Het is bijna vakantie', NOW( ) , 'De laatste loodjes en dan

kunnen we lekker vakantie vieren' ); INSERT INTO `note` ( `note_id` , `note_title` , `note_date` , `note_content` )

Page 61: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

61

VALUES (NULL , 'presentatie', NOW( ) , 'vergeet niet dat we donderdag moeten presenteren!'

); INSERT INTO `note` ( `note_id` , `note_title` , `note_date` , `note_content` ) VALUES (NULL , 'Eindverslag', NOW( ) , 'het eindverslag moet woensdag voor

10uur' ); INSERT INTO `note` ( `note_id` , `note_title` , `note_date` , `note_content` ) VALUES (NULL , 'Afspraak morgen', NOW( ) , 'Morgen om 1300 uur afspreken op

school?' );

INSERT INTO `has_note` ( `sender` , `receiver` , `note_id` ) VALUES ('deepak', 'nbotter', '3' ); INSERT INTO `has_note` ( `sender` , `receiver` , `note_id` ) VALUES ('dsettels', 'Rienk83', '4' ); INSERT INTO `has_note` ( `sender` , `receiver` , `note_id` ) VALUES ('nbotter', 'dsettels', '2' ); INSERT INTO `has_note` ( `sender` , `receiver` , `note_id` ) VALUES ('Rienk83', 'deepak', '1' );

INSERT INTO `usermyisam` (`user_name`, `real_name`, `work_address`, `user_description`, `function_name`, `branch_name`, `department_name`, `hobby_name`, `project_name`, `skill_name`, `interest_name`, `past_function`, `past_company`) VALUES ('Rienk83', 'Rienk Su', 'Roetersstraat 15', 'Student Informatiekunde', 'Trace Controller', 'Eindhoven', 'ICT', 'Sailing', 'VBSRZW', 'Windows, Powerpoint', 'Electronics, Movies', 'Senior Executive', 'Phillips'),

('nbotter', 'Nick Botter', 'Roetersstraat 15', 'Student Informatiekunde', '', 'UVA', 'Marketing', 'Golf', 'Aanleg C­124 l. Genua', 'Windows, Powerpoint', 'Electronics, Movies', 'Senior Executive', 'Phillips'),

('deepak', 'Deepak Sharma', 'Roetersstraat 15', 'Student Informatiekunde', 'Trace Assistant Teacher', 'UVA', 'Junior Manager', 'Soccer', 'WGC­2006', 'Windows, Powerpoint', 'Electronics, Movies', 'Senior Executive', 'Phillips'),

('dsettels', 'Dominic Settels', 'Roetersstraat 15', 'Student Informatiekunde', 'Trace Assistant Teacher', 'UVA', 'Marketing', 'Tennis', 'O­21', 'Windows, Powerpoint', 'Electronics, Movies', 'Senior Executive', 'Phillips'),

('Jos', 'Jos de Bruin', '', '', '', '', '', '', 'VBSRZW', '', '', '', ''), ('Anton', 'Anton Bossenbroek', '', '', '', '', '', '', 'Aanleg C­124 l. Genua', '', '', '', '');

Page 62: 5.3 Literature Evaluation · 5 communities, the need to design for evolution is paramount. The community’s needs at the beginning of its life will evolve over time —a challenge

62

APPENDIX: F – PHP Code

CODE