Tải bản đầy đủ (.docx) (33 trang)

Cơ sở dữ liệu phân tán Quản lý vật tư UTT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (655.4 KB, 33 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GTVT
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO HỌC PHẦN
CƠ SỞ DỮ LIỆU PHÂN TÁN
ĐỀ TÀI: QUẢN LÝ VẬT TƯ
Nhóm sinh viên thực hiện: Đồng Thanh Tuấn
Hồng Trần Nguyên
Đỗ Việt Hưng
Giảng viên hướng dẫn: Ths Bùi Thị Như

HÀ NỘI 2023


MỤC LỤC
PHÂN CHIA NHIỆM VỤ............................................................................................1
PHẦN I: THIẾT KẾ CÁC HỆ CSDL PHÂN TÁN...................................................2
1.1 Mơ hình cơ sở dữ liệu............................................................................................2
1.1.1 NhaCungCap....................................................................................................2
1.1.2 NhanVien.........................................................................................................2
1.1.4 PhieuNhapKho.................................................................................................2
1.2 Mơ hình cơ sở dữ liệu tập trung.............................................................................4
1.3 Thiết lập cơ sở dữ liệu............................................................................................4
1.3.1 Tạo CSDL QLVT.................................................................................................4
1.3.2 Tạo bảng KhoVatTu..........................................................................................4
1.3.3 Tạo bảng NhanVien..........................................................................................5
1.3.4 Tạo bảng DanhMucVatTu................................................................................5
1.3.5 Tạo bảng NhaCungCap.....................................................................................5
1.3.6 Tạo bảng PhieuNhapKho.................................................................................5
1.4 Cơ sở dữ liệu..........................................................................................................6
1.4.1 DanhMucVatTu................................................................................................6


1.4.2 NhaCungCap....................................................................................................7
1.4.3 NhanVien.........................................................................................................7
1.4.4 KhoVatTu..........................................................................................................7
1.4.5 PhieuXuat.........................................................................................................7


1.4.6 PhieuNhapKho.................................................................................................8
PHẦN II: PHÂN MẢNH DỮ LIỆU............................................................................9
2.1 Phân mảnh ngang...................................................................................................9
2.2 Phân mảnh dọc.......................................................................................................9
2.3 Phân mảnh hỗn hợp..............................................................................................10
PHẦN III: TRUY VẤN PHÂN MẢNH VÀ TRUY VẤN TÁI THIẾT..................11
3.1. Truy vấn phân mảnh...........................................................................................11
3.1.1 Truy vấn phân mảnh ngang...........................................................................11
3.1.2 Truy vấn phân mảnh dọc...............................................................................13
3.1.3 Truy vấn phân mảnh hỗn hợp.......................................................................14
3.2 Truy vấn tái thiết..................................................................................................14
PHẦN IV: TỐI ƯU TRUY VẤN BẰNG THUẬT TOÁN INGRES.......................17
4.1 Cho biết tên chi nhánh có tên kho = “Kho A”.....................................................17
4.2 Cho biết tên Miền có Mã miền= “mn” và có Mã kho= “k1”.............................17
PHẦN V: XÂY DỰNG CÂY ĐẠI SỐ QUAN HỆ VÀ RÚT GỌN CÂU TRUY
VẤN..............................................................................................................................19
5.1 Cho biết tên nhân viên có giới tính nam và có mã vật tư là MUT.......................21
5.2 Đưa ra tên nhân viên có mã chi nhánh là CN1 và có mã miền là mb.................23



PHÂN CHIA NHIỆM VỤ
Tên thành viên
Đồng Thanh Tuấn

Hoàng Trần Nguyên
Đỗ Việt Hưng

Nhiệm vụ
TRUY VẤN PHÂN MẢNH, TRUY VẤN TÁI THIẾT,
THUẬT TOÁN INGRES
PHÂN MẢNH DỮ LIỆU, XÂY DỰNG CÂY ĐẠI SỐ
QUAN HỆ
THIẾT KẾ CÁC HỆ CSDL PHÂN TÁN, RÚT GỌN
CÂU TRUY VẤN

1


PHẦN I: THIẾT KẾ CÁC HỆ CSDL PHÂN TÁN
1.1 Mô hình cơ sở dữ liệu
1.1.1 NhaCungCap
Field Name

Type

MaNhaCungCap

int

TenNhaCungCap

nvarchar(255)

Constraint

Primary key

1.1.2 NhanVien
Field Name

Type

MaNhanVien

int

TenNhanVien

nvarchar(255)

ChucVu

nvarchar(50)

Constraint
Primary key

1.1.3 KhoVatTu
Field Name

Type

Constraint

MaPhieuNhap


int

Primary Key

MaVatTu

int

Foreign key

SoLuongNhap

int

NgayNhap

date

1.1.4 PhieuNhapKho
Field Name

Type

Constraint

MaPhieuNhapKho

int


Primary Key

MaPhieuNhap

int

Foreign key

MaNhaCungCap

int

Foreign key

2


1.1.5 PhieuXuat
Field Name

Type

MaPhieuXuat

int

MaVatTu

int


SoLuongXuat

int

NgayXuat

date

Constraint
Primary Key

1.1.6 DanhMucVatTu
Field Name

Type

MaVatTu

int

TenVatTu

nvarchar(255)

DonViTinh

nvarchar(50)

Constraint
Primary Key


3


1.2 Mơ hình cơ sở dữ liệu tập trung

1.3 Thiết lập cơ sở dữ liệu
1.3.1 Tạo CSDL QLVT
USE [master]
GO
CREATE DATABASE [QLVT]

1.3.2 Tạo bảng KhoVatTu
CREATE TABLE KhoVatTu (
MaPhieuNhap INT PRIMARY KEY,
MaVatTu INT,
4


SoLuongNhap INT,
NgayNhap DATE,
FOREIGN KEY (MaVatTu) REFERENCES
DanhMucVatTu(MaVatTu)
);
1.3.3 Tạo bảng NhanVien
CREATE TABLE NhanVien (
MaNhanVien INT PRIMARY KEY,
TenNhanVien NVARCHAR(255) NOT NULL,
ChucVu NVARCHAR(50) NOT NULL
);


INSERT INTO NhanVien VALUES
(1, N'Nguyễn Văn A', N'Qua
0n lý'),
(2, N'Trầ5
n Thị B', N'Nhần viễn kho'),
(3, N'Đinh Văn C', N'Nhần viễn bán hàng');
1.3.4 Tạo bảng DanhMucVatTu
CREATE TABLE DanhMucVatTu (
MaVatTu INT PRIMARY KEY,
TenVatTu NVARCHAR(255) NOT NULL,
DonViTinh NVARCHAR(50) NOT NULL
);

5


INSERT INTO DanhMucVatTu VALUES
(1, N'Bàn cha
0i', N'Cái'),
(2, N'Dầ5
u ăn', N'Chai'),
(3, N'Bút bi', N'Cầy');
1.3.5 Tạo bảng NhaCungCap
CREATE TABLE NhaCungCap (
MaNhaCungCap INT PRIMARY KEY,
TenNhaCungCap NVARCHAR(255) NOT NULL
);

INSERT INTO NhaCungCap VALUES

(1, N'Công ty A'),
(2, N'Công ty B'),
(3, N'Công ty C');
1.3.6 Tạo bảng PhieuNhapKho
CREATE TABLE PhieuNhapKho (
MaPhieuNhapKho INT PRIMARY KEY,
MaPhieuNhap INT,
MaNhaCungCap INT,
FOREIGN KEY (MaPhieuNhap) REFERENCES
KhoVatTu(MaPhieuNhap),
FOREIGN KEY (MaNhaCungCap) REFERENCES
NhaCungCap(MaNhaCungCap)
);
6


INSERT INTO PhieuNhapKho VALUES
(1, 1, 1),
(2, 2, 2),
(3, 3, 3);

1.3.7 Tạo bảng PhieuXuat
CREATE TABLE PhieuXuat (
MaPhieuXuat INT PRIMARY KEY,
MaVatTu INT,
SoLuongXuat INT,
NgayXuat DATE,
FOREIGN KEY (MaVatTu) REFERENCES
DanhMucVatTu(MaVatTu)
);


INSERT INTO PhieuXuat VALUES
(1, 1, 30, '2024-01-15'),
(2, 2, 20, '2024-01-16'),
(3, 3, 50, '2024-01-17');

7


1.4 Cơ sở dữ liệu
1.4.1 DanhMucVatTu

1.4.2 NhaCungCap

1.4.3 NhanVien

1.4.4 KhoVatTu

8


1.4.5 PhieuXuat

1.4.6 PhieuNhapKho

9


PHẦN II: PHÂN MẢNH DỮ LIỆU
2.1 Phân mảnh ngang

- Phân mảnh ngang quan hệ PhieuXuat được phân mảnh 3 mảnh theo SoLuongXuat:
PhieuXuat 1=σ SoLuongXuat=30 (PhieuXuat )
PhieuXuat 2=σ SoLuongXuat=20 (PhieuXuat )
PhieuXuat 3=σ SoLuongXuat=50 ¿)
- Phân mảnh ngang quan hệ DanhMucVatTu được phân mảnh 3 mảnh theo DonViTinh:
DanhMucVatTuA =σ DonViTinh=Cái (DanhMucVatTu)
DanhMucVatTuB =σ DonViTinh=Chai (DanhMucVatTu)
DanhMucVatTuC =σ DonViTinh=Cây ( DanhMucVatTu)

- Phân mảnh ngang quan hệ NhanVien được phân mảnh 3 mảnh theo ChucVu:
NhanVien1 = σ ChucVu=Quản lý (NhanVien)
NhanVien2 = σ ChucVu= Nhân viên kho (NhanVien)
NhanVien3 = σ ChucVu=Nhân viên bán hàng (NhanVien)
2.2 Phân mảnh dọc
- Quan hệ NhanVien được phân thành 2 mảnh dọc
NhanVien1(MANHANVIEN, TENNHANVIEN)
NV1 = π MANV ,TENNHANVIEN ( NhanVien)
NhanVien2 (MANHANVIEN, CHUCVU).
NV2 = π MANV ,CHUCVU (NhanVien)

10


2.3 Phân mảnh hỗn hợp
- Quan hệ PhieuXuat phân mảnh hỗn hợp thành 3 mảnh:
PhieuXuatHH1 ( MaPhieuXuat , MaVatTu)
PX1 = π MaPhieuXuat , MaVatTu (PhieuXuat )
PhieuXuatHH2 ( MaPhieuXuat , SoLuongXuat )
PX2 = π MaPhieuXuat , SoLuongXuat ( PhieuXuat)
PhieuXuatHH3 ( MaPhieuXuat , NgayXuat )

PX3 = π MaPhieuXuat , NgayXuat (PhieuXuat )

11


PHẦN III: TRUY VẤN PHÂN MẢNH VÀ TRUY VẤN TÁI THIẾT
3.1. Truy vấn phân mảnh
3.1.1 Truy vấn phân mảnh ngang
Truy vấn trên bảng PhieuXuat
Phân mảnh PhieuXuat1
SELECT

*

into PhieuXuat1

FROM

PhieuXuat

WHERE

SoLuongXuat = 30

Phân mảnh PhieuXuat2
SELECT

*

into PhieuXuat2


FROM

PhieuXuat

WHERE

SoLuongXuat = 20

Phân mảnh PhieuXuat3
SELECT

*

into PhieuXuat3

FROM

PhieuXuat

WHERE

SoLuongXuat = 50

Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
PhieuXuat1⊆ PhieuXuat, PhieuXuat2⊆ PhieuXuat, PhieuXuat3⊆ PhieuXuat
PhieuXuat1∩ PhieuXuat2 =∅ , PhieuXuat1∩ PhieuXuat3
PhieuXuat2 ∩ PhieuXuat3 =∅
12



PhieuXuat = PhieuXuat1 ∪ PhieuXuat2 ∪ PhieuXuat3

Truy vấn trên bảng DanhMucVatTu
Phân mảnh DanhMucVatTuA:
SELECT

*

into DanhMucVatTuA

FROM

DanhMucVatTu

WHERE

DonViTinh = 'Cái'

Phân mảnh DanhMucVatTuB:
SELECT

*

into DanhMucVatTuB

FROM

DanhMucVatTu


WHERE

DonViTinh = 'Chai'

Phân mảnh DanhMucVatTuC:
SELECT

*

into DanhMucVatTuC

FROM

DanhMucVatTu

WHERE

DonViTinh = 'Cây'

Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
DanhMucVatTuA ⊆ DanhMucVatTu, DanhMucVatTuAB⊆ DanhMucVatTu,
DanhMucVatTuC⊆ DanhMucVatTu
DanhMucVatTuA ∩ DanhMucVatTuB =∅, DanhMucVatTuA ∩
DanhMucVatTuC =∅
DanhMucVatTuB ∩ DanhMucVatTuC =∅
13


DanhMucVatTu = DanhMucVatTuA ∪ DanhMucVatTuB ∪ DanhMucVatTuC ∪
DanhMucVatTuD

Truy vấn trên bảng NhanVien
Phân mảnh NhanVien1:
SELECT

*

into NhanVien1

FROM

NhanVien

WHERE

ChucVu = 'Quản lý'

Phân mảnh NhanVien2:
SELECT

*

into NhanVien2

FROM

NhanVien

WHERE

ChucVu = ‘Nhân viên kho’


Phân mảnh NhanVien3:
SELECT

*

into NhanVien3

FROM

NhanVien

WHERE

ChucVu = ‘Nhân viên bán hàng’

Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
NhanVien1⊆ NhanVien, NhanVien2⊆ NhanVien, NhanVien3⊆ NhanVien
NhanVien1∩ NhanVien2 =∅ , NhanVien1∩ NhanVien3=∅ , NhanVien2∩
NhanVien3=∅
NhanVien = NhanVien1 ∪ NhanVien2 ∪ NhanVien3
14


3.1.2 Truy vấn phân mảnh dọc
Truy vấn trên bảng NhanVien
Phân mảnh NhanVienD1:
SELECT

MaNhanVien, TenNhanVien into NhanVienD1


FROM

NhanVien

Phân mảnh NhanVienD2:
SELECT

MaNhanVien, ChucVu into NhanVienD2

FROM

NhanVien

Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
NhanVienD1 ⊆ NhanVien, NhanVienD2 ⊆ NhanVien
NhanVienD1 ∩ NhanVienD2 = ∅
NhanVien = NhanVienD1 ⋈ NhanVienD2

15


3.1.3 Truy vấn phân mảnh hỗn hợp
Phân mảnh PhieuXuatHH1:
SELECT

MaPhieuXuat, MaVatTu into PhieuXuatHH1

FROM


PhieuXuat

Phân mảnh PhieuXuatHH2:
SELECT

MaLop, SoLuongXuat into PhieuXuatHH2

FROM

PhieuXuat

Phân mảnh PhieuXuatHH3:
SELECT

MaLop, NgayXuat into PhieuXuatHH3

FROM

PhieuXuat

Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
PhieuXuat1 ⊆ PhieuXuat, PhieuXuat2⊆ PhieuXuat, PhieuXuat3⊆ PhieuXuat
PhieuXuat = PhieuXuat1 ⋈ PhieuXuat2⋈ PhieuXuat3
PhieuXuat1 ∩ PhieuXuat2=∅ , PhieuXuat1 ∩ PhieuXuat3=∅
PhieuXuat2∩ PhieuXuat3=∅
3.2 Truy vấn tái thiếtn tái thiếtt

/* Lấy thông tin về số lượng tồn kho của từng vật tư: */
SELECT
16




×