Thursday, 29 November 2012

sem-IV


Unit–1 Relational Database Design
ü  Consequences of poor database design
ü  The process of database normalization
ü  Functional dependencies
ü  Lossless joins and dependency preservation
ü  1st Normal Form, 2nd Normal Form, 3rd Normal Form, Boyee-Codd Normal Form
ü  Examples of normalization(Definition with attributes)

v  Consequences of poor database design
1.      Poor design/planning
2.      Ignoring normalization
3.      Poor naming standards
4.      Lack of documentation
5.      One table to hold all domain values
6.      Using identity/guid columns as your only key
7.      Not using SQL facilities to protect data integrity
8.      Not using stored procedures to access data
9.      Trying to build generic objects
10.  Lack of testing
    "If you don't know where you are going, any road will take you there" – George Harrison
Prophetic words for all parts of life and a description of the type of issues that plague many projects these days.
Let me ask you: would you hire a contractor to build a house and then demand that they start pouring a foundation the very next day? Even worse, would you demand that it be done without blueprints or house plans? Hopefully, you answered "no" to both of these. A design is needed make sure that the house you want gets built, and that the land you are building it on will not sink into some underground cavern. If you answered yes, I am not sure if anything I can say will help you.
Like a house, a good database is built with forethought, and with proper care and attention given to the needs of the data that will inhabit it; it cannot be tossed together in some sort of reverse implosion.
Since the database is the cornerstone of pretty much every business project, if you don't take the time to map out the needs of the project and how the database is going to meet them, then the chances are that the whole project will veer off course and lose direction. Furthermore, if you don't take the time at the start to get the database design right, then you'll find that any substantial changes in the database structures that you need to make further down the line could have a huge impact on the whole project, and greatly increase the likelihood of the project timeline slipping. 

BCA


1      Chapter 1: INTRODUCTION TO SYSTEMS
In this chapter, the material highlights a number of concepts of systems, the workload and reasons behind the workload in a system's life cycle. In this part, you'll get to know the techniques applied in studying survey methods, topic discussions, specification of systems' requirement and analysis skills. After reading this part, you'll gain more experience in dealing with systems issues which managers, users of different levels, and technicians, consider through different views.
There are many common types of systems that we come into contact with every day. It is important to be familiar with different kinds of systems for at least two reasons:
       First, even though your work as a systems analyst will probably focus on one kind of system – an automated, computerized information system – it will generally be a part of a larger system. For example, you may be working on a payroll system, which is part of a larger “human resources” system, which is, in turn, part of an overall business organization (which is itself, a system), which is, in turn, part of al larger economic system, and so on. Thus, to make your system successful, you must understand the other systems with which it will interact. Many of the computer systems that we build are replacements, or new implementations of, non-computerized systems that are already in existence. Also, most computer systems interact with, or interface with, a variety of existing systems (some of which may be computerized and some which may not). If our new computer system is to be successful, we must understand, in reasonable detail, how the current system behaves.
         Second, even though many types of systems appear to be quite different, they turn out to have many similarities. There are common principles and philosophies and theories that apply remarkably well to virtually all kinds of systems. Thus, we can often apply to systems that we build in the computer field, what we have learned about other systems, based on our own day-to-day experience, as well as the experience of scientists and engineers in a variety of fields.
Thus, if we understand something of general systems theory, it can help us better understand computerized (automated) information systems. Today, this is more and more important, because we want to build stable, reliable systems that will function well in our complex society, and of course, there are many examples of non-computer systems that have survived for thousands of years.
And now, we can consider a definition of the basic term "system". It provides several definitions:
1.   A regularly interacting or interdependent group of items forming a unified whole.
2.   An organized set of doctrines, ideas, or principles, usually intended to explain the arrangements or working of a systematic whole.
3.   An organized or established procedure.
4.   Harmonious arrangement or pattern: order.
5.   An organized society or social situation regarded as stultifying establishment.
There are many different types of systems, but indeed, virtually everything that we come into contact with during our day-to-day life is either a system or a component of a system (both).
It is useful to organize the many different kinds of systems into useful categories. Because our ultimate focus is on computer systems, we will divide all systems into two categories: natural systems and man-made systems.
There are a lot of systems that are not made by people: they exist in nature and, by and large, serve their own purpose. It is convenient to divide natural systems into two basic subcategories: physical systems and living systems.
Physical systems include such diverse example as:
      Stellar systems: galaxies, solar systems, and so on.
      Geological systems: rivers, mountain ranges, and so on.
      Molecular systems: complex organizations of atoms.
Physical systems are interesting to study because we sometimes want to modify them. We also develop a variety of man-made systems, including computer systems, which must interact harmoniously with physical systems; so it is often important to be able to model those systems to ensure that we understand them as fully as possible.
Living systems encompass all of the myriad animals and plants around us, as well as our own human race. The properties and characteristics of familiar living systems can be used to help illustrate and better understand man-made systems.
The living systems, whether at the level of the cell, the organ, the organism, the group, the organization, the society, or the supranational system, all contain the 19 subsystems:
1.   The reproducer, which is capable of giving rise to other systems similar to the one it is in.
2.   The boundary, which holds together the components that make up the system, protects them from environmental stresses, and excludes or permits entry to various sorts of matter-energy and information.
3.   The ingestor, which brings matter-energy across the system boundary from its environment.
4.   The distributor, which carries inputs from outside the system or outputs from its subsystems around the system to each component.
5.   The converter, which changes certain inputs to the system into forms more useful for the special processes of that particular system.
6.   The producer, which forms stable associations that endure for significant periods among matter-energy inputs to the system or outputs from its converter, the materials synthesized being or growth, damage repair, or replacement of components of the system, or for providing energy for moving or constituting the system’s outputs of products or information markets to its suprasystem.
7.   The matter-energy storage subsystem, which retains in the system, for different periods of time, deposits of various sorts of matter-energy.
8.   The extruder, which transmits matter-energy out of the system in the form of products or wastes.
9.   The motor, which moves the system or parts of it in relation to part or all of its environment or moves components of its environment in relation to each other.
10. The supporter, which maintains the proper spatial relationships among components of the systems, so that they can interact without weighing each other down or crowding each other.
11. The input transducer, which brings markers bearing information into system, changing them to other matter-energy forms suitable for transmission within it.
12. The internal transducer, which receives, from other subsystems or components within the system, markers bearing information about significant alterations in those subsystems or components, changing them to other matter-energy form of a sort that can be transmitted within it.
13. The channel and net, which are composed of a single route in physical space, or multiple interconnected routes, by which markers bearing information are transmitted to all parts of the system.
14. The decoder, who alters the code of information input to it through the input transducer or internal transducer into a private code that can be used internally by the system.
15. The associator, which carries out the first stage of the learning process, forming enduring associations among items of information in the system.
16. The memory, which carries out the second stage of the learning process, storing various sorts of information in the system for different periods of time.
17. The decider, which receives information inputs from all other subsystems and transmits to them information outputs that control the entire system.
18. The encoder, who alters the code of information input to it from other information processing subsystems, from a private code used internally by the system into a public code that can be interpreted by other systems in its environment.
19. The output transducer, which puts out markers bearing information from the system, changing markers within the system into other matter-energy forms that can be transmitted over channels in the system’s environment.
Keep in mind that many man-made systems (and automated systems) interact with living systems. In some cases, automated systems are being designed to replace living systems. And in other cases, researchers are considering living systems as components of automated systems.
Man-made systems include such things as:
1.   Social systems: organizations of laws, doctrines, customs, and so on.
2.   An organized, disciplined collection of ideas.
3.   Transportation systems: networks of highways, canals, airlines and so on.
4   Communication systems: telephone, telex, and so on.
5.   Manufacturing systems: factories, assembly lines, and so on.
6.   Financial systems: accounting, inventory, general ledger and so on.
Most of these systems include computers today. As a systems analyst, you will naturally assume that every system that you come in contact with should be computerized. And the customer or user, with whom you interact will generally assume that you have such a bias. A systems analyst will analyze, or study, the system to determine its essence: and understand the system's required behavior, independent of the technology used to implement the system. In most case, we will be in a position to determine whether it makes sense to use a computer to carry out the functions of the system only after modeling its essential behavior.
Some information processing systems may not be automated because of these common reasons: Cost; Convenience; Security; Maintainability; Politics.
 Automated systems are the man-made systems that interact with or are controlled by one or more computers. We can distinguish many different kinds of automated systems, but they all tend to have common components:
1. Computer hardware (CPUs, disks, terminals, and so on).
2. Computer software: system programs such as operating systems, database systems, and so on.
3. People: those who operate the system, those who provide its inputs and consume its outputs, and those who provide manual processing activities in a system.
4. Data: the information that the system remembers over a period of time.
5. Procedures: formal policies and instructions for operating the system.
One way of categorizing automated systems is by application. However, this turns out not to be terribly useful, for the techniques that we will discuss for analyzing, modeling, designing, and implementing automated systems are generally the same regardless of the application. A more useful categorization of automated systems is as follows:
1.   Batch system: A batch system is one which in it, the information is usually retrieved on a sequential basis, which means that the computer system read through all the records in its database, processing and updating those records for which there is some activity.
2.   On-line systems: An on-line systems is one which accepts input directly from the area where it is created. It is also a system in which the outputs, or results of computation, are returned directly to where they are required.
3.   Real-time systems: A real-time system may be defined as one which controls an environment by receiving data, processing them, and returning the results sufficiently quickly to affect the environment at that time.
4.   Decision-support systems: These computer systems do not make decisions on their own, but instead help managers and other professional “knowledge workers” in an organization make intelligent, informed decisions about various aspects of the operation. Typically, the decision-support systems are passive in the sense that they do not operate on a regular basis: instead, they are used on an ad hoc basis, whenever needed.
5.   Knowledge-based systems: The goal of computer scientists working in the field of artificial intelligence is to produce programs that imitate human performance in a wide variety of “intelligent” tasks. For some expert systems, that goal is close to being attained. For others, although we do not yet know how to construct programs that perform well on their own, we can begin to build programs that significantly assist people in their performance of a task.
There are a few general principles that are of particular interest to people building automated information systems. They include the following:
1.        The more specialized a system is, the less able it is to adapt to different circumstances.
2.        The more general-purpose a system is, the less optimized it is for any particular situation. But the more the system is optimized for a particular situation, the less adaptable it will be to new circumstances.
3.        The larger a system is, the more of its resources that must be devoted to its everyday maintenance.
4.        Systems are always part of larger systems, and they can always be partitioned into smaller systems.
5.        Systems grow. This principle could not be true for all systems, but many of the systems with which we are familiar do grow, because we often fail to take it into account when we begin developing the system.  
In the role of a systems analyst, you will work on systems development projects with a variety of other people. The cast of characters will change from project to project, the personalities will differ dramatically, and the number of people that you interact with will range from as few as one to as many as several dozen. However, the roles are fairly consistent, and you will see them over and over again. In a typical systems development project, there are the following major categories of players:
User
Management
Auditors, quality assurance people, and ‘standards bearers”
Systems analysts
Systems designers
Programmers
Operations personnel
The user, the most important player in the systems game, is the person (or group of people) for whom the system is being built. He or she is the person whom will be interviewed, often in great detail, to learn what features the new system must have to be successful. The user is the “owner” in the sense that he or she receives, or inherits-and thus owns- the system when it is finally built. And the user is the “customer” in at least two important respects:
1.   As in so many other professions, “the customer is always right”, regardless of how demanding, unpleasant, or irrational he or she may seem.
2.   The customer is ultimately the person paying for the system and usually has the right and/or the ability to refuse to pay if he or she is unhappy with the product received.
In most cases, it is fairly easy to identify the user: the user is typically the person who makes a formal request for a system. In a small organization, this is usually a very informal process. In a large organization, the initiation of a systems development project is usually much more formalized.
Whenever possible, the systems analyst should try to establish direct contact with the user. Even if other people are involved as intermediaries, it is important to have regular, face-to-face meeting with the person who will ultimately inherit the system.
If it is not possible to communicate directly with the user, then the documentation produced by the systems analyst becomes even more crucial.
The heterogeneity of Users
           One mistake often made by computer programmers, and sometimes by systems analysts is to assume that all users are the same. “User” implies that the systems analyst will only have to interact with one person, even when it is obvious that more than one user is involved, there is a tendency to think of them as a formless, shapeless, homogeneous group of humans. Here are two ways of categorizing users:
    Job category, or level of supervision.
    Level of experience with data processing.
Categorizing Users by Job category                    
                        On a typical systems analysis project, we can usually count on interacting with three main job categories:
(a) Operational users: are the clerical, operational, and administrative people most likely to have the most day-to-day contact with the new system. There are three things should be kept in mind when working with operational-level users:
    Operational users are very much concerned with the functions that the system will perform, but they are likely to be even more concerned with the human interface issues.
    Operational users tend to have a “local” view of the system, they tend to be knowledgeable about the specific job that they do and the people with whom they have immediate contact. But they often are unfamiliar with the “big picture”, that is, they may have trouble describing how their activity fits into the overall organization or what the overall organization’s charter really is.
    Operational users tend to think of systems in very physical terms, that is, in terms of the implementation technology currently used to implement the system or in terms of technology that they imagine could be used.
(b) Supervisory users are employed in a supervisory capacity: they usually manage a group of operational users and are responsible for their performance. The significant things to remember about supervisory users are these:
    Many of them are former operational users who have been promoted to their current position.
    One reason that the supervisory user may be perceived as out of touch with the operational user is that he or she is often measured and motivated by performance against a budget.
    It is usually the supervisory user who thinks of a new system as a way of reducing the number of operational users or avoiding further increases in their numbers as the volume of work increases.
    The supervisory user will often act as a middleman between the systems analyst and the operational user.
    The supervisory user often thinks in the same physical terms as the operational user, and this perspective is often just as local as that of the operational user.
    Finally, the supervisory user will be contacted day-to-day. He or she is the one who will typically define the requirements and detailed business policy that the system must implement. He or she may be a passive member of the team, a full-time member of the team, or even the project manager.
(c)     Executive-level users: are generally not directly involved in a systems development project, unless the project is so large and so important that it has a major impact on the organization.
To summarize, there are three different types, or levels, of users. Keep in mind that they have different perspectives, different interests and priorities, and different backgrounds. These three types of users can be characterized as shown below:
       Operational: Usually has local view. Carries out the function of the system. Has a physical view of the system.
       Supervisory user: May or may not have local view. Generally familiar with operation. Driven by budget considerations. Often acts as a middleman between users and higher levels of management.
       Executive user: Has a global view. Provides initiative for the project. No direct operating experience. Has a strategic concern.