chương 1. Trình bày lịch sử phát triển của MS SQL Server. Nêu tầm quan trọng của sql trong lập trình ứng dụng 3. Trình bày các kiểu dữ liệu trong SQL SERVER 11 Chƣơng II.
CÁC THÀNH PHẦN CỦA SQL SERVER 2. 1 Mô hình quan hệ Mô hình quan hệ được Ted Codd đưa ra đầu tiên vào năm 1970 và gây được sự chú ý ngay tức khắc vì tính đơn giản và các cơ sở toán học của nó. Mô hình quan hệ sử dụng khái niệm quan hệ toán học như khối xây dựng cơ sở và có cơ sở lý thuyết của nó trong lý thuyết tập hợp và logic vị từ bậc nhất. Ngày nay, hầu hết các tổ chức đã áp dụng CSDL quan hệ để quản lý dữ liệu trong đơn vị mình.
Mô hình cơ sở dữ liệu quan hệ là cách thức biểu diễn dữ liệu dưới dạng bảng hay còn gọi là quan hệ, mô hình được xây dựng dựa trên cơ sở lý thuyết đại số quan hệ. Cấu trúc dữ liệu: dữ liệu được tổ chức dưới dạng quan hệ hay còn gọi là bảng. Thao tác dữ liệu: sử dụng những phép toán mạnh (bằng ngôn ngữ SQL) Mô hình quan hệ biểu thị cơ sở dữ liệu như một tập các quan hệ. Trong mô hình quan hệ người ta đưa ra một số khái niệm sau.
Thuộc tính: là một tính chất riêng biệt mô tả một thông tin nào đó của một đối tượng trong CSDL. Chẳng hạn với bài toán quản lý sinh viên, đối tượng sinh viên cần phải chú ý đến các đặc trưng riêng như: Họ tên, Mã SV, Ngày sinh, Giới tính, Địa chỉ. Các đặc trưng này là các thuộc tính. - Mỗi một thuộc tính được đặc trưng bởi ba thành phần: + Tên thuộc tính: Trong cùng một đối tượng không có hai thuộc tính cùng tên.
+ Kiểu dữ liệu: Các thuộc tính phải thuộc vào một kiểu dữ liệu nhất định ( số , chuỗi, ngày tháng, logic, hình ảnh…). Kiểu dữ liệu ở đây là kiểu đơn. + Miền giá trị: Thông thường mỗi thuộc tính chỉ chọn lấy giá trị trong một tập con của kiểu dữ liệu và tập hợp con đó gọi là miền giá trị của thuộc tính đó. Ví dụ: Thuộc tính Ngày sinh thì có kiểu dữ liệu là Datetime Thường người ta dùng các chữ cái hoa A, B, C …để biểu diễn các thuộc tính hoặc A1, A2…An để biểu diễn một số lượng lớn các thuộc tính.
Quan hệ Lược đồ quan hệ (Relation Schema) Tập tất cả các thuộc tính cần quản lý của một đối tượng cùng với mối liên hệ giữa chúng được gọi là lược đồ quan hệ. Lược đồ quan hệ Q với tập thuộc tính { A1, A2…An} được viết là Q( A1, A2…An). Tập các thuộc tính của Q được ký hiệu là Q+ Ví dụ: Lược đồ quan hệ sinh viên với các thuộc tính như là: SinhViên (Họ tên, Mã SV, Ngày sinh, Giới tính, Địa chỉ) Nhiều lược đồ quan hệ cùng nằm trong một hệ thống quản lý được gọi là một lược đồ cơ sở dữ liệu. Ví dụ: lược đồ cơ sở dữ liệu để quản lý điểm thi của sinh viên có thể gồm các lược đồ quan hệ sau: SinhViên (Họ tên, Mã SV, Ngày sinh, Giới tính, Địa chỉ) 12 Điểm (Mã SV, Điểm thi).
Quan hệ (Relation): Sự thể hiện của lược đồ quan hệ Q ở một thời điểm nào đó được gọi là quan hệ. Một quan hệ là một bảng dữ liệu 2 chiều (cột và dòng), mô tả một thực thể. Mỗi cột tương ứng với một thuộc tính của thực thể. Mỗi dòng chứa các giá trị dữ liệu của một đối tượng cụ thể thuộc thực thể.
Rõ ràng là trên một lược đồ quan hệ có thể định nghĩa rất nhiều quan hệ. Thường ta dùng các ký hiệu như R, S, Q để chỉ các lược đồ quan hệ, còn quan hệ được định nghĩa trên nó tương ứng được ký hiệu là r, s q. Bộ Bộ là tập mỗi giá trị liên quan của tất cả các thuộc tính của một lược đồ quan hệ. Thường người ta dùng các chữ cái thương như t, p, .để biểu diễn các bộ.
Chẳng hạn để nói bộ t thuộc quan hệ r ta viết t r. Về trực quan thì mỗi quan hệ xem như một bảng, trong đó mỗi cột là một thông tin về một thuộc tính, mỗi dòng là thông tin về một bộ. Họ tên Mã SV Ngày sinh Giới tính Địa chỉ Lê Vân 4515202 12/09/84 Nữ Hà Nội Hoàng Tùng 4516802 21/03/84 Nam Bắc Ninh Trương Định 4620503 15/05/85 Nam Hà Nam Phạm An 4612203 16/04/85 Nam Nam Đinh Đỗ Cung 4521402 20/01/84 Nam Nghệ An Bảng1. Quan hệ SinhViên Bảng một chỉ ra một ví dụ của quan hệ SinhViên tương ứng với lược đồ SinhViên ở trên.
Mỗi bộ trong quan hệ biểu diễn một đối tượng sinh viên cụ thể. Như vậy một quan hệ r của R(A1, A2…An), ký hiệu là r(R) là một tập m_bộ r = {t1, t2…,tm} trong đó: Mỗi ti = <v1,…,vn>, vi dom(Ai) r(R) dom(A1)x…xdom(An). ta có Ai là các thuộc tính và miền giá trị của Ai là Di = dom (Ai) với i = 1.n Chú ý: - Các tập (D1, D2…,Dn) là tập các miền giá trị của R - n được gọi là bậc của quan hệ r - m được gọi là lực lượng của r - Quan hệ bậc 1 là quan hệ nhất nguyên, bậc 2 là quan hệ nhị nguyên, bậc n là quan hệ n nguyên. Ví dụ: Quan hệ EMPLOYEE trên tập các thuộc tính R={SSN, Name, BDate, Address, Salary} là một quan hệ 5 ngôi.
13 t1(001, „Đỗ Hoàng Minh‟, 1960, „Hà nội‟ , 425) = t1(R) là một bộ của quan hệ EMPLOYE 2.4 Tính chất của quan hệ - Giá trị đưa vào cột là đơn nhất - Các giá trị trong cùng một cột phải thuộc cùng một miền giá trị (cùng kiểu) - Thứ tự dòng cột tùy ý 2. Khóa Cho lược đồ quan hệ R, S R+. S được gọi là một siêu khóa (Superkey) của lược đồ quan hệ R nếu với hai bộ tuy ý trong quan hệ R thì giá trị của các thuộc tính trong S là khác nhau. Một lược đồ quan hệ có thể có nhiều siêu khóa.
Siêu khóa chứa ít thuộc tính nhất được gọi là khóa chỉ định, trong trường hợp lược đồ quan hệ có nhiều khóa chỉ định, thì khóa được chọn để cài đặt gọi là khóa chính (Primary key)( gọi tắt là khóa). Khóa chính là một (hoặc một tập) các thuộc tính đóng vai trò là nguồn của một phụ thuộc hàm mà đích lần lượt là các thuộc tính còn lại. Ví dụ: R={SSN, Name, BDate, Address, Salary} SSN Name, BDate, Address, Salary (Nguồn) (Đích) Ta thấy, từ SSN ta có thể suy ra toàn bộ các thuộc tính ứng. Vậy SSN được gọi là khóa chính.
Một số gợi ý khi chọn khóa: - Khóa không nên là tập hợp của quá nhiều thuộc tính. Trong trường hợp khóa có nhiều thuộc tính, có thể thêm một thuộc tính “nhân tạo” thay chúng làm khóa chính cho quan hệ. - Nếu khóa chính được cấu thành từ một số thuộc tính, thì các thành phần nên tránh sử dụng thuộc tính có giá trị thay đổi theo thời gian: như tên địa danh, phân loại. Các thuộc tính tham gia một khóa được gọi là thuộc tính khóa (prime key), ngược lại được gọi là thuộc tính không khóa (non prime key).
Một thuộc tính được gọi là khóa ngoại nếu nó là thuộc tính của một lược đồ quan hệ này nhưng lại là khóa chính của lược đồ quan hệ khác. Khóa phụ (second key): đóng vai trò khi ta muốn sắp xếp lại dữ liệu trong bảng. Ví dụ: Ta có bảng SINHVIEN (MaSV, Hoten, GioiTinh, Diem). Muốn sắp xếp lại danh sách sinhviên theo thứ tự a, b, c.
của Họ tên. Khi đó thuộc tính Hoten được gọi là khóa phụ. Ví dụ: Ta hãy xem lược đồ quan hệ sau: Xe(SODANGBO, QUICACH, NHDANG, MAUSAC, SOSUON, SOMAY, MAXE, QUOCGIA) 14 Siêu khóa: (SOSUON, QUICACH),. Khóa chỉ đinh: (SODANGBO,QUOCGIA), (SOSUON), (SOMAY), (MAXE) Khóa chính: MAXE Thuộc tính khóa: SODANGBO,QUOCGIA, SOSUON, SOMAY, MAXE Thuộc tính không khóa: QUICACH, HINHDANG, MAUSAC Khóa của SinhViên là (MãSV)….6 Các phép trên mô hình quan hệ 2.1 Phép toán cập nhật a.
Phép chèn (Insert): là phép bổ xung thêm một bộ vào quan hệ r cho trước. + Biểu diễn: INSERT(r; A1=d1,A2=d2,.,An=dn) với Ai là thuộc tính, di thuộc dom(Ai), i=1,. Nếu thứ tự các trường là cố định, có thể biểu diễn phép chèn dưới dạng không tường minh INSERT(r; d1,d2,. + Ví dụ : Chèn thêm một bộ t4=(„004‟, „Hoàng Thanh Vân‟,1969, „Hà nội‟, 235) vào quan hệ EMPLOYEE(SSN, Name, BDate, Address, Salary) ta có thể viết: INSERT(EMPLOYEE; SSN= „004‟, Name= „Hoàng Thanh Vân‟, BDate=1969, Address= „Hà nội‟, Salary=235).
+ Chú ý : Kết quả của phép chèn có thể gây ra một số sai sót là : - Bộ mới được thêm không phù hợp với lược đồ quan hệ cho trước - Một số giá trị của một số thuộc tính nằm ngoài miền giá trị của thuộc tính đó. - Giá trị khoá của bộ mới có thể là giá trị đã có trong quan hệ đang lưu trữ. Phép loại bỏ (DEL): Là phép xoá một bộ ra khỏi một quan hệ cho trước. - Biểu diễn : DEL(r; A1=d1,A2=d2,.,An=dn) hay DEL((r, d1,d2,.,Em) là khoá thì có thể viết DEL(r; E1=e1,E2=e2,.,Em=em) - Ví dụ : + Để xoá bộ t1 ra khỏi quan hệ r: DEL(EMPLOYEE; SSN= „004‟, Name= „Hoàng Thanh Vân‟, BDate=1969, Address= „Hà nội‟, Salary=235).
+ Cần loại bỏ một nhân viên trong quan hệ EMPLOYEE mà biết SSN đó là „004‟ thì chỉ cần viết: DEL(EMPLOYEE; SSN= „004‟) c. Phép cập nhật (UPDATE): Là phép tính dùng để sửa đổi một số giá trị nào đó tại một số thuộc tính. + Biểu diễn : UPD (r; A1=d1,A2=d2,.,Bk=bk) Với {B1,B2,.,Bk} là tập các thuộc tính mà tại đó các giá trị của bộ cần thay đổi.,Bk} ứng với tập thuộc tính {A1,A2,.,Bk=bk) với K = (E1,E2,.,Em) là khoá. + Ví dụ : Để thay đổi tên nhân viên có SSN= „003‟ trong quan hệ EMPLOYEE thành Nguyễn Thanh Mai ta có thể viết : CH (EMPLOYEE; SSN= „03‟; Name= „Nguyễn Thanh Mai‟) 15 2.
Các phép toán đại số quan hệ a. Các phép toán tập hợp i). Phép hợp (Union operation) Cho hai lược đồ quan hệ Q1 và Q2 có cùng tập thuộc tính {A1,A2,. r1 và r2 lần lượt là hai quan hệ trên Q1 vaø Q2.
Pheùp hôïp cuûa hai löôïc ñoà quan heä Q1 vaø Q2 seõ taïo thaønh moät löôïc ñoà quan heä Q3. Q3 ñöôïc xaùc ñònh nhö sau: Q3+= {A1,A2,.,An} r3= r1+r2 = {t | t ∈ r1 hoaëc t ∈ r2} Ví duï: r1 r2 r3 = r1 + r2 ii). Phép giao(Intersection): Cho hai löôïc ñoà quan heä Q1 vaø Q2 coù cuøng taäp thuoäc tính {A1,A2,. r1 vaø r2 laàn löôït laø hai quan heä treân Q1 vaø Q2.
Pheùp giao cuûa hai löôïc ñoà quan heä Q1 vaø Q2 seõ taïo thaønh moät löôïc ñoà quan heä Q3 nhö sau: Q3+={A1,A2,.