0% found this document useful (0 votes)
23 views

VPD Demo

The document creates database users and tables for an employee and customer management system. It creates tables for employees, customers, products, orders and order details. It also creates policies to restrict access and updates to the data for different user types.

Uploaded by

Hien Nguyen
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views

VPD Demo

The document creates database users and tables for an employee and customer management system. It creates tables for employees, customers, products, orders and order details. It also creates policies to restrict access and updates to the data for different user types.

Uploaded by

Hien Nguyen
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

--1.

Tạo user:
---tạo user quản lý chính sách: QuanLyVPD
create user QuanLyVPD identified by admin;
grant create session to QuanLyVPD;
grant execute on DBMS_RLS to QuanLyVPD;

--User chứa cơ sở dữ liệu


create user congty identified by congty;
grant create session to congty;
grant create table to congty;
grant unlimited tablespace to congty;

-- Tạo account cho nhân viên:

--Trưởng phòng nhân sự: Hiếu


create user Hieu identified by hieu;
grant create session to Hieu;
grant select, insert, update, delete on congty.NhanVien to Hieu;
grant select, insert, update, delete on congty.KhachHang to Hieu;

--Trưởng phòng tài chính: Phong và Hoàng


create user Phong identified by phong;
grant create session to Phong;
grant select on NhanVien to Phong;
grant select, update, insert on congty.ChiTietHoaDon to Phong;
grant select on congty.SanPham to Phong;
grant select, update, insert on congty.HoaDon to Phong;

create user Hoang identified by hoang;


grant create session to Hoang;
grant select on congty.NhanVien to Hoang;
grant select, update, insert on congty.ChiTietHoaDon to Hoang;
grant select on congty.SanPham to Hoang;
grant select, update, insert on congty.HoaDon to Hoang;

-- Thủ kho: Thu và Hà


create user Thu identified by thu;
grant create session to Thu;
grant select on congty.SanPham to Thu;
grant select, insert, update, delete on congty.SanPham to Thu;

create user Ha identified by ha;


grant create session to Ha;
grant select on congty.SanPham to Ha;
grant select, insert, update, delete on congty.SanPham to Ha;

--2. Tạo cơ sở dữ liệu quản lý bán hàng


--Bảng Nhân Viên
create table NhanVien (
MaNV varchar(10) primary key,
TenNV varchar(40) not null,
LuongNV varchar(40) not null,
GioiTinh varchar(3) not null,
NgSinh date,
TenPB varchar(40),
ChucVu varchar(40)
);
-- insert bảng NhanVien
insert into NhanVien values (‘NV1’, ‘Thai Hieu’, ‘10000000’, ‘Nam’,
to_date(‘23/09/1994’, ‘DD/MM/YYY’), ‘Phong nhan su’, ‘Truong phong’);
insert into NhanVien values (‘NV2’, ‘Van Phong’, ‘10000000’, ‘Nam’,
to_date(‘02/01/1990’, ‘DD/MM/YYY’), ‘Phong tai chinh’, ‘Truong phong’);
insert into NhanVien values (‘NV3’, ‘Thanh Hoang’, ‘11000000’, ‘Nam’,
to_date(‘02/01/1991’, ‘DD/MM/YYY’), ‘Phong tai chinh’, ‘Nhan vien’);
insert into NhanVien values (‘NV4’, ‘Hoang Thu’, ‘10000000’, ‘Nu’,
to_date(‘21/11/1993’, ‘DD/MM/YYY’), ‘Phong quan ly kho’, ‘Truong
phong’);
insert into NhanVien values (‘NV5’, ‘Ngoc Ha’, ‘12000000’, ‘Nu’,
to_date(‘22/12/1994’, ‘DD/MM/YYY’), ‘Phong quan ly kho’, ‘Nhan Vien’);
insert into NhanVien values (‘NV6’, ‘CongTy’, ‘12000000’, ‘Nam’,
to_date(‘21/11/1994’, ‘DD/MM/YYY’), ‘Quanly’, ‘Truong phong’);

--Bảng Khách Hàng


create table KhachHang (
MaKH varchar(10) primary key,
TenKH varchar(40),
NgaySinh date,
GioiTinh varchar(20),
SoDienThoai varchar(20)
);

insert into KhachHang values (‘KH01’, ‘Nguyen Hien’,


to_date(‘29/12/1994’, ‘DD/MM/YYYY’), ‘Nu’, ‘0343127517’);
insert into KhachHang values (‘KH02’, ‘Bui Linh’, to_date(‘06/02/2001’,
‘DD/MM/YYYY’), ‘Nu’, ‘0344234398’);
insert into KhachHang values (‘KH03’, ‘To Uyen’, to_date(‘28/12/2001’,
‘DD/MM/YYYY’), ‘Nu’, ‘0342564433’);
insert into KhachHang values (‘KH04’, ‘Huyen Trang’,
to_date(‘02/10/2001’, ‘DD/MM/YYYY’), ‘Nu’, ‘0364354643’);
insert into KhachHang values (‘KH05’, ‘Thanh Tung’, to_date(‘13/09/1997’,
‘DD/MM/YYYY’), ‘Nam’, ‘0375434234’);

-- Bảng Sản Phẩm


create table SanPham (
MaSP varchar(10) primary key,
TenSP varchar(50),
GiaSP int,
MadeIn varchar(20)
);

insert into SanPham values (‘01’, ‘NokiaX1’, ‘1000000’, ‘Nokia’);


insert into SanPham values (‘02’, ‘Nokia 530’, ‘500000’, ‘Nokia’);
insert into SanPham values (‘03’, ‘Samsung J5’, ‘9000000’, ‘SamSung’);
insert into SanPham values (‘04’, ‘Samsung Galaxy S3’, ‘10000000’,
‘Samsung’);
insert into SanPham values (‘05’, ‘Samsung J7’, ‘6000000’, ‘Samsung’);
insert into SanPham values (‘06’, ‘IphoneX’, ‘15000000’, ‘Apple’);
insert into SanPham values (‘07’, ‘Asus 03’, ‘6000000’, ‘Asus’);

-- Bảng hóa đơn


create table HoaDon (
MaHD varchar(10) primary key,
Ngay date,
MaKH varchar(10),
DonGia double prescision not null,
NgSinh date,
MaNV varchar(10,
foreign key (MaKH) references KhachHang(MaKH),
foreign key (MaNV) references NhanVien(MaNV)
);

insert into HoaDon values (‘HD01’, to_date(‘20/01/2019’,


‘DD/MM/YYYY’), ‘KH01’, ‘500000’, ‘NV3’);
insert into HoaDon values (‘HD02’, to_date(‘02/11/2021’,
‘DD/MM/YYYY’), ‘KH02’, ‘6000000’, ‘NV5’);
insert into HoaDon values (‘HD03’, to_date(‘10/12/2021’,
‘DD/MM/YYYY’), ‘KH04’, ‘1000000’, ‘NV3’);
insert into HoaDon values (‘HD04’, to_date(‘11/12/2021’,
‘DD/MM/YYYY’), ‘KH01’, ‘600000’, ‘NV3’);
insert into HoaDon values (‘HD05’, to_date(‘12/12/2021’,
‘DD/MM/YYYY’), ‘KH05’, ‘9000000’, ‘NV5’);

--Bảng chi tiết hóa đơn

create table ChiTietHoaDon (


MaSP varchar(10),
MaHD varchar(10),
SoLuong int,
primary key(MaSP, MaHD)
);

insert into ChiTietHoaDon values (‘02’, ‘HD01’, 1);


insert into ChiTietHoaDon values (‘05’, ‘HD02’, 1);
insert into ChiTietHoaDon values (‘01’, ‘HD03’, 1);
insert into ChiTietHoaDon values (‘07’, ‘HD04’, 1);
insert into ChiTietHoaDon values (‘03’, ‘HD05’, 1);
-- TẠO CÁC CHÍNH SÁCH BẢO MẬT
-- Chính sách bảo mật nhân viên: nhân viên chỉ được xem và sửa thông tin cá
nhân của mình. Các trưởng phòng có thể xem thông tin của nhân viên mà họ
quản lý( riêng trưởng phòng nhân sự có thể xem và sửa thông tin của tất cả
nhân viên).

create or replace function fun_see_nv (


p_chema IN VARCHAR2,
p_object IN VARCHAR2,
RETURN VARCHAR2
AS
v_user VARCHAR2(20);
v_return VARCHAR2(200);
BEGIN
v_user=user;
if(v_user=’Hoang’) then
v_return := ‘TenNV= “ThanhHoang”’;
elsif (v_user=’Ha’) then
v_return := ‘TenNV = “Ngoc Ha”’;
elsif (v_user=’Thu’) then
v_return := ‘TenPB = “Phong quan ly kho”’;
elsif (v_user=’Phong’) then
v_return := ‘TenPB = “Phong tai chinh”’;
elsif (v_user=’Hieu’) then
v_return := ‘1=1’;
else v_return := ‘1=0’;
end if;
return v_return;
END;
-- Thêm policy
BEGIN
dbms_rls.add_policy (
object_schema =>congty,
object_name => ‘NhanVien’,
policy_name => ‘plc_nhanvien’,
policy_function => ‘fun_see_nv’,
update_check => TRUE
);
END;

-- Statement type: Trên bảng SanPham chỉ có trưởng phòng quản lý kho mới
được sửa thông tin sản phẩm.
--Tạo function:
CREATE OR REPLACE FUNCTION fun_update_SanPham (
p_schema IN VARCHAR2,
p_object IN VARCHAR2)
RETURN VARCHAR2
AS
v_user VARCHAR2(20);
v_return VARCHAR2(200);
BEGIN
v_user := user;
if(v_user = ‘Thu’) then
v_return := ‘1=1’;
else v_return := ‘1=0’;
end if;
return v_return;
END;
--Thêm policy
BEGIN
dbms_rls.add_policy (
object_schema => congty,
object_name => ‘NhaCungCap’,
policy_name => ‘plc_ncc’,
policy_function => ‘fun_update_SanPham’,
statement_types => ‘insert, update’
);
END;

-- Kiểm tra update lương nhân viên:


--Tạo function:

CREATE OR REPLACE FUNCTION fun_update_luongnv (


p_chema IN VARCHAR2,
p_object IN VARCHAR2)
RETURN VARCHAR2
AS
BEGIN
return ‘LuongNV < 15000000’;
END;
-- Them policy
BEGIN
dbms_rls.add_policy (
object_schema => congty,
object_name => ‘NhanVien’,
policy_name => ‘nhanvien_edit’,
statement_types => ‘insert, update’,
update_check => TRUE
);
END;

You might also like