MÔ HÌnh quan hệ nguyên nhân ra đỜi của mô HÌnh quan hệ



tải về 1.86 Mb.
trang5/17
Chuyển đổi dữ liệu17.08.2016
Kích1.86 Mb.
1   2   3   4   5   6   7   8   9   ...   17

Sv(MASV,HOTEN,NU,NGAYSINH,MALOP,TINH,HOCBONG)

Tân từ: Mỗi sinh viên có mỗi MASV duy nhất. Mỗi MASV xác định tất cả các thuộc tính còn lại của sinh viên đó.



Lop(MALOP,TENLOP,SISO,MAKHOA)

Tân từ: Mỗi lớp có một mã lớp duy nhất, mỗi lớp chỉ thuộc về một khoa nào đó.



Kh(MAKHOA,TENKHOA,SOCBGD)

Tân từ: Mỗi khoa có mỗi MAKHOA duy nhất. Mỗi MAKHOA xác định tất cả các thuộc tính còn lại của khoa đó.



Mh(MAMH,TENMH,SOTIET)

Tân từ: Môi Môn học có một MAMH duy nhất. Mỗi MAMH xác định tất cả các thuộc tính còn lại của môn học đó.



Kq(MASV,MAMH,DIEMTHI)

Tân từ: Mỗi sinh viên cùng với một môn học xác dịnh duy nhất một điểm thi

YÊU CẦU:

  1. Tìm khóa cho mỗi lược đồ quan hệ trên.

  2. Hãy thực hiện các câu hỏi sau bằng ngôn ngữ đại số quan hệ

    1. Lập danh sách sinh viên gồm MASV, HOTEN, HOCBONG

    2. Lập danh sách sinh viên nữ khoa ‘CNTT’,danh sách cần MASV, HOTEN, HOCBONG

    3. Lập bảng điểm cho tất cả sinh viên khoa ‘CNTT’, bảng điểm gồm các cột MASV, HOTEN, TENMH, DIEMTHI

    4. Lập phiếu điểm cho sinh viên có MASV=”99001”

    5. Lập danh sách sinh viên gồm MASV,HOTEN,TENLOP, TENKHOA

    6. Lập bảng điểm môn học có mã môn học là CSDL cho tất cả sinh viên có mã lớp là “CĐTH2B”

    7. Lập danh sách sinh viên của lớp có mã lớp là “CĐTH2B” và có điểm thi môn học lớn hơn hay bằng 8.

      1. Mô hình thực thể kết hợp

Dựa vào các phân tích sơ bộ dưới đây, hãy lập mô hình thực thể kết hợp cho mỗi bài toán quản lý sau:

        1. QUẢN LÝ LAO ĐỘNG

Để quản lý việc phân công các nhân viên tham gia vào xây dựng các công trình. Công ty xây dựng ABC tổ chức quản lý như sau:

Cùng lúc công ty có thể tham gia xây dựng nhiều công trình, mỗi công trình có một mã số công trình duy nhất (MACT), mỗi mã số công trình xác định các thông tin như: tên gọi công trình (TENCT), địa điểm(ĐIAĐIEM), ngày công trình được cấp giấy phép xây dựng (NGAYCAPGP), ngày khởi công (NGAYKC), ngày hoàn thành (NGAYHT).

Mỗi nhân viên của công ty ABC có một mã số nhân viên(MANV) duy nhất, một mã số nhân viên xác định các thông tin như: Họ tên (HOTEN), ngày sinh (NGAYSINH), phái (PHAI), địa chỉ (ĐIACHI). Mỗi nhân viên phải chịu sự quản lý hành chánh bởi một phòng ban. Tất nhiên một phòng ban quản lý hành chánh nhiều nhân viên. Công ty có nhiều phòng ban (Phòng kế toán, phòng kinh doanh, phòng kỹ thuật, phòng tổ chức, phòng chuyên môn, Phòng phục vụ,…). Mỗi phòng ban có một mã số phòng ban(MAPB) duy nhất, mã phòng ban xác định tên phòng ban (TENPB).

Công ty phân công các nhân viên tham gia vào các công trình, mỗi công trình có thể được phân cho nhiều nhân viên và mỗi nhân viên cùng lúc cũng có thể tham gia vào nhiều công trình. Với mỗi công trình một nhân viên có một số lượng ngày công (SLNGAYCONG) đã tham gia vào công trình đó.



        1. QUẢN LÝ THƯ VIỆN

Một thư viện tổ chức việc cho mượn sách như sau:

Mỗi quyển sách được đánh một mã sách (MASH) dùng để phân biệt với các quyển sách khác (giả sử nếu một tác phẩm có nhiều bản giống nhau hoặc có nhiều tập thì cũng xem là có mã sách khác nhau), mỗi mã sách xác định các thông tin khác như : tên sách (TENSACH), tên tác giả (TACGIA), nhà xuất bản (NHAXB), năm xuất bản (NAMXB).

Mỗi đọc giả được thư viên cấp cho một thẻ thư viện, trong đó có ghi rõ mã đọc giả (MAĐG), cùng với các thông tin khác như : họ tên (HOTEN), ngày sinh (NGAYSINH), địa chỉ (ĐIACHI), nghề nghiệp(NGHENGHIEP).

Cứ mỗi lượt mượn sách, đọc giả phải ghi các quyển sách cần mượn vào một phiếu mượn, mỗi phiếu mượn có một số phiếu mượn (SOPM) duy nhất, mỗi phiếu mượn xác định các thông tin như: ngày mượn (NGAYMUON), đọc giả mượn, các quyển sách mượn và ngày trả (NGAYTRA). Các các quyển sách trong cùng một phiếu mượn không nhất thiết phải trả trong trong cùng một ngày.



        1. QUẢN LÝ BÁN HÀNG

Mỗi khách hàng có một mã khách hàng (MAKH) duy nhất, mỗi MAKH xác định được các thông tin về khách hàng như : họ tên khách hàng (HOTEN), địa chỉ (ĐIACHI), số điện thoại (ĐIENTHOAI). Các mặt hàng được phân loại theo từng nhóm hàng, mỗi nhóm hàng có một mã nhóm (MANHOM) duy nhất, mỗi mã nhóm hàng xác định tên nhóm hàng (TENNHOM), tất nhiên một nhóm hàng có thể có nhiều mặt hàng. Mỗi mặt hàng được đánh một mã số (MAHANG) duy nhất, mỗi mã số này xác định các thông tin về mặt hàng đó như : tên hàng (TENHANG), đơn giá bán (ĐONGIA), đơn vị tính (ĐVT). Mỗi hóa đơn bán hàng có một số hóa đơn (SOHĐ) duy nhất, mỗi hóa đơn xác định được khách hàng và ngày lập hóa đơn (NGAYLAPHĐ), ngày bán hàng (NGAYBAN). Với mỗi mặt hàng trong một hóa đơn cho biết số lượng bán (SLBAN) của mặt hàng đó.

        1. QUẢN LÝ LỊCH DẠY - HỌC

Để quản lý lịch dạy của các giáo viên và lịch học của các lớp, một trường tổ chức như sau:

Mỗi giáo viên có một mã số giáo viên (MAGV) duy nhất, mỗi MAGV xác định các thông tin như: họ và tên giáo viên (HOTEN), số điện thoại (DTGV). Mỗi giáo viên có thể dạy nhiều môn cho nhiều khoa nhưng chỉ thuộc sự quản lý hành chánh của một khoa nào đó.

Mỗi môn học có một mã số môn học (MAMH) duy nhất, mỗi môn học xác định tên môn học (TENMH). Ưng với mỗi lớp thì mỗi môn học chỉ được phân cho một giáo viên.

Mỗi phòng học có một số phòng học (SOPHONG) duy nhất, mỗi phòng có một chức năng (CHUCNANG); chẳng hạn như phòng lý thuyết, phòng thực hành máy tính, phòng nghe nhìn, xưởng thực tập cơ khí,…

Mỗi khoa có một mã khoa (MAKHOA) duy nhất, mỗi khoa xác định các thông tin như: tên khoa (TENKHOA), điện thoại khoa(DTKHOA).

Mỗi lớp có một mã lớp (MALOP) duy nhất, mỗi lớp có một tên lớp (TENLOP), sĩ số lớp (SISO). Mỗi lớp có thể học nhiều môn của nhiều khoa nhưng chỉ thuộc sự quản lý hành chính của một khoa nào đó.

Hàng tuần, mỗi giáo viên phải lập lịch báo giảng cho biết giáo viên đó sẽ dạy những lớp nào, ngày nào (NGAYDAY), môn gì?, tại phòng nào, từ tiết nào (TUTIET) đến tiết nào (DENTIET),tựa đề bài dạy (BAIDAY), ghi chú (GHICHU) về các tiết dạy này, đây là giờ dạy lý thuyết (LYTHUYET) hay thực hành - giả sử nếu LYTHUYET=1 thì đó là giờ dạy thực hành và nếu LYTHUYET=2 thì đó là giờ lý thuyết, một ngày có 16 tiết, sáng từ tiết 1 đến tiết 6, chiều từ tiết 7 đến tiết 12, tối từ tiết 13 đến 16.
----oOo----



  1. .

NGÔN NGỮ TRUY VẤN SQL

    1. CÁCH TẠO QUAN HỆ BẰNG ACCESS

Microsoft Access là một hệ quản trị cơ sở dữ liệu quan hệ. Ta có thể dùng HQTCSDL Access hay gọi tắt là Access để thực hành mô hình quan hệ.

Sau đây ta sẽ tạo lược đồ csdl quản lý sinh viên như ở trang 6 của tài liệu.



  • Khởi động Access: Start-> Programs-> Microsoft Access.

  • Tạo lược đồ csdl rỗng có tên là qLSV: Blank Database->OK->qLSV->Create

  • Tạo quan hệ bằng cách:Tables->New->Design View->OK



    • Data type là Text (kiểu chuỗi), Yes/No (Kiểu luận lý), Date/Time (kiểu ngày tháng), Currency (kiểu số)

    • Field size là kích thước kiểu dữ liệu

  • Khi tạo xong các thuộc tính và khóa chính ta lưu lại và đặt tên cho quan hệ Sv bằng cách : File->Close->Yes->Sv->OK.

  • Tạo các quan hệ còn lại theo bước 3 và 4

  • Nhập dữ liệu cho quan hệ Sv bằng cách: Tables->Sv->Open

    1. CÂU LỆNH TRUY VẤN

      1. BIỂU THỨC (EXPRESSION)

Các thành phần tạo nên biểu thức bao gồm:

Literal value

Là các dữ liệu có giá trị đúng như văn bản thể hiện.

Dữ liệu chuỗi có dạng: “New York”

Dữ liệu số có dạng: 1056; 1056.25

Dữ liệu ngày có dạng: #1-Jan-94#; #12/2/2001#

Constant

Là một tên đại diện cho một giá trị không thay đổi như :



Const

Giá trị đại diện

True

-1

False

0

Null

0

Toán tử số học:

Toán tử

Ý nghĩa

Ví dụ

Kết quả

+

Cộng số học

Cộng ngày



5+2

#28/08/01# + 4



7

#01/09/01#



-

Trừ số học

Ngày trừ số

Ngày trừ ngày


5-2

#02/09/01# - 3

#29/9/01#-#24/3/84#


3

#30/08/01#

16.597


*

Phép nhân

5*2

10

/

Phép chia

5/2

2.5

\

Chia nguyên

5\2

2

^

Luỹ thừa

5^2

25

Mod

Lấy số dư của phép chia

5 Mod 2

1

Toán tử luận lý

Toán tử

Ý nghĩa

Ví dụ

Kết Quả

Not

Luật phủ định

Not True

Not False

False

True


And

Luật và

True And True

True And False

False And True

False And False



True

False


False

False


Or

Luật hay

True Or True

True Or False

False Or True

False Or False



True

True


True

False


Toán tử so sánh

Toán tử

Ý nghĩa

Ví dụ

Kết quả

<

Nhỏ hơn

2 < 5

True

<=

Nhỏ hơn hay bằng

2 <= 5

True

>

Lớn hơn

2 > 5

False

>=

Lớn hơn hay bằng

2 >= 5

False

=

Bằng nhau

2 = 5

False

<>

Khác nhau

2 <> 5

True

Các toán tử khác

Toán tử

Ý nghĩa

Ví dụ

Kết quả

Between ... And ...

Giữa hai giá trị. Dùng trong query

2 Between 1 And 5

True

Like

Giống như

“Hung” Like “Hu*”

True

&

Nối chuỗi

“Nguyễn Văn” & “Hùng”

“Nguyễn Văn Hùng”

Với toán tử like ta có thể dùng các ký tự đại diện sau:

Wildcard characters

Ký tự

Ý nghĩa

Ví dụ

?

Đại diện cho một ký tự bất kỳ

A? -> AN, AM, AC

*

Đại diện cho một chuỗi ký tự bất kỳ.

A* -> AI, ANH,

#

Đại diện cho một ký số

A## ->A13, A24, A35

[]

Đại diện cho các ký tự nằm trong

A[IN] -> AI, AN

-

Đại diện cho các ký tự nằm trong khoảng

A[M-O] -> AM, AN, AO

!

Đại diện cho ký tự không phải ký tự nằm sau !

A[!C] -> AA, AB, AD, AE, ...

Hàm:

Hàm có dạng tenHam(danhSachDoiSo). Hàm luôn luôn đại diện cho một trị gọi là trị trả về.



IIf(điều kiện, trị 1, trị 2)

Kiểm tra điều kiện, nếu điều kiện đúng trả trị 1 ngược lại trả trị 2



Ví dụ: IIf(namNu = 1, “Nam”,”Nu”)

Date()

Trả về ngày tháng năm của hệ thống.



Now(biểu thức ngày)

Trả về giờ, phút, giây, ngày tháng năm của hệ thống.



Time(biểu thức ngày)

Trả về giờ phút giây của hệ thống.



Day(biểu thức ngày)

Trả về một số từ 1 đến 31 là ngày của Date.



Month(biểu thức ngày)

Trả về một số từ 1 đến 12 là tháng của Date



Year(biểu thức ngày)

Trả về năm của ngày



Len( biểu thức chuỗi)

Trả về chiều dài của chuỗi.



Chr(mã Ascii)

Trả về ký tự có mã ASCII tương ứng.



InStr(Start, s1, s2)

Trả về vị trí chuỗi s2 nằm trong s1



LCase(s), UCase(s)

Đổi chuỗi s thành chuỗi gồm các ký tự thường (hoa)



Left(s, n), Right(s, n)

Trả về chuỗi gồm n ký tự bên trái (phải) của chuỗi s



Mid(s, i, n)

Trả về chuỗi con của chuỗi s, gồm n ký tự kể từ ký tự thứ i



Nz(v1, v2)

Nếu v1 = Null thì Trả về v2, ngược lại trả về v1

Các hàm tính toán trên nhóm:

SUM (thuộc tính )

Tính tổng giá trị của thuộc tính của các bộ trong bảng



MAX( thuộc tính)

tính giá trị lớn nhất của thuộc tính của các bộ trong bảng



MIN(thuộc tính)

tính giá trị nhỏ nhất của thuộc tính của các bộ trong bảng


AVG(thuộc tính>)

tính giá trị trung bình của thuộc tính của các bộ trong bảng



COUNT(thuộc tính)

chỉ đếm những bộ mà giá trị của thuộc tính là khác NULL



Biểu thức

Biểu thức là tổ hợp các toán tử, literal value, hằng, tên hàm, tên thuộc tính.

Biểu thức được lượng gía thành một gía trị.


      1. CÂU LỆNH SQL

SQL là ngôn ngữ truy vấn dựa trên đại số quan hệ. Câu lệnh của SQL dùng để rút trích dữ liệu của một một hay nhiều quan hệ. Kết quả của một câu lệnh SQL (truy vấn) là một quan hệ. Để đơn giản trong cách trình bày, ta xem quan hệ mà câu truy vấn sử dụng để tạo ra quan hệ khác gọi là quan hệ nguồn, quan hệ kết quả của truy vấn là quan hệ đích.

        1. Truy vấn định nghĩa dữ liệu (data definition query)

Tạo lược đồ quan hệ rSV:

Tạo lược đồ quan hệ rKQ:

  • Create Table rKQ (MASV text (10),MAMH Text (10), DIEMTHI Double,CONSTRAINT khoaChinh PRIMARY KEY (MASV,MAMH) )

Chú ý: Hai cách tạo trên cho ta thấy hai cách tạo khóa: khóa chỉ gồm một thuộc tính và khóa có nhiều thuộc tính

Thêm cột DTHOAI có kiểu dữ liệu text 20 ký tự vào lược đồ quan hệ rSV:

  • Alter Table rSV Add Column DTHOAI Text (20)

Sửa kiểu kiểu dữ liệu của một cột:

Xóa cột của một lược đồ đã có:

Xóa ràng buộc khóa chính:

Thêm ràng buộc khóa chính:

  • Alter Table rSv Add Constraint khoaChinh Primary Key (MASV)

Thêm ràng buộc miền giá trị:

  • ALTER TABLE doc_exd WITH NOCHECK ADD CONSTRAINT exd_check CHECK (column_a > 1)

        1. Truy vấn chọn (select query)

Khi có nhu cầu thể hiện các dòng dữ liệu của một quan hệ hay của nhiều quan hệ dưới dạng một quan hệ có số cột và số dòng theo ý muốn như bảng điểm của sinh viên, danh sách sinh viên thì ta sử dụng truy vấn chọn.
Để truy vấn chọn ta sử dụng câu lệnh SQL sau:


Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][,...]]

From table1 [Inner Join table2 On table1.field1  table2.field2] ...

[Where dieuKien]

[Order By field1[Asc|Desc][,field2[Asc|Desc]][,...]]];


Distinct: loại bỏ các bộ trùng trong quan hệ đích

Top n[%]: Chọn n hay n% mẫu tin đầu tiên.

table: Tên table hay query chứa dữ liệu.

field: Tên field hay một biểu thức.

Alias: Trường hợp field là một biểu thức thì là một tên mới của biểu thức.

Inner Join: mỗi mẫu tin của table1 nối với bất kỳ mẫu tin nào của table2 có dữ liệu của field1 thỏa mãn điều kiện so sánh với dữ liệu của field2 tạo thành mẫu tin của query.

điều kiện: Biểu thức mà dữ liệu mẫu tin phải thỏa mãn

Chú ý:

Khi nêu rõ thuộc tính đó thuộc về quan hệ nào ta viết theo cú pháp tênQuanHệ.tênThuộcTính.


Ví dụ: Lập danh sách sinh viên gồm MASV,HOTEN,HOCBONG

SELECT MASV,HOTEN,HOCBONG

FROM Sv;
Ví dụ: Lập danh sách sinh viên nữ , có học bổng thuộc có mã lớp là “CĐTH2B”.

SELECT MASV,HOTEN,HOCBONG

FROM Sv

WHERE NU And MALOP='CĐTH2B' And HOCBONG>0;


Ví dụ: Lập danh sách sinh viên gồm MASV,HOTEN,HOCBONG trong đó học bổng được sắp giảm dần

SELECT MASV,HOTEN,HOCBONGFROM SvORDER BY HOCBONG DESC;

Ví du : Lập danh sách sinh viên gồm MASV,HOTEN,TENLOP

SELECT MASV,HOTEN,TENLOP

FROM Sv Inner Join Lop On Sv.MALOP=Kh.LOP;

Ví dụ: Lập danh sách sinh viên có MASV,HOTEN,NU,NGAYSINH,DIEMTHI với điểm thi môn ‘CSDL’ >= 8

SELECT Kq.MASV,HOTEN,NU,NGAYSINH,DIEMTHI

FROM Kq Inner Sv On Kq.MASV = Sv.MaSV

WHERE MAMH='CSDL' AND DIEMTHI>=8;

Ví dụ: Lập danh sách sinh viên có ho là “NGUYEN”

SELECT *FROM Sv

WHERE HOTEN Like “NGUYEN*”;

        1. Truy vấn nhóm dữ liệu (Select query có group by)

Khi có nhu cầu chia các bộ theo từng nhóm rồi tính toán trên từng nhóm này như tính điểm trung bình của tất cả các môn học của từng sinh viên, hay là cần tính số lượng sinh viên của mỗi lớp , hay là cần biết tổng số môn mà một sinh viên đã đăng ký học thì ta sử dụng truy vấn theo nhóm.
Để truy vấn cộng nhóm ta sử dụng câu lệnh SQL sau:
1   2   3   4   5   6   7   8   9   ...   17


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2016
được sử dụng cho việc quản lý

    Quê hương