0% found this document useful (0 votes)
9 views7 pages

New Cocweb

NEW COCWEB

Uploaded by

chalaabdurezak9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views7 pages

New Cocweb

NEW COCWEB

Uploaded by

chalaabdurezak9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

P1

Answer
Task 1: Normalize the Table
Split into 4 tables to eliminate redundancy:
1. Projects
(`Project_code`, Project_name, Project_manager, Project_budget)
2. Departments
(`Department_id`, Department_name)
3. Employees
(`Employee_id`, Employee_name, Department_id, Hourly_rate)
4. Project_Employees (Junction Table)
(`Project_code`, `Employee_id`)

Task 2: Create Database & Tables

CREATE DATABASE ProjectManagement;


USE ProjectManagement;

CREATE TABLE Departments (


Department_id INT IDENTITY(1,1) PRIMARY KEY,
Department_name VARCHAR(50) NOT NULL
);

CREATE TABLE Projects (


Project_code VARCHAR(10) PRIMARY KEY,
Project_name VARCHAR(50) NOT NULL,
Project_manager VARCHAR(50) NOT NULL,
Project_budget DECIMAL(15,2) NOT NULL
);

CREATE TABLE Employees (


Employee_id INT IDENTITY(1,1) PRIMARY KEY,
Employee_name VARCHAR(50) NOT NULL,
Department_id INT FOREIGN KEY REFERENCES Departments(Department_id),
Hourly_rate DECIMAL(5,2) NOT NULL
);

CREATE TABLE Project_Employees (


Project_code VARCHAR(10) FOREIGN KEY REFERENCES Projects(Project_code),
Employee_id INT FOREIGN KEY REFERENCES Employees(Employee_id),
);

Task 3: Create Relationships


Relationships are established via foreign keys:
- `Employees.Department_id` → `Departments.Department_id`
- `Project_Employees.Project_code` → `Projects.Project_code`
- `Project_Employees.Employee_id` → `Employees.Employee_id`

Task 4: Insert Sample Data


-- Insert Departments
INSERT INTO Departments (Department_name) VALUES ('Database'), ('Testing'), ('IT');

-- Insert Projects
INSERT INTO Projects (Project_code, Project_name, Project_manager, Project_budget)
VALUES ('Pc010', 'Reservation system', 'Mr. Ajay', 120500),
('Pc011', 'HR system', 'Mr. Charu', 500500),
('Pc012', 'Attendance system', 'Mr. Rajesh', 7100700);

-- Insert Employees
INSERT INTO Employees (Employee_name, Department_id, Hourly_rate)
VALUES ('Mohan', 1, 21.00), ('Vipul', 2, 16.50), ('Riyaz', 3, 22.00),
('Pavan', 1, 18.50), ('Jitendar', 2, 17.00), ('Poorja', 3, 23.50),
('Rahul', 1, 21.50), ('Avneh', 2, 15.50), ('Vikas', 3, 20.50);

-- Assign Employees to Projects


INSERT INTO Project_Employees (Project_code, Employee_id)
VALUES ('Pc010', 1), ('Pc010', 2), ('Pc010', 3),
('Pc011', 4), ('Pc011', 5), ('Pc011', 6),
('Pc012', 7), ('Pc012', 8), ('Pc012', 9);

Tasks 5-7: Security Setup


-- Create Logins
CREATE LOGIN Login1 WITH PASSWORD = 'coo@123';
CREATE LOGIN Login2 WITH PASSWORD = 'coo@321';

-- Create Users
CREATE USER user1 FOR LOGIN Login1;
CREATE USER user2 FOR LOGIN Login2;

-- Create Role & Add Users


CREATE ROLE Admin;
ALTER ROLE Admin ADD MEMBER user1;
ALTER ROLE Admin ADD MEMBER user2;

-- Permissions
DENY UPDATE, DELETE ON Projects(Project_budget) TO user1;
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::dbo TO user2;

Task 8: Advanced Queries


Query 0: Retrieve Attendance System Details
SELECT
p.Project_manager,
p.Project_budget,
d.Department_name,
e.Employee_name
FROM Projects p
JOIN Project_Employees pe ON p.Project_code = pe.Project_code
JOIN Employees e ON pe.Employee_id = e.Employee_id
JOIN Departments d ON e.Department_id = d.Department_id
WHERE p.Project_name = 'Attendance system';

Query 1: Employee with Highest Hourly Rate


SELECT TOP 1 Employee_name, Hourly_rate
FROM Employees
ORDER BY Hourly_rate DESC;

Query 2: Count of Database Department Employees


SELECT COUNT(*) AS Database_Employees
FROM Employees e
JOIN Departments d ON e.Department_id = d.Department_id
WHERE d.Department_name = 'Database';

Query 3: Backup and Restore Database

BACKUP DATABASE ProjectManagement


TO DISK = 'D:\ProjectManagement.bak'
WITH INIT;

-- Restore (simulated - requires exclusive access)


RESTORE DATABASE ProjectManagement
FROM DISK = 'D:\ProjectManagement.bak'
WITH REPLACE;
Solution for Project 2: Develop Dynamic Web-based System
Task 2: Project Plan (Activities, Cost, Duration)
Phase Activities Duration Cost
Requirements Stakeholder interviews 3 days 500 0
Design ERD, System Architecture 2 days 4000
Development Frontend/Backend coding 10 days 2,0000
Testing Functionality/Security checks 3 days 600 0
Deployment Server setup & Launch 1 day 3000
Total 19 days 3,8000

Task 3: Infrastructure Requirements


Item Specification Quantity Cost
Web Server Apache/Nginx on Ubuntu 1 Free
20.04
Database Server MySQL 8.0 1 Free
Development PC 8GB RAM, 256GB SSD, i5 1 800 0
CPU
Backup Storage 500GB External HDD 1 600
Total Cost 860 0

---

Task 4: ER Diagram & System Architecture ER Diagram


erDiagram
CUSTOMERS ||--o{ ORDERS : places
PRODUCTS ||--o{ ORDER_DETAILS : included_in
INVENTORY ||--o{ PRODUCTS : tracks
ORDERS ||--o{ ORDER_DETAILS : contains

CUSTOMERS {
int customer_id PK
varchar name
varchar email
varchar address
}
PRODUCTS {
int product_id PK
varchar name
text description
decimal price
varchar size
varchar color
varchar image_url
}
ORDERS {
int order_id PK
int customer_id FK
date order_date
varchar status
}
ORDER_DETAILS {
int detail_id PK
int order_id FK
int product_id FK
int quantity
}
INVENTORY {
int inventory_id PK
int product_id FK
int stock
date last_updated
}

System Architecture:
Client Browser
→ Apache/PHP Web Server
→ MySQL Database
→ Cloud Storage (Product Images)

Task 5: Web Forms (HTML)


Product Form (`product_form.html`):
<!DOCTYPE html>
<html>
<head>
<title>Product Management</title>
</head>
<body>
<h2>Add Product</h2>
<form action="insert_product.php" method="POST">
<label>Name:</label>
<input type="text" name="name" required><br>

<label>Description:</label>
<textarea name="description" required></textarea><br>
<label>Price :</label>
<input type="number" step="0.01" name="price" required><br>

<label>Size:</label>
<input type="text" name="size"><br>

<label>Color:</label>
<input type="text" name="color"><br>

<label>Image URL:</label>
<input type="text" name="image_url"><br>

<input type="submit" value="Add Product">


</form>
</body>
</html>
(Similar forms for `customer_form.html`, `order_form.html`, `inventory_form.html`)

Task 6: Database Setup (MySQL)


CREATE DATABASE BMS;
USE BMS;

-- Products Table
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) ,
description TEXT ,
price DECIMAL(10,2) ,
size VARCHAR(20),
color VARCHAR(30),
image_url VARCHAR(255)
);

-- Customers Table
CREATE TABLE customers (
customer_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
address TEXT NOT NULL
);

-- Orders Table
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
order_date DATE ,
status ENUM('Pending','Shipped','Delivered'),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

-- Inventory Table
CREATE TABLE inventory (
inventory_id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT UNIQUE,
stock INT DEFAULT 0,
last_updated DATE,
FOREIGN KEY (product_id) REFERENCES products(product_id)
);

Task 7: Form Validation (JavaScript)


Add to `product_form.html`:
<script>
document.querySelector('form').addEventListener('submit', function(e) {
const nameField = document.querySelector('input[name="name"]');
const nameValue = nameField.value.trim();

// Validate empty
if(nameValue === '') {
alert("Name cannot be empty!");
e.preventDefault();
return;
}

// Validate numbers
if(/\d/.test(nameValue)) {
alert("Name cannot contain numbers!");
e.preventDefault();
}
});
</script>

Task 8: Database Connection (`db_connect.php`)

Task 9: Product Insertion Script (`insert_product.php`)

You might also like