Friday, November 25, 2011

RDBMS Concepts

1. What is a Database?

A database is a logically coherent collection of data with some inherent meaning, representing some aspect of real world and which is designed, built and populated with data for a specific purpose.

2. What is DBMS?

It is a collection of programs that enables user to create and maintain a database. In other words it is general-purpose software that provides the users with the processes of defining, constructing and manipulating the database for various applications.

3. What is a Database system?

The database and DBMS software together is called as Database system.

4. Advantages of DBMS?

Redundancy is controlled. Unauthorised access is restricted. Providing multiple user interfaces. Enforcing integrity constraints. Providing backup and recovery.

5. Disadvantage in File Processing System?


  • Data redundancy & inconsistency.


  • Difficult in accessing data.


  • Data isolation.


  • Data integrity.


  • Concurrent access is not possible.


  • Security Problems.


6. Describe the three levels of data abstraction?

The are three levels of abstraction:


  1. Physical level: The lowest level of abstraction describes how data are stored.


  2. Logical level: The next higher level of abstraction, describes what data are stored in database and what relationship among those data.


  3. View level: The highest level of abstraction describes only part of entire database.


7. Define the "Integrity Rules"

There are two Integrity rules.


  1. Entity Integrity: States that ?Primary key cannot have NULL value?


  2. Referential Integrity: States that ?Foreign Key can be either a NULL value or should be Primary Key value of other relation.


8. What is extension and intension?

Extension - It is the number of tuples present in a table at any instance. This is time dependent.
Intension - It is a constant value that gives the name, structure of table and the constraints laid on it.

9. What is System R? What are its two major subsystems?

System R was designed and developed over a period of 1974-79 at IBM San Jose Research Center. It is a prototype and its purpose was to demonstrate that it is possible to build a Relational System that can be used in a real life environment to solve real life problems, with performance at least comparable to that of existing system.

Its two subsystems are


  • Research Storage


  • System Relational Data System.


10. How is the data structure of System R different from the relational structure?

Unlike Relational systems in System R


  • Domains are not supported


  • Enforcement of candidate key uniqueness is optional


  • Enforcement of entity integrity is optional


  • Referential integrity is not enforced


11. What is Data Independence?

Data independence means that ?the application is independent of the storage structure and access strategy of data?. In other words, The ability to modify the schema definition in one level should not affect the schema definition in the next higher level.

Two types of Data Independence are:


  1. Physical Data Independence: Modification in physical level should not affect the logical level.


  2. Logical Data Independence: Modification in logical level should affect the view level.


NOTE: Logical Data Independence is more difficult to achieve.

12. What is a view? How it is related to data independence?

A view may be thought of as a virtual table, that is, a table that does not really exist in its own right but is instead derived from one or more underlying base table. In other words, there is no stored file that direct represents the view instead a definition of view is stored in data dictionary.

Growth and restructuring of base tables is not reflected in views. Thus the view can insulate users from the effects of restructuring and growth in the database. Hence accounts for logical data independence.

13. What is Data Model?

A collection of conceptual tools for describing data, data relationships data semantics and constraints.

14. What is E-R model?

E-R model stands for Entity-Relationship model. This data model is based on real world that consists of basic objects called entities and of relationship among these objects. Entities are described in a database by a set of attributes.

15. What is Object Oriented model?

This model is based on collection of objects. An object contains values stored in instance variables with in the object. An object also contains bodies of code that operate on the object. These bodies of code are called methods. Objects that contain same types of values and the same methods are grouped together into classes.

16. What is an Entity?

It is a 'thing' in the real world with an independent existence.

17. What is an Entity type?

It is a collection (set) of entities that have same attributes.

18. What is an Entity set?

It is a collection of all entities of particular entity type in the database.

19. What is an Extension of entity type?

The collections of entities of a particular entity type are grouped together into an entity set.

20. What is Weak Entity set?

An entity set may not have sufficient attributes to form a primary key, and its primary key compromises of its partial key and primary key of its parent entity, then it is said to be Weak Entity set.

21. What is an attribute?

It is a particular property, which describes the entity.

22. What is a Relation Schema and a Relation?

A relation Schema denoted by R(A1, A2, ?, An) is made up of the relation name R and the list of attributes Ai that it contains. A relation is defined as a set of tuples. Let r be the relation which contains set tuples (t1, t2, t3, ..., tn). Each tuple is an ordered list of n-values t=(v1,v2, ..., vn).

23. What is degree of a Relation?

It is the number of attribute of its relation schema.

24. What is Relationship?

It is an association among two or more entities.

Relationship Set - The collection (or set) of similar relationships.

Relationship Type - Relationship type defines a set of associations or a relationship set among a given set of entity types.

Degree of Relationship Type - It is the number of entity type participating.

25. What is DDL (Data Definition Language)?

A data base schema is specifies by a set of definitions expressed by a special language called DDL.

26. What is VDL (View Definition Language)?

It specifies user views and their mappings to the conceptual schema.

27. What is SDL (Storage Definition Language)?

This language is to specify the internal schema. This language may specify the mapping between two schemas.

28. What is Data Storage - Definition Language?

The storage structures and access methods used by database system are specified by a set of definition in a special type of DDL called data storage-definition language.

29. What is DML (Data Manipulation Language)?

This language that enable user to access or manipulate data as organised by appropriate data model.


  • Procedural DML or Low level: DML requires a user to specify what data are needed and how to get those data.


  • Non-Procedural DML or High level: DML requires a user to specify what data are needed without specifying how to get those data.


31. What is DML Compiler?

It translates DML statements in a query language into low-level instruction that the query evaluation engine can understand.

32. What is Query evaluation engine?

It executes low-level instruction generated by compiler.

33. What is DDL Interpreter?

It interprets DDL statements and record them in tables containing metadata.

34. What is Record-at-a-time?

The Low level or Procedural DML can specify and retrieve each record from a set of records. This retrieve of a record is said to be Record-at-a-time.

35. What is Set-at-a-time or Set-oriented?

The High level or Non-procedural DML can specify and retrieve many records in a single DML statement. This retrieve of a record is said to be Set-at-a-time or Set-oriented.

36. What is Relational Algebra?

It is procedural query language. It consists of a set of operations that take one or two relations as input and produce a new relation.

37. What is Relational Calculus?

It is an applied predicate calculus specifically tailored for relational databases proposed by E.F. Codd. E.g. of languages based on it are DSL ALPHA, QUEL.

38. How does Tuple-oriented relational calculus differ from domain-oriented relational calculus?

The tuple-oriented calculus uses a tuple variables i.e., variable whose only permitted values are tuples of that relation. E.g. QUEL

The domain-oriented calculus has domain variables i.e., variables that range over the underlying domains instead of over relation. E.g. ILL, DEDUCE.

39. What is normalization?

It is a process of analysing the given relation schemas based on their Functional Dependencies (FDs) and primary key to achieve the properties


  • Minimizing redundancy


  • Minimizing insertion, deletion and update anomalies.


40. What is Functional Dependency?

Functional dependency is denoted by X --> Y between two sets of attributes X and Y that are subsets of R specifies a constraint on the possible tuple that can form a relation state r of R. The constraint is for any two tuples t1 and t2 in r if t1[X] = t2[X] then they have t1[Y] = t2[Y]. This means the value of X component of a tuple uniquely determines the value of component Y.

41. When is a functional dependency F said to be minimal?


  • Every dependency in F has a single attribute for its right hand side.


  • It cannot replace any dependency X -->A in F with a dependency Y--> A where Y is a proper subset of X and still have a set of dependency that is equivalent to F.


  • We cannot remove any dependency from F and still have set of dependency that is equivalent to F.


42. What is Multivalued dependency?

Multivalued dependency denoted by X-->Y specified on relation schema R, where X and Y are both subsets of R, specifies the following constraint on any relation r of R: if two tuples t1 and t2 exist in r such that t1[X] = t2[X] then t3 and t4 should also exist in r with the following properties


  • t3[x] = t4[X] = t1[X] = t2[X]


  • t3[Y] = t1[Y] and t4[Y] = t2[Y]


  • t3[Z] = t2[Z] and t4[Z] = t1[Z]


where [Z = (R-(X U Y)) ]

43. What is Lossless join property?

It guarantees that the spurious tuple generation does not occur with respect to relation schemas after decomposition.

44. What is 1 NF (Normal Form)?

The domain of attribute must include only atomic (simple, indivisible) values.

45. What is Fully Functional dependency?

t is based on concept of full functional dependency. A functional dependency X --> Y is full functional dependency if removal of any attribute A from X means that the dependency does not hold any more.

46. What is 2NF?

A relation schema R is in 2NF if it is in 1NF and every non-prime attribute A in R is fully functionally dependent on primary key.

47. What is 3NF?

A relation schema R is in 3NF if it is in 2NF and for every FD X --> A either of the following is true


  • X is a Super-key of R.


  • A is a prime attribute of R.


In other words, if every non prime attribute is non-transitively dependent on primary key.

48. What is BCNF (Boyce-Codd Normal Form)?

A relation schema R is in BCNF if it is in 3NF and satisfies an additional constraint that for every FD X --> A, X must be a candidate key.

49. What is 4NF?

A relation schema R is said to be in 4NF if for every Multivalued dependency X --> Y that holds over R, one of following is true


  • X is subset or equal to (or) XY = R.


  • X is a super key.


50. What is 5NF?

A Relation schema R is said to be 5NF if for every join dependency {R1, R2, ..., Rn} that holds R, one the following is true


  • Ri = R for some i.


  • The join dependency is implied by the set of FD, over R in which the left side is key of R.

Passing command line parameters

[sourcecode language="cpp"]
#include <iostream>
using namespace std;
int main( int argc, char **argv )

{

//for taking command line arguments
bool numFound=false;
char myCharArray[10];
int x=argc;
int y;
cout <<"You entered  "<<x-1  <<" parameters after the command \"commandLine.\""<<endl;
cout <<"They were:  ";
for (int i=1; i<x; i++)
{
strcpy(myCharArray, argv[i]);
cout <<myCharArray<<"  ";
}

cout<<endl;
for (int i=1; i<x; i++)
{
strcpy(myCharArray, argv[i]);
if(isdigit(myCharArray[0]))
{

if(numFound==false)
cout<<"The number(s) you entered were:  ";

numFound=true;
y=atoi(argv[i]);
cout <<y<<" ";

}

}

cout <<endl;

}


[/sourcecode]

Determine prime numbers

[sourcecode language="cpp"]

#include <iostream>

using namespace std;
int main()
{
int num=0;
int count=0;
int prime=1;
char ans=' ';
do
{
cout <<"Enter a number:  ";
cin >> num;
for (int i=(num)/2; i>1; i--)
{
if (num%i==0)
{
count=count+1;
if (count==1)
cout <<"Internal Factor(s):  ";
prime=0;
cout <<i<<" ";
}
}
if (prime==0)
{
cout<<"\nNumber is not prime."<<endl;
}
if (prime==1)
{
cout <<"Number is prime."<<endl;
}
cout<<"Do you wish to find another prime:  ";
cin>>ans;
cin.ignore(200,'\n');
count=0;
prime=1;
system("cls");
}while(ans =='y' || ans=='Y');
system("pause");
return 0;
}

[/sourcecode]

Compiling a Native C++ Program from Command Line (C++)

1.Run Visual Studio 2008 Command Prompt window with Administrator privileges.
2.Set the following directory as the current directory at the command prompt: \Program Files\Microsoft Visual Studio <version>\VC.
3.In command prompt, type notepad sample.cpp and press Enter.

Click Yes when you are prompted to create a new file.
4. Type following code in notepad

#include <iostream>

int main()
{
std::cout << "This is a sample C++ program." << std::endl;
return 0;
}

5.On the File menu, click Save. You have created a Visual C++ source file.



6.In command prompt, type cl /EHsc sample.cpp and press Enter. The /EHsc command-line option instructs the compiler to enable C++ exception handling

7.The cl.exe compiler generates an executable program sample.exe.The .obj file is an intermediate format file.

8.To run the sample.exe program, type simple and press Enter.

Assembler language Basic concepts

assembly

CPU Registers

The CPU has 4 internal registers, each one of 16 bits. The first four, AX, BX, CX, and DX are general use registers and can also be used as 8 bit registers, if used in such a way it is necessary to refer to them for example as: AH and AL, which are the high and low bytes of the AX register. This nomenclature is also applicable to the BX, CX, and DX registers.

The registers known by their specific names:

AX Accumulator
BX Base register
CX Counting register
DX Data register
DS Data segment register
ES Extra segment register
SS Battery segment register
CS Code segment register
BP Base pointers register
SI Source index register
DI Destiny index register
SP Battery pointer register
IP Next instruction pointer register
F Flag register

Debug program

To create a program in assembler two options exist, the first one is to use the TASM or Turbo Assembler, of Borland, and the second one is to use the debugger - on this first section we will use this last one since it is found in any PC with the MS-DOS, which makes it available to any user who has access to a machine with these characteristics.

Debug can only create files with a .COM extension, and because of the characteristics of these kinds of programs they cannot be larger that 64 kb, and they also must start with displacement, offset, or 0100H memory direction inside the specific segment.

Debug provides a set of commands that lets you perform a number of useful
operations:

A Assemble symbolic instructions into machine code
D Display the contents of an area of memory
E Enter data into memory, beginning at a specific location
G Run the executable program in memory
N Name a program
P Proceed, or execute a set of related instructions
Q Quit the debug program
R Display the contents of one or more registers
T Trace the contents of one instruction
U Unassembled machine code into symbolic code
W Write a program onto disk

It is possible to visualize the values of the internal registers of the CPU using the Debug program. To begin working with Debug, type the following prompt in your computer:

C:/>Debug [Enter]

On the next line a dash will appear, this is the indicator of Debug, at this moment the instructions of Debug can be introduced using the following command:

-r[Enter]

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0100 NV EI PL NZ NA PO NC
0D62:0100 2E CS:
0D62:0101 803ED3DF00 CMP BYTE PTR [DFD3],00 CS:DFD3=03

All the contents of the internal registers of the CPU are displayed; an
alternative of viewing them is to use the "r" command using as a parameter
the name of the register whose value wants to be seen. For example:

-rbx
BX 0000
:

This instruction will only display the content of the BX register and the Debug indicator changes from "-" to ":"

When the prompt is like this, it is possible to change the value of the register which was seen by typing the new value and [Enter], or the old value can be left by pressing [Enter] without typing any other value.

Assembler structure

In assembly language code lines have two parts, the first one is the name of the instruction which is to be executed, and the second one are the parameters of the command. For example: add ah bh

Here "add" is the command to be executed, in this case an addition, and "ah" as well as "bh" are the parameters.

For example:mov al, 25

In the above example, we are using the instruction mov, it means move the value 25 to al register.

The name of the instructions in this language is made of two, three or four letters. These instructions are also called mnemonic names or operation codes, since they represent a function the processor will perform.

Sometimes instructions are used as follows:

add al,[170]

The brackets in the second parameter indicate to us that we are going to work with the content of the memory cell number 170 and not with the 170 value, this is known as direct addressing.

Creating basic assembler program

The first step is to initiate the Debug, this step only consists of typing debug[Enter] on the operative system prompt.

To assemble a program on the Debug, the "a" (assemble) command is used; when this command is used, the address where you want the assembling to begin can be given as a parameter, if the parameter is omitted the assembling will be initiated at the locality specified by CS:IP, usually 0100h, which is the locality where programs with .COM extension must be
initiated. And it will be the place we will use since only Debug can create this specific type of programs.

Even though at this moment it is not necessary to give the "a" command a parameter, it is recommendable to do so to avoid problems once the CS:IP registers are used, therefore we type:

a 100[enter]
mov ax,0002[enter]
mov bx,0004[enter]
add ax,bx[enter]
nop[enter][enter]

What does the program do?, move the value 0002 to the ax register, move the value 0004 to the bx register, add the contents of the ax and bx registers, the instruction, no operation, to finish the program.

In the debug program. After to do this, appear on the screen some like the follow lines:

C:\>debug
-a 100
0D62:0100 mov ax,0002
0D62:0103 mov bx,0004
0D62:0106 add ax,bx
0D62:0108 nop
0D62:0109

Type the command "t" (trace), to execute each instruction of this program,
example:

-t

AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0103 NV EI PL NZ NA PO NC
0D62:0103 BB0400 MOV BX,0004

You see that the value 2 move to AX register. Type the command "t" (trace),
again, and you see the second instruction is executed.

-t

AX=0002 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0106 NV EI PL NZ NA PO NC
0D62:0106 01D8 ADD AX,BX

Type the command "t" (trace) to see the instruction add is executed, you will see the follow lines:

-t

AX=0006 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0108 NV EI PL NZ NA PE NC
0D62:0108 90 NOP

The possibility that the registers contain different values exists, but AX and BX must be the same, since they are the ones we just modified.

To exit Debug use the "q" (quit) command.


Storing and loading the programs

It would not seem practical to type an entire program each time it is needed, and to avoid this it is possible to store a program on the disk, with the enormous advantage that by being already assembled it will not be necessary to run Debug again to execute it.

The steps to save a program that it is already stored on memory are:

Obtain the length of the program subtracting the final address from the initial address, naturally in hexadecimal system.
Give the program a name and extension. Put the length of the program on the CX register. Order Debug to write the program on the disk.

By using as an example the following program, we will have a clearer idea of how to take these steps:

When the program is finally assembled it would look like this:

0C1B:0100 mov ax,0002
0C1B:0103 mov bx,0004
0C1B:0106 add ax,bx
0C1B:0108 int 20
0C1B:010A

To obtain the length of a program the "h" command is used, since it will show us the addition and subtraction of two numbers in hexadecimal. To obtain the length of ours, we give it as parameters the value of our program's final address (10A), and the program's initial address (100). The first result the command shows us is the addition of the parameters and the
second is the subtraction.

-h 10a 100
020a 000a

The "n" command allows us to name the program.

-n test.com

The "rcx" command allows us to change the content of the CX register to the value we obtained from the size of the file with "h", in this case 000a, since the result of the subtraction of the final address from the initial address.

-rcx
CX 0000
:000a

Lastly, the "w" command writes our program on the disk, indicating how many bytes it wrote.

-w
Writing 000A bytes

To save an already loaded file two steps are necessary:

Give the name of the file to be loaded.
Load it using the "l" (load) command.

To obtain the correct result of the following steps, it is necessary that the above program be already created.

Inside Debug we write the following:

-n test.com
-l
-u 100 109
0C3D:0100 B80200 MOV AX,0002
0C3D:0103 BB0400 MOV BX,0004
0C3D:0106 01D8 ADD AX,BX
0C3D:0108 CD20 INT 20

The last "u" command is used to verify that the program was loaded on memory. What it does is that it disassembles the code and shows it disassembled. The parameters indicate to Debug from where and to where to disassemble.

Debug always loads the programs on memory on the address 100H, otherwise indicated.

Embed audio,video to web pages

The HTML tag is used for embedding an external content into  HTML document.  element is an empty element.           (no closing tag is used).The tag was introduced in HTML 5.

[sourcecode language="html"]
<embed height="200" width="200" src="My song.avi" autostart="true" loop="false"></embed>
[/sourcecode]

How to Make EXE Files Using Notepad

exe

Step 1:
Open Notepad on your computer. Notepad is located in the "Accessories" folder of the computer's "Program Files".

Step 2:
Hold down the "Alt" key and use the number pad to type in every 3-digit combinations from 000 to 999. After each 3-digit combination, release the "Alt" key.

Step 3:
Make notes on what keys produce what symbols. You can make a list of all of the 3-digit combinations or just a list of the ones you need. In Notepad, these combinations are the only way to get certain symbols.

Step 4:
Type the "exe" file for the program you want to create from the programming language into Notepad. Type the file in C++ programming language. Use the "Alt" and the 3-digit combinations to create symbols that do not appear on the keyboard but that you need in the program.

Step 5:
Save the file as a text file until you complete the "exe" program. Be aware that it may take a long time to type every line of code in the "exe" program.

Step 6:
Click on "File" and then choose "Save." In the extension drop-down menu, choose "exe." Name the file and click the "Save" button. Locate the file you saved and double-click it to run the "exe" file.

Speech using SAPI

[sourcecode language="csharp"]
using System;
using System.Windows.Forms;
using SpeechLib;// need this reference as we use functions from the SAPI
namespace Speech
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{

SpVoice voice = new SpVoice();
voice.Speak("Welcome to Code Zone", SpeechVoiceSpeakFlags.SVSFDefault);//speak  using default settings
}
}
}


[/sourcecode]

Sending E-mail with attachments

[sourcecode language="csharp"]
using System;
using System.IO;
using System.Net.Mail;
using System.Net.Mime;

namespace email4
{
class Program
{
static void Main(string[] args)
{
MailMessage m = new MailMessage();
SmtpClient sc = new SmtpClient();

try
{
m.From = new MailAddress("sender_email_address", "sender_display_name");
m.To.Add(new MailAddress("receiver_email_address", "receiver_display_name"));
m.CC.Add(new MailAddress("receiver_email_address", "receiver_display_name"));
//similarly BCC
m.Subject = "Test1";
m.IsBodyHtml = true;
m.Body = " This is a Test Mail";

FileStream fs = new FileStream("C:\\Documents and Settings\\All Users\\Documents\\test.pdf",
FileMode.Open, FileAccess.Read);
Attachment a = new Attachment(fs, "test.pdf",
MediaTypeNames.Application.Octet);
m.Attachments.Add(a);

sc.Host = "smtp.gmail.com";
sc.Port = 587;
sc.Credentials = new
System.Net.NetworkCredential("gmail_account_id", "gmail_account_password");
sc.EnableSsl = true;
sc.Send(m);

Console.ReadLine();

}
catch (Exception ex)
{
Console.WriteLine(ex.Message);

}
}
}
}


[/sourcecode]

Sending E-mail (gmail)

[sourcecode language="csharp"]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;

namespace email
{
class Program
{
static void Main(string[] args)
{
try
{
//The From address (Email ID)
string str_from_address = "sender_email_address";

//The Display Name
string str_name = "Test Mail";

//The To address (Email ID)
string str_to_address = "receiver_email_address";

//Create MailMessage Object
MailMessage email_msg = new MailMessage();

//Specifying From,Sender & Reply to address
email_msg.From = new MailAddress(str_from_address, str_name);
email_msg.Sender = new MailAddress(str_from_address, str_name);
email_msg.ReplyTo = new MailAddress(str_from_address, str_name);

//The To Email id
email_msg.To.Add(str_to_address);

email_msg.Subject = "My Subject";//Subject of email

email_msg.Body = "This is the body of this message";

//Create an object for SmtpClient class
SmtpClient mail_client = new SmtpClient();

//Providing Credentials (Username & password)
NetworkCredential network_cdr = new NetworkCredential();
network_cdr.UserName = str_from_address;
network_cdr.Password = "gmail_account_password";

mail_client.Credentials = network_cdr;

//Specify the SMTP Port
mail_client.Port = 587;

//Specify the name/IP address of Host
mail_client.Host = "smtp.gmail.com";

//Uses Secure Sockets Layer(SSL) to encrypt the connection
mail_client.EnableSsl = true;

//Now Send the message
mail_client.Send(email_msg);

Console.WriteLine("Email Sent Successfully");
}
catch (Exception ex)
{
//Some error occured
Console.WriteLine(ex.Message.ToString());
}

Console.ReadKey();

}
}
}


[/sourcecode]

How to enable CORS in Laravel 5

https://www.youtube.com/watch?v=PozYTvmgcVE 1. Add middleware php artisan make:middleware Cors return $next($request) ->header('Acces...