You are on page 1of 15

BỘ MÔN HỆ THỐNG THÔNG TIN – KHOA CÔNG NGHỆ THÔNG TIN

ĐẠI HỌC KHOA HỌC TỰ NHIÊN THÀNH PHỐ HỒ CHÍ MINH, ĐẠI HỌC QUỐC GIA TP HCM

MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

Sinh viên thực hiện:


20120527 Trần Ngọc Long
18120564 Lâm Hồng Thành
20120044 Ngô Thị Ngọc Bội
20120542 Trịnh Thị Tuyết Nhung
GV phụ trách: CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ Nguyễn Trần Minh Thư
ĐỒ ÁN/BÀI TẬP MÔN HỌC - CƠ SỞ DỮ LIỆU NÂNG CAO
HỌC KỲ I – NĂM HỌC 2022-2023
CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 0
BẢNG THÔNG TIN CHI TIẾT NHÓM

Mã nhóm: 20

Tên
nhóm: Nhóm 20

Số lượng: 4

Điện
MSSV Họ tên Email Hình ảnh
thoại
20120527 Trần Ngọc Long 20120527@student.hcmus.edu.vn
18120564 Lâm Hồng Thành 18120564@student.hcmus.edu.vn
20120044 Ngô Thị Ngọc Bội 20120044@student.hcmus.edu.vn
20120542 Trịnh Thị Tuyết Nhung 20120542@student.hcmus.edu.vn

Bảng phân công & đánh giá hoàn thành công việc
Mức độ hoàn Đánh giá
Công việc thực hiện Người thực hiện
thành của nhóm
Tìm hiểu chuyên sâu thiết kế trong công cụ. Lâm Hồng Thành 100% 10/10
Viết mô tả cơ sở dữ liệu và phát sinh mô
hình dữ liệu quan hệ mức vật lý
Từ mô hình dữ liệu mức vật lý, vẽ lại bằng Ngô Thị Ngọc Bội 100% 10/10
công cụ PowerDesigner.
Mô hình hóa cơ sở dữ liệu thông qua mô Trịnh Thị Tuyết Nhung 100% 10/10
hình mức quan niệm và viết bài báo cáo.
Tìm hiểu cách kết nối và phát sinh dữ liệu Trần Ngọc Long 100% 10/10
và dựng video

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 1


YÊU CẦU ĐỒ ÁN- BÀI TẬP
Loại bài tập  Lý thuyết  Thực hành  Đồ án  Bài tập
Ngày bắt đầu 23/09/2022

Ngày kết thúc 30/09/2022

A. Yêu cầu của Đồ án/Bài tập


Yêu cầu: từ nền tảng của bài tập lý thuyết số (BTVN#01), sinh viên thực hiện tìm
hiểu chuyên sâu một công cụ thiết kế dữ liệu theo ký hiệu của Crow’s Foot. Mục
đích của kết quả nghiên cứu nhằm sử dụng được công cụ để thiết kế mô hình dữ
liệu, cụ thể:

• Mô hình hóa mô hình dữ liệu quan niệm (ERD, E-ERD) mức quan niệm.
• Chuyển mô hình quan niệm sang mức vật lý (physical).
• Kết nối công cụ & DBMS, và phát sinh dữ liệu sang DBMS (DBMS chọn
cho bài tập là MS SQL Server).

B. Bài làm

I. Tổng quan về PowerDesigner


1. Giới thiệu

PowerDesigner là một công cụ thiết kế dữ liệu:

• Thiết kế Conceptual Data model (CDM) bằng sơ đồ thực thể kết hợp
• Có thể phát sinh Physical Data Model (PDM) tương ứng trên một DBMS
được chọn.
• Có thể phát sinh ràng buột toàn vẹn tham chiếu (referential integrity
triggers) nếu chúng được hổ trợ bởi CSDL đích.
• Cho phép hiệu chỉnh và in các model.

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 2


2. Chức năng chính

- PowerDesigner được sử dụng với mục đích phát sinh dữ liệu tự động cho cơ sở
dữ liệu. Chương trình cho phép người dùng phát sinh code tự động với các
template có thể tùy chỉnh được như: SQL, Java, .NET,…

Giao diện phát sinh dữ liệu

- PowerDesigner cho phép doanh nghiệp hình dung, phân tích và thao tác siêu dữ
liệu để tạo ra kiến trúc thông tin hoạt động hiệu quả. Phần mềm hỗ trợ đắc lực
trong việc thiết kế mô hình quan hệ, mô hình CDM, PDM, ERD, ER, …

Giao diện mô hình ERD

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 3


- Ngoài ra PowerDesigner còn có chức năng kết nối với Data Source trên máy
tính. Chức năng này cho phép người dùng kết nối vào một cơ sở dữ liệu, cho
phép PowerDesigner đối chiếu dữ liệu, phát sinh thêm dữ liệu hay thực hiện một
số yêu cầu liên quan.

Giao diện kết nối dữ liệu

3. Sử dụng công cụ để giải quyết bài toán


Mô tả bài toán:

Tạo một cơ sở dữ liệu đơn giản: QUẢN LÝ NHÂN VIÊN

NHANVIEN(MANV, TENNV, PHAI, LUONG)

DEAN(MADA, TENDA, DIADIEM)

PHONGBAN(MAPB, TENPB)

THANNHAN(TENTN, NGSINH,DIACHI)

BUSINESS RULE:

Một nhân viên chỉ làm việc duy nhất cho một phòng ban và một phòng ban có ít nhất
một nhân viên.

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 4


Một phòng ban có thể chủ trì nhiều đề án và một đề án được chủ trì bởi duy nhất một
phòng ban.

Một nhân viên có thể tham gia nhiều đề án và một đề án có thể có nhiều nhân viên.

Một nhân viên có thể có nhiều thân nhân và một thân nhân chỉ thuộc về một nhân viên.

Chúng em sẽ sử dụng bài toán này để thực hành thiết kế cơ sở dữ liệu rồi sau đó kết
nối dữ liệu với DBMS.

Thông qua công cụ PowerDesigner, nhóm chúng em đã đưa ra những thiết kế như
sau.

a) Sơ đồ mức quan niệm

Bước 1: Vào File → New Model → Conceptual Diagram với Model name là QLNV

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 5


Bước 2: Khởi tạo các thực thể và thuộc tính

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 6


Bước 3: Thiết lập các mối quan hệ giữa các thực thể, ta được mô hình mức quan
niệm như sau:

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 7


b) Sơ đồ mức vật lý

Bước 1: Vào Tools chọn Generate Physical Data Model (hoặc Ctrl+Shilf+P)

Xuất hiện bảng như sau:

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 8


Bước 3: Chọn OK ta được sơ đồ mức vật lý như sau:

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 9


c) Cách kết nối PowerDesigner với MSSQL
Bước 1: Chọn Database → Generate Database.

Bước 2: Chọn đường dẫn, trong khung file name đặt tên cho file là: QLNV.sql

tick vào ô Script generation.

Bước 5: Chọn mục Preview, ta có thể lấy được script tạo database.

Script được tạo:


/*==============================================================*/
/* DBMS name: Microsoft SQL Server 2008 */
/* Created on: 9/29/2022 8:52:35 PM */
/*==============================================================*/

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 10


if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('DEAN') and o.name = 'FK_DEAN_CHUTRI_PHONGBAN')
alter table DEAN
drop constraint FK_DEAN_CHUTRI_PHONGBAN
go

if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('NHANVIEN') and o.name = 'FK_NHANVIEN_LAMVIEC_PHONGBAN')
alter table NHANVIEN
drop constraint FK_NHANVIEN_LAMVIEC_PHONGBAN
go

if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('THAMGIA') and o.name = 'FK_THAMGIA_THAMGIA_DEAN')
alter table THAMGIA
drop constraint FK_THAMGIA_THAMGIA_DEAN
go

if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('THAMGIA') and o.name = 'FK_THAMGIA_THAMGIA2_NHANVIEN')
alter table THAMGIA
drop constraint FK_THAMGIA_THAMGIA2_NHANVIEN
go

if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('THANNHAN') and o.name = 'FK_THANNHAN_CO_NHANVIEN')
alter table THANNHAN
drop constraint FK_THANNHAN_CO_NHANVIEN
go

if exists (select 1
from sysindexes
where id = object_id('DEAN')
and name = 'CHUTRI_FK'
and indid > 0
and indid < 255)
drop index DEAN.CHUTRI_FK
go

if exists (select 1
from sysobjects
where id = object_id('DEAN')
and type = 'U')
drop table DEAN
go

if exists (select 1
from sysindexes
where id = object_id('NHANVIEN')
and name = 'LAMVIEC_FK'

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 11


and indid > 0
and indid < 255)
drop index NHANVIEN.LAMVIEC_FK
go

if exists (select 1
from sysobjects
where id = object_id('NHANVIEN')
and type = 'U')
drop table NHANVIEN
go

if exists (select 1
from sysobjects
where id = object_id('PHONGBAN')
and type = 'U')
drop table PHONGBAN
go

if exists (select 1
from sysindexes
where id = object_id('THAMGIA')
and name = 'THAMGIA2_FK'
and indid > 0
and indid < 255)
drop index THAMGIA.THAMGIA2_FK
go

if exists (select 1
from sysindexes
where id = object_id('THAMGIA')
and name = 'THAMGIA_FK'
and indid > 0
and indid < 255)
drop index THAMGIA.THAMGIA_FK
go

if exists (select 1
from sysobjects
where id = object_id('THAMGIA')
and type = 'U')
drop table THAMGIA
go

if exists (select 1
from sysobjects
where id = object_id('THANNHAN')
and type = 'U')
drop table THANNHAN
go

/*==============================================================*/
/* Table: DEAN */
/*==============================================================*/
create table DEAN (
MADA varchar(10) not null,
MAPB varchar(10) not null,

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 12


TENDA varchar(30) null,
DIADIEM varchar(100) null,
constraint PK_DEAN primary key nonclustered (MADA)
)
go

/*==============================================================*/
/* Index: CHUTRI_FK */
/*==============================================================*/
create index CHUTRI_FK on DEAN (
MAPB ASC
)
go

/*==============================================================*/
/* Table: NHANVIEN */
/*==============================================================*/
create table NHANVIEN (
MANV varchar(10) not null,
MAPB varchar(10) not null,
TENNV varchar(30) null,
PHAI varchar(5) null,
LUONG money null,
constraint PK_NHANVIEN primary key nonclustered (MANV)
)
go

/*==============================================================*/
/* Index: LAMVIEC_FK */
/*==============================================================*/
create index LAMVIEC_FK on NHANVIEN (
MAPB ASC
)
go

/*==============================================================*/
/* Table: PHONGBAN */
/*==============================================================*/
create table PHONGBAN (
MAPB varchar(10) not null,
TENPB varchar(30) null,
constraint PK_PHONGBAN primary key nonclustered (MAPB)
)
go

/*==============================================================*/
/* Table: THAMGIA */
/*==============================================================*/
create table THAMGIA (
MADA varchar(10) not null,
MANV varchar(10) not null,
constraint PK_THAMGIA primary key (MADA, MANV)
)
go

/*==============================================================*/
/* Index: THAMGIA_FK */

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 13


/*==============================================================*/
create index THAMGIA_FK on THAMGIA (
MADA ASC
)
go

/*==============================================================*/
/* Index: THAMGIA2_FK */
/*==============================================================*/
create index THAMGIA2_FK on THAMGIA (
MANV ASC
)
go

/*==============================================================*/
/* Table: THANNHAN */
/*==============================================================*/
create table THANNHAN (
MANV varchar(10) not null,
TENTN varchar(30) null,
NGSINH datetime null,
DIACHI varchar(100) null,
constraint PK_THANNHAN primary key (MANV)
)
go

alter table DEAN


add constraint FK_DEAN_CHUTRI_PHONGBAN foreign key (MAPB)
references PHONGBAN (MAPB)
go

alter table NHANVIEN


add constraint FK_NHANVIEN_LAMVIEC_PHONGBAN foreign key (MAPB)
references PHONGBAN (MAPB)
go

alter table THAMGIA


add constraint FK_THAMGIA_THAMGIA_DEAN foreign key (MADA)
references DEAN (MADA)
go

alter table THAMGIA


add constraint FK_THAMGIA_THAMGIA2_NHANVIEN foreign key (MANV)
references NHANVIEN (MANV)
go

alter table THANNHAN


add constraint FK_THANNHAN_CO_NHANVIEN foreign key (MANV)
references NHANVIEN (MANV)
go

CƠ SỞ DỮ LIỆU NÂNG CAO – CÔ NGUYỄN TRẦN MINH THƯ 14

You might also like