TRƯỜNG ĐẠI HỌC ĐÀ LẠT        KHOA TOÁN - TIN HỌCHỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU     (Baøi giaûng toùm taét)        NGƯỜI BIÊN SO...
M CL CChương 1: T ng quan v H qu n tr cơ s d li u .....................................Trang 1I.     Gi i thi u..............
Bài gi ng tóm t t H qu n tr cơ s d li u                                                 1                                 ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                       2   − Object-relational: 199...
Bài gi ng tóm t t H qu n tr cơ s d li u                                             3   − Qu n lý vùng      m.Qu n lý giao...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                4Thành ph n Ki m tra ch ng th c và ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                    5                              ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                            6                       [ , Size = size...
Bài gi ng tóm t t H qu n tr cơ s d li u                                              7    – S th c        Floating point: ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                          8      Create table Table_name      (    ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                    9   − Tên các c t trong cùng m ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                            10      Create table SinhVien      (   ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                              11                  Alter table table...
Bài gi ng tóm t t H qu n tr cơ s d li u                                             12      – D li u nh p ph i phù h p v i...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                  13      − Danh sách các thu c tín...
Bài gi ng tóm t t H qu n tr cơ s d li u                                             14VII.       T o và s d ng khung nhìn ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                            15• Nên cài     t ch m c cho các trư ng...
Bài gi ng tóm t t H qu n tr cơ s d li u                                           16Nonclustered index:• Ch m c logic, d l...
Bài gi ng tóm t t H qu n tr cơ s d li u                                            17• M t s cân nh c khi ch n ch m c:   –...
Bài gi ng tóm t t H qu n tr cơ s d li u                         18      On {table | view } (column [ Asc | Desc] [ ,...n ]...
Bài gi ng tóm t t H qu n tr cơ s d li u                                              19                                   ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                 20      o @@rowcount: cho bi t s d...
Bài gi ng tóm t t H qu n tr cơ s d li u                                          21                                While b...
Bài gi ng tóm t t H qu n tr cơ s d li u                                             22   Cho bi t nh ng nhân viên     n tu...
Bài gi ng tóm t t H qu n tr cơ s d li u                                           23   −      óng gói ch các thao tác cho ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                           24            Set @DonGia = (select DonG...
Bài gi ng tóm t t H qu n tr cơ s d li u                                               25       − i m thi ch tính l n thi s...
Bài gi ng tóm t t H qu n tr cơ s d li u                                              26              Exec usp_ThemDangKy ‘...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                27   -   Cho phép duy t tu n t qua ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                   28   o Read only: ch có th      ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                29   − L p l i vi c duy t và s d ng...
Bài gi ng tóm t t H qu n tr cơ s d li u                                               30      declare cur_DSKhoa cursor sc...
Bài gi ng tóm t t H qu n tr cơ s d li u                                              31   o L p c n xét có nhi u sinh viên...
Bài gi ng tóm t t H qu n tr cơ s d li u                                      32      Set @SoSVGioi = (select count(*) from...
Bài gi ng tóm t t H qu n tr cơ s d li u                                        33             Create function SoLonNhat   ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                          34             Create function func_name ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                35    − Khi g i hàm lo i 1 (tr v gi...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                     36      − T          ng th c h...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                 37          Các dòng m i ư c thêm ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                    38                             ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                            39   • Vi t trigger th c hi n c p nh t ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                              40                                   ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                           41   Khi t o ra m t ngư i dùng (login us...
Bài gi ng tóm t t H qu n tr cơ s d li u                                          42Ví d : t o ngư i dùng có tên ‘nam’, m t...
Bài gi ng tóm t t H qu n tr cơ s d li u                                             43   Quy n                            ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                       44      TO             <login or role name> ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                             454. Vai trò c a ngư i s d ng trong SQ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                            46      @rolename: tên role m i      @o...
Bài gi ng tóm t t H qu n tr cơ s d li u                                            47− Distributor: là server qu n lý các ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                        48      M t Publisher và nhi u Subscriber. ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                              49      ư ng truy n gi a hai máy ư c ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                            50Nh ng ki u nhân b n d li u.Có 3 ki u ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                              51subscriber và chuy n d li u ã s a i...
Bài gi ng tóm t t H qu n tr cơ s d li u                                            522. C u hình Publisher và Distributor....
Bài gi ng tóm t t H qu n tr cơ s d li u   53-   t tên CSDL c a Distribution.- Ch n Server c u hình thành Publisher.
Bài gi ng tóm t t H qu n tr cơ s d li u                                 54- Ch n CSDL tham gia nhân b n, ki u nhân b n.- C...
Bài gi ng tóm t t H qu n tr cơ s d li u                              55+ Th c hi n theo các bư c:       - Ch n CSDL c n xu...
Bài gi ng tóm t t H qu n tr cơ s d li u                                      56-   t tên cho Publication.- K t thúc.T o Pu...
Bài gi ng tóm t t H qu n tr cơ s d li u                                           57- Ch n Publication c a Publisher -> Nh...
Bài gi ng tóm t t H qu n tr cơ s d li u                                          58Bư c này th c hi n t o công c kéo d li ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                    59- Th c hi n ti p các bư c và ...
Bài gi ng tóm t t H qu n tr cơ s d li u                                              60      Full Recovery model: Là mô hì...
Bài gi ng tóm t t H qu n tr cơ s d li u                                             614. Sao lưu cơ s d li u (Backup Datab...
Bài gi ng tóm t t H qu n tr cơ s d li u                                                62      có giao d ch khác th c hi n...
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   tạ thị thu phượng[bookbooming.com]
Upcoming SlideShare
Loading in …5
×

Hệ quản trị cơ sở dữ liệu tạ thị thu phượng[bookbooming.com]

455 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
455
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Hệ quản trị cơ sở dữ liệu tạ thị thu phượng[bookbooming.com]

  1. 1. TRƯỜNG ĐẠI HỌC ĐÀ LẠT KHOA TOÁN - TIN HỌCHỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU (Baøi giaûng toùm taét) NGƯỜI BIÊN SOẠN TẠ THỊ THU PHƯỢNG Ñaø Laït 2009
  2. 2. M CL CChương 1: T ng quan v H qu n tr cơ s d li u .....................................Trang 1I. Gi i thi u................................................................................................................1II. C u trúc và thành ph n c a h qu n tr cơ s d li u ............................................2Chương 2: Xây d ng, qu n lý và khai thác cơ s d li u.........................................5I. Khái ni m cơ s d li u .........................................................................................5II. T o cơ s d li u. ...................................................................................................5III. Ki u d li u. ...........................................................................................................6IV. T o và qu n lý b ng. .............................................................................................7V. Các thao tác trên d li u.......................................................................................11VI. Truy v n d li u ...................................................................................................12VII. T o và s d ng khung nhìn (View)......................................................................14VIII. T o và s d ng ch m c (Index)...........................................................................14IX. Chuy n i d li u v i các ng d ng khác..........................................................18Chương 3: T-SQL nâng cao ......................................................................................19I. Khai báo và s d ng bi n .....................................................................................19II. C u trúc i u khi n...............................................................................................20III. Th t c thư ng trú (Stored Procedures)...............................................................22IV. Ki u d li u cursor ...............................................................................................26V. Hàm ngư i dùng (User Defined Functions).........................................................32VI. Triggers và cài t ràng bu c d li u ...................................................................35Chương 4: B o m t và an toàn d li u .....................................................................40I. B o m t trong h qu n tr cơ s d li u ..............................................................40II. B n sao d li u .....................................................................................................46III. Sao lưu và khôi ph c d li u ...............................................................................59IV. Qu n lý giao d ch .................................................................................................61Chương 5: L p trình cơ s d li u............................................................................92I. L p trình ADO.NET.............................................................................................92II. Thi t k ch c năng c/ ghi d li u .....................................................................95III. T o báo bi u v i Crystal Report ..........................................................................98Bài t p ........................................................................................................................105
  3. 3. Bài gi ng tóm t t H qu n tr cơ s d li u 1 Chương 1 T NG QUAN V H QU N TR CƠ S D LI UI. Gi i thi u Thông tin là ngu n tài nguyên quý giá c a m t t ch c. Các ph n m m máy tính lành ng công c hi u qu x lý thông tin và h qu n tr cơ s d li u là công c phbi n cho phép lưu tr và rút trích thông tin m t cách hi u qu . H qu n tr cơ s d li u quan h là h qu n tr cơ s d li u ph bi n nh t hi n nayvà ư c h tr b i nhi u nhà cung c p ph n m m. Tính hi u qu c a các ng d ng phthu c vào ch t lư ng c a vi c t ch c d li u. Nh ng c i ti n trong k thu t và x lý cơs d li u ưa n các cơ h i s d ng thông tin m t cách linh ho t và hi u qu khi d li u ư c t ch c và lưu tr trong các c u trúc quan h . H qu n tr cơ s d li u là m t thànhcông trong lĩnh v c thương m i.M c tiêu c a h qu n tr cơ s d li u. H qu n tr cơ s d li u ph i m b o các m c tiêu sau: d li u s n dùng (dataavailability), tính toàn v n d li u (data integrity), an toàn d li u (data secutity), và cl p d li u (data independency). o D li u s n dùng (data availability): d li u ư c t ch c sao cho m i ngư i dùng có th truy c p d dàng theo ch c năng và nhi m v c a h . o Tính toàn v n d li u (data integrity): d li u lưu tr trong cơ s d li u là úng n, áng tin c y. o An toàn d li u (data secutity): Ch nh ng ngư i dùng ư c phép m i có th truy c p d li u. N u nhi u ngư i dùng truy c p chung m t m c d li u cùng lúc thì h qu n tr cơ s d li u không cho phép h th c hi n nh ng thay i gây mâu thu n d li u. o c l p d li u (data independency): h qu n tr cơ s d li u ph i cho phép t t c m i ngư i dùng ư c phép lưu tr , c p nh t và rút trích d li u hi u qu mà không c n n m chi ti t v c u trúc c a cơ s d li u ư c bi u di n và cài t.Quá trình phát tri n c a h qu n tr cơ s d li u. Quá trình phát tri n c a DBMS như sau: − Flat files: 1960s – 1980s − Hierarchical: 1970s –1990s − Network : 1970s – 1990s − Relational: 1980s – n nay − Object-oriented: 1990s – n nay
  4. 4. Bài gi ng tóm t t H qu n tr cơ s d li u 2 − Object-relational: 1990s – n nay − Data warehousing: 1980s – n nay − Web-enabled: 1990s – n nayII. C u trúc và thành ph n c a h qu n tr cơ s d li u. Forms Application SQL Interface Front ends SQL Commands Query Parser Plan Executor Execution Engine Optimizer Operator Evaluator Concurrency Control File and Access Transaction Methods Manager Recovery Buffer Manager Lock Manager Manager Disk Space Manager DBMS Index System DATABASE Files Data catalog Files Hình 1.1 Ki n trúc c a DBMSKi n trúc c a h qu n tr cơ s d li u g m 2 thành ph n ch c năng: o B qu n lý lưu tr (Storage manager). o B X lý truy v n (Query Processor).1. B qu n lý lưu trB qu n lý lưu tr có nhi m v lưu tr , rút trích và c p nh t d li u vào cơ s d li u. Bqu n lý lưu tr g m có các ơn v sau: − Ki m tra ch ng th c và toàn v n. − Qu n lý giao d ch . − Qu n lý file.
  5. 5. Bài gi ng tóm t t H qu n tr cơ s d li u 3 − Qu n lý vùng m.Qu n lý giao d ch (Transaction management) Thông thư ng, m t s thao tác trên cơ s d li u t o thành m t ơn v logic công vi c.Ta hãy xét ví d chuy n kho n, trong ó m t s ti n x ư c chuy n t tài kho n A(A:=A-x) sang m t tài kho n B (B:=B+x). M t y u t c n thi t là c hai thao tác này ho ccùng x y ra ho c không ho t ng nào x y ra c . Vi c chuy n kho n ph i x y ra trongtính toàn th c a nó ho c không. Yêu c u toàn th -ho c-không này ư c g i là tínhnguyên t (atomicity). M t y u t c n thi t khác là s th c hi n vi c chuy n kho n b otoàn tính nh t quán c a cơ s d li u: giá tr c a t ng A + B ph i ư c b o toàn. Yêu c uv tính chính xác này ư c g i là tính nh t quán (consistency). Cu i cùng, sau khi th chi n thành công ho t ng chuy n kho n, các giá tr c a các tài kho n A và B ph i b nv ng cho dù có th có s c h th ng. Yêu c u v tính b n v ng này ư c g i là tính lâub n (durability). M t giao d ch là m t t p các ho t ng th c hi n ch m t ch c năng logic trong m t ng d ng cơ s d li u. M i giao d ch là m t ơn v mang c tính nguyên t l n tính nh tquán. Như v y, các giao d ch ph i không ư c vi ph m b t kỳ ràng bu c nh t quán nào:N u cơ s d li u là nh t quán khi m t giao d ch kh i ng thì nó cũng ph i là nh tquán khi giao d ch k t thúc thành công. Tuy nhiên, trong khi ang th c hi n giao d ch,ph i cho phép s không nh t quán t m th i. S không nh t quán t m th i này tuy là c nthi t nhưng l i có th d n n các khó khăn n u x y ra s c . Trách nhi m c a ngư i l p trình là xác nh úng n các giao d ch sao cho b o toàntính nh t quán c a cơ s d li u. m b o tính nguyên t và tính lâu b n là trách nhi m c a h cơ s d li u nói chungvà c a thành ph n qu n tr giao d ch (transaction-management component ) nói riêng.N u không có s c , t t c giao d ch hoàn t t thành công và tính nguyên t ư c hoànthành d dàng. Tuy nhiên, do s hi n di n c a các s c , m t giao d ch có th không hoànt t thành công s th c hi n c a nó. N u tính nguyên t ư c m b o, m t giao d ch th tb i không gây nh hư ng n tr ng thái c a cơ s d li u. Như v y, cơ s d li u ph i ư c hoàn l i tr ng thái c a nó trư c khi giao d ch b t u. H qu n tr cơ s d li u ph icó trách nhi m phát hi n s c h th ng và tr l i cơ s d li u v tr ng thái trư c khi x yra s c . Khi m t s giao d ch tương tranh c p nh t cơ s d li u, tính nh t quán c a d li u cóth không ư c b o toàn, ngay c khi m i giao d ch là chính xác. B qu n tr i u khi ntương tranh (concurency-control manager) có trách nhi m i u khi n các tương tác gi acác giao d ch ng th i m b o tính th ng nh t c a CSDL.
  6. 6. Bài gi ng tóm t t H qu n tr cơ s d li u 4Thành ph n Ki m tra ch ng th c và toàn v n (Authorization and Integrity Manager)Ki m tra ràng bu c toàn v n và quy n truy c p d li u c a ngư i dùng cơ s d li u.Thành ph n qu n lý giao d ch (Transaction manager)Thành ph n này m b o r ng cơ s d li u luôn tr ng thái nh t quán. Nó qu n lý vi cth c thi các yêu c u thao tác d li u và m b o các truy c p d li u ng th i không d n n mâu thu n.Thành ph n qu n lý file (File manager): qu n lý vi c c p phát không gian trên ĩa. Cácfile ư c dùng ch a t p các d li u tương t nhau. H qu n lý file qu n lý các file cl p, giúp nh p và l y các m u tin. Thành ph n qu n lý file thi t l p và duy trì danhsách các c u trúc và ch m c ư c nh nghĩa trong lư c trong. Thành ph n qu n lýfile có th : o T o file. o Xóa file. o C p nh t m u tin trong file. o L y m t m u tin t m t file.Thành ph n qu n lý vùng m (Buffer Manager): có trách nhi m chuy n d li u t ĩalưu tr vào b nh chính theo yêu c u c a chương trình.2. B x lý truy v n (Query Processor)Th c hi n câu truy v n nh n ư c t ngư i dùng qua các giai o n phân tích (parser), t iưu hóa câu h i (query optimizer), l p k ho ch th c hi n (plan executor) và th c hi n tínhtoán (operator evaluator).
  7. 7. Bài gi ng tóm t t H qu n tr cơ s d li u 5 Chương 2 XÂY D NG, QU N LÝ VÀ KHAI THÁC CƠ S D LI U I. Khái ni m cơ s d li u • m c logic, m t cơ s d li u (CSDL) g m: − Các b ng (tables) ch a d li u có c u trúc và các ràng bu c (constraint) nh nghĩa trên các b ng. − Các khung nhìn (view). − Các th t c/ hàm. − Các vai trò (role) và ngư i dùng (user). − … • m c lưu tr v t lý, m t database c a SQL Server ư c lưu tr b i 3 lo i t p tin: − T p tin d li u (data file) g m có: 1 t p tin d li u chính (primary data file), thư ng có ph n m r ng “mdf”: ch a các d li u kh i u c a database. 0-n t p tin d li u th c p (secondary data file), thư ng có ph n m r ng “ndf”: ch a các d li u không lưu tr h t trong t p tin d li u chính. − T p tin nh t ký giao tác (transaction log file) g m có 1-n t p tin nh t ký, thư ng có ph n m r ng “ldf”: ch a các thông tin v nh t ký giao tác, dùng ph c h i database sau khi x y ra s c .II. T o cơ s d li u 1. Cú pháp l nh t o CSDL Create Database database_name [ On [Primary] { file_spec [,…n] } ] [ Log on { file_spec [,…n] } ] v i file_spec :: = ( Name = logical_file_name, Filename = os_file_name
  8. 8. Bài gi ng tóm t t H qu n tr cơ s d li u 6 [ , Size = size ] [ , Maxsize = { max_size | Unlimited } ] [ , Filegrowth = growth_increment ] ) M c nh, các t p tin d li u và log ư c lưu trong thư m c MSSQL Data c a thư m c cài t SQL Server. Ví d • Ví d 1: t o CSDL QLSinhVien theo các quy nh m c nh c a SQL Server Create Database QLSinhVien • Ví d 2: t o CSDL QLSinhVien v i khai báo tên file logic, thư m c lưu t p tin d li u chính, kích thư c, … Create Database QLSinhVien On ( Name = QLSV_Data Filename = ‘C: ... QLSV_Data.mdf ’, Size = 1, Filegrowth = 10% ) • Ví d 3 Create Database QLSinhVien On ( Name = QLSV_Data1, Filename = ‘C: ... QLSV_Data.mdf ’, Size = 1, Maxsize = 10 MB, Filegrowth = 1 MB ) , ( Name = QLSV_Data2 , Filename = ‘C:...QLSV_Data1.ndf’ ) Log on ( Name = QLSV_Log, Filename = ‘D:...QLSV_Log.ldf’) 2. Xoá m t CSDL ã t n t i Drop Database database_name 3. Thay i m t CSDL Alter Database database_name …. Dùng : – Thêm/xoá/thay i các t p tin. – Thay i các tùy ch n cho CSDL.III. Ki u d li u SQL Server cung c p các ki u d li u: 1. S – S nguyên: bit, tinyint, smallint, int, bigint.
  9. 9. Bài gi ng tóm t t H qu n tr cơ s d li u 7 – S th c Floating point: o float(n) o real = float(24) Fixed point o Decimal(p,s) o Numeric(p,s) 2. Chu i char(n): chu i có dài c nh. nchar(n): chu i (theo mã Unicode) có dài c nh. varchar(n): chu i có dài thay i. nvarchar(n): chu i (theo mã Unicode) có dài thay i. text: ki u d li u cho phép ch a chu i có kích thư c hơn 8KB. ntext: ki u d li u cho phép ch a chu i (theo mã Unicode) có kích thư c hơn 8KB. 3. Ngày gi Datetime. Smalldatetime 4. Ki u ngư i dùng t nh nghĩa a. nh nghĩa m t ki u d li u: sp_addtype type_name, system_type [, ‘null_type’][, ‘owner’] Ví d : nh nghĩa ki u d li u Code là ki u chu i g m 10 ký t cho phép tr ng Exec sp_addtype Code, char(10), ‘NULL’ b. Xóa m t ki u d li u ngư i dùng nh nghĩa: sp_droptype ‘type_name’IV. T o và qu n lý b ng 1. T o b ng – Xác nh các c t (các thu c tính) c a b ng. – Xác nh khóa chính. – Xác nh các thu c tính null/ not null. – Xác nh thu c tính identity (n u có) (ph i là ki u s nguyên). Lưu ý: – Luôn t o khóa chính cho m t b ng. – Ràng bu c khóa ngo i nên ư c t o sau khi ã t o xong t t c các b ng liên quan. a. Cú pháp l nh t o b ng
  10. 10. Bài gi ng tóm t t H qu n tr cơ s d li u 8 Create table Table_name ( { Column_name Data_type [null | not null] [default default_value ] [identity [( seed, increment)] ] } [,…n] [, constraint constraint_name primary key ( Column_name [,…n] ) ] )Ví d : T o b ng h c sinh có khóa chính là (STT, Lop) Create table HOCSINH ( STT tinyint not null, Lop char(5) not null default ‘11A1’ , HoTen nvarchar(30) not null, NgaySinh datetime not null, DiaChi nvarchar(100), constraint pk_HS primary key (STT, Lop) ) b. Thay i c u trúc b ng / xóa b ng Thay i c u trúc b ng là th c hi n: – Thêm/ xoá/ c p nh t ki u d li u c a m t c t (column). – Thêm/ xoá/ ki m tra/ không ki m tra ràng bu c (constraint). – Cho phép/ không cho phép trigger ho t ng. Cú pháp: Alter table <tên_b ng> … Xóa b ng: xoá d li u và c u trúc c a b ng Cú pháp: Drop table <tên_b ng>Ví d − Thêm thu c tính DanToc vào b ng HOCSINH: Alter table HOCSINH Add DanToc nvarchar(20) null default ‘Kinh’ − S a ki u d li u c a thu c tính NgaySinh thành ki u SmallDatetime: Alter table HOCSINH Alter column NgaySinh SmallDatetime not null2. Qu n lý b ng − Các tên b ng, tên ràng bu c không ư c trùng nhau trong cùng m t database.
  11. 11. Bài gi ng tóm t t H qu n tr cơ s d li u 9 − Tên các c t trong cùng m t b ng không ư c trùng nhau. − Thông tin v các b ng, các ràng bu c ư c lưu trong b ng h th ng sysobjects Ví d : c thông tin v các b ng trong database hi n hành: Select * from sysobjects where type = ‘U’ − M t s th t c SQL Server cung c p qu n lý b ng và c u trúc b ng: o sp_databases o sp_tables [‘table_name’] [, ‘owner’][,‘database_name’][, “ ‘type’ ”] Ví d : Exec sp_tables null, null, null, “ ‘TABLE’ ” o sp_help [object_name] sp_help cho bi t các thông tin v i tư ng b t kỳ trong database ( i tư ng có ch a trong sysobjects). Ví d : Exec sp_help HOCSINH o sp_columns object [, owner] [, database] [,column] o sp_helpconstraint ‘table_name’ o …3. Cài t ràng bu c toàn v n ơn gi n SQL Server cung c p s n cơ ch ki m tra các lo i ràng bu c toàn v n (RBTV) sau: o Khóa chính (primary key constraint). o Khóa ngo i (foreign key constraint). o Giá tr duy nh t (unique constraint). o Check constraint (Ki m tra ràng bu c mi n giá tr ). Có th khai báo ràng bu c trong lúc t o b ng ho c khi b ng ã t n t i. Thông thư ng nên khai báo ràng bu c toàn v n trư c khi nh p d li u. a. Khai báo ràng bu c trong lúc t o b ng Cú pháp: Create table Table_name ( … [, constraint Constraint_name { primary key (Column_name [,…n]) | unique ( Column_name [,…n]) | check ( logical_expression ) } ] […n] ) Ví d
  12. 12. Bài gi ng tóm t t H qu n tr cơ s d li u 10 Create table SinhVien ( MaSV char(10) not null, HoTen nvarchar(30) not null, Nam tinyint, CMND char(10), Khoa char(5), constraint pk_SV primary key (MaSV), constraint u_CMND unique (CMND), constraint chk_Nam check (Nam > 0 and Nam <= 4) ) b. Khai báo ràng bu c trên b ng ã t n t i Cú pháp: Alter table table_name [with check| with nocheck] Add { constraint constraint_name { primary key ( column_name [,…n] ) | unique ( column_name [,…n] ) | check ( logical_expression ) | foreign key ( column_name [,…n] ) references ref_table ( ref_column [,…n] ) [ on delete {cascade| no action} ] [ on update {cascade| no action} ] } [,…n] Ví d /* gi s ã t n t i b ng KHOA( MaKhoa, …) */ Alter table SINHVIEN with check add constraint u_CMND unique (CMND), constraint chk_Nam check (Nam in (1, 2, 3, 4) ), constraint fk_SV_maKhoa foreign key (Khoa), references KHOA(MaKhoa) c. Ki m tra / không ki m tra ràng bu c Cú pháp: Alter table Table_name {Check| Nocheck} constraint { All | constraint_name [,…n] } Ví d : alter table SINHVIEN nocheck constraint u_CMND, chk_Nam d. Xoá ràng bu c Cú pháp:
  13. 13. Bài gi ng tóm t t H qu n tr cơ s d li u 11 Alter table table_name Drop { [constraint ] constraint_name } [,…n] Ví d : Alter table SINHVIEN drop constraint u_CMND, chk_Nam e. Rule − Rule là m t qui nh chung ư c t o ra trong m t CSDL. − M t rule có th ư c áp d ng cho nhi u thu c tính c a nhi u b ng khác nhau, ho c cho các ki u d li u ngư i dùng nh nghĩa trong database. T o rule Cú pháp: Create rule rule_name as logical_expression (trong ó “logical_expression” ph i ch a m t bi n. Bi n này tương ng v i i tư ng s ư c áp d ng rule). Ví d : create rule r_SoDuong as @value >0 K t bu c/ g k t bu c rule K t bu c rule: dùng th t c: sp_bindrule ‘rule_name’, ‘object’, [ ‘futureonly’ ] trong ó: Tùy ch n futureonly ch dùng khi k t bu c rule v i ki u d li u ngư i dùng nh nghĩa, có nghĩa các c t thu c ki u d li u này trư c ó không b nh hư ng b i rule. Ví d : sp_bindrule ‘r_SoDuong’, ‘SinhVien.Nam’ Rule m i k t bu c s ng m g rule cũ trên i tư ng. G k t bu c sp_unbindrule ‘object’, [ ‘futureonly’ ] Ví d : sp_unbindrule ‘SinhVien.Nam’ Xoá rule Cú pháp: Drop rule {rule_name} [,…n] Lưu ý: Ch xóa ư c rule khi nó không còn k t bu c v i i tư ng nào.V. Các thao tác trên d li u Chú ý khi thêm/ xóa/ c p nh t d li u:
  14. 14. Bài gi ng tóm t t H qu n tr cơ s d li u 12 – D li u nh p ph i phù h p v i ki u d li u. – m b o các ràng bu c toàn v n. – nh d ng giá tr ki u chu i unicode, ki u datetime. – Nh p giá tr r ng (Null).1. Các d ng l nh insert − Thêm t ng dòng d li u vào b ng Insert [into] Table_name[ (column_name[,…n] )] values ( value [,…n] ) − Thêm 0-n dòng d li u t b ng khác/ t k t qu c a m t câu truy v n Insert [into] Table_name Select_statement Lưu ý: trong câu select, ta có th c d li u t các b ng trong database khác. Khi ó, tên b ng ư c vi t y như sau: Database_name.Owner.Table_name Ví d : select * from QLSinhVien.dbo.SinhVien 2. L nh c p nh t d li u update table_name set column_name_1= value1,…, column_name_m= value_m [where conditional_expression] 3. L nh xoá d li u delete [from] table_name [where conditional_expression]VI. Truy v n d li u1. Câu truy v n t ng quát Cú pháp t ng quát c a câu truy v n d li u: SELECT [tính ch t] <danh sách các thu c tính_1> FROM <danh sách các table ho c query/view [as alias] > [WHERE < i u ki n_1>] [GROUP BY <danh sách các thu c tính_2>] [HAVING < i u ki n_2>] [ORDER BY <danh sách các thu c tính_3> [ASC | DESC]] trong ó: − Tính ch t là m t trong các t khóa: ALL (ch n ra t t c các dòng trong b ng), DISTINCT (lo i b các dòng trùng l p thông tin), TOP <n> (ch n n dòng u tiên th a mãn i u ki n).
  15. 15. Bài gi ng tóm t t H qu n tr cơ s d li u 13 − Danh sách các thu c tính_1: tên các thu c tính cho bi t thông tin c n l y. Chú ý: Các thu c tính cách nhau b i d u ‘,’. N u l y t t c các thu c tính c a 1 b ng R thì dùng: R.* N u sau FROM ch có 1 b ng và l y t t c các c t c a b ng ó thì dùng select *. N u t n t i 1 thu c tính sau select xu t hi n 2 b ng sau FROM thì ph i ch nh rõ thu c tính ó thu c b ng nào. − Danh sách các table/query/view: các b ng, câu truy v n, ho c khung nhìn ch a thông tin c n l y. Khi tìm ki m thông tin trên nhi u hơn 2 b ng/truy v n thì ph i k t các b ng l i v i nhau (có th t i u ki n k t t sau where ho c t trong m nh From… join/ left join/ right join/full join … on …). − Alias: bí danh (tên t t) c a b ng dùng cho các b ng có tên quá dài, ho c m t b ng ư c dùng nhi u l n trong m nh from c a câu truy v n. − i u ki n_1: là i u ki n l c d li u (ch n các b tho i u ki n). − danh sách các thu c tính_2: d li u s ư c gom nhóm theo các c t này, ưu tiên tính t trái sang. − i u ki n_2: i u ki n l c các nhóm theo m t tiêu chí i di n cho c nhóm. − danh sách các thu c tính_3:s p x p d li u theo c t nào, th t là tăng (ASC) ho c gi m (DESC). M c nh là d li u ư c s p theo th t tăng d n. Vi c s p x p ư c th c hi n theo th t ưu tiên t trái qua ph i. Lưu ý: N u câu truy v n không có m nh Group By thì cũng không có m nh Having. N u câu truy v n có ch a m nh Group By thì Danh sách các thu c tính_1 ch ch a các thu c tính ho c bi u th c liên quan n các thu c tính trong danh sách các thu c tính_2 và các hàm g p (max, min, avg, sum, count).2. Các hàm thư ng dùng − Các hàm g p (Aggregate functions): max, min, sum, avg, count − Các hàm th i gian. − Các hàm toán h c. − Các hàm x lý chu i. − …. (Sinh viên có th tra c u theo t khóa trong Books Online).
  16. 16. Bài gi ng tóm t t H qu n tr cơ s d li u 14VII. T o và s d ng khung nhìn (View) 1. Khái ni m khung nhìn: Khung nhìn (View) là m t b ng o, có c u trúc như m t b ng, khung nhìn không lưu tr d li u mà d li u c a nó ư c t o ra khi s d ng, khung nhìn là i tư ng thu c CSDL. Khung nhìn ư c t o ra t câu l nh truy v n d li u (l nh Select), truy v n t m t ho c nhi u b ng d li u. 2. S d ng khung nhìn o Khung nhìn ư c s d ng khai thác d li u như m t b ng d li u, có th ư c chia s b i nhi u ngư i dùng, an toàn trong khai thác. o Có th th c hi n truy v n d li u trên c u trúc c a khung nhìn. o Các khung nhìn ư c t o t nhi u b ng ho c trong khung nhìn có ch a t khóa DISTINCT, hàm g p, m nh group by u không cho phép c p nh t d li u t khung nhìn vào các b ng g c trong cơ s d li u. Cú pháp t o khung nhìn: Create View view_name As Select_statementVIII. T o và s d ng ch m c (Index) Ch m c (Index) là m t ph n quan tr ng i v i CSDL, c bi t là cơ s d li u l n. Ch m c ư c thi t l p t m t ho c nhi u c t d li u c a b ng d li u. Các giá tr c a Ch m c s ư c s p x p và lưu tr theo m t danh sách (b ng khác). M i giá tr ch m c là duy nh t trong danh sách và nó s liên k t n giá tr trong b ng d li u (liên k t d ng con tr ). Vi c lưu tr d li u c a b ng có khóa ch m c ư c th c hi n theo c u trúc B-Cây nh m tăng t c truy xu t d li u i v i ĩa (thi t b th c p). Khi tìm ki m m t giá tr trong c t d li u, mà c t này tham gia t o Ch m c, u tiên câu l nh xác nh v trí c a giá tr n m trong Ch m c b ng phép duy t cây, sau ó th c hi n tìm theo liên k t n b n ghi ch a giá tr tương ng v i khóa trong b ng. 1. L a ch n ch m c • Không có ch m c, h qu n tr CSDL th c hi n truy v n b ng cách duy t qua t ng dòng trong b ng. • Cài t các ch m c cho b ng giúp truy v n thông tin nhanh hơn (tìm ki m trên B-Cây). • Khóa chính và các ràng bu c unique hi n nhiên là các ch m c c a b ng. • Cơ s ch n cài t ch m c: d a vào các nhu c u truy v n th c hi n thư ng xuyên trên CSDL.
  17. 17. Bài gi ng tóm t t H qu n tr cơ s d li u 15• Nên cài t ch m c cho các trư ng h p sau: – Trư ng h p 1: Có nhu c u truy v n thư ng xuyên các b c a b ng Q theo m t s (t p) thu c tính nào ó. Ví d : GiaoDich(MãGD, …,NgàyGD): Có nhu c u truy xu t thư ng xuyên các b c a giao d ch trong m t ngày ho c trong m t kho ng th i gian nh t nh: cài t ch m c trên thu c tính NgayGD c a quan h GiaoDich. – Trư ng h p 2: t p thu c tính tham gia vào phép k t c a m t câu truy v n x y ra thư ng xuyên. Ví d : cho 2 lư c quan h : HocSinh(STT, Lop, HoTen,…) KetQua(STT, Lop, Mon, Diem) Thư ng xuyên có nhu c u truy v n: cho bi t k t qu h c t p c a m t h c sinh. Câu l nh truy v n như sau: select hs.STT, hs.Lop, hs.HoTen, kq.Mon, kq.Diem from HocSinh hs join KetQua kq on hs.STT = kq.STT and hs.Lop = kq.Lop Cài t ch m c (STT, Lop) cho quan h KetQua T ng quát: trên mô hình quan h , xác nh các con ư ng truy xu t thư ng xuyên: T m t b c a Q1(m t giá tr c th a c a A) có nhu c u truy xu t thư ng xuyên các b c a Q2 tương ng (tìm ki m các b c a Q2 v i A = a): khai báo ch m c (A) cho Q2. Lưu ý: m t ch m c (AB) khác v i hai ch m c (A) và (B).2. Các lo i ch m c Có hai lo i ch m c: – Clustered index – Nonclustered indexClustered index:• D li u th t s ư c s p x p v t lý theo ch m c (th t s n m nút lá c a cây).• M i b ng ch có th có m t clustered ch m c, thư ng là khóa chính.
  18. 18. Bài gi ng tóm t t H qu n tr cơ s d li u 16Nonclustered index:• Ch m c logic, d li u th t s không ư c s p x p v t lý theo ch m c.• Nút lá là con tr tr n v trí c a b d li u, ho c tr n giá tr c a clustered ch m c (trong trư ng h p b ng có clustered index). – Không có clustered index: – Có clustered index
  19. 19. Bài gi ng tóm t t H qu n tr cơ s d li u 17• M t s cân nh c khi ch n ch m c: – S d ng nhi u ch m c tăng t c truy v n, nhưng làm gi m hi u qu c a các thao tác thêm/xoá/c p nh t d li u. – Không nên t o ch m c trên các b ng quá nh (vài trăm dòng). – Ch nên ch n ch m c mà m i giá tr c a nó tương ng v i m t s ít b . N u m i giá tr ch m c ng v i trên 20% s lư ng b trong b ng, th c hi n truy v n bình thư ng b ng cách duy t qua các dòng trong b ng s hi u qu hơn. – Các giá tr ch m c ph i phân b u các b trong b ng. – C g ng dùng các ch m c v i s thu c tính ít (chi m ít không gian và c n ít chi phí duy trì hơn ch m c v i s thu c tính l n). – Clustered index ph i nh (s thu c tính ít, kích thư c nh ), vì các ch m c nonclustered u ph i g n k t t i nó.3. Cài t ch m c v i SQL Server M t s qui nh: 1. M t b ng có t i a 249 nonclustered ch m c (bao g m c nh ng ch m c ng m nh khi khai báo khóa chính và ch m c). 2. Kích thư c t i a c a m t ch m c (t ng kích thư c các thu c tính tham gia vào ch m c) không quá 900 bytes. 3. M c nh: ch m c clustered ư c khai báo ng m nh cùng v i khai báo khóa chính, các trư ng h p khác là nonclustered (t t nhiên có th ch nh khác i). Cú pháp khai báo ch m c: Create [ Unique ][ Cluster| Nonclustered] Ch m c ch m c_name
  20. 20. Bài gi ng tóm t t H qu n tr cơ s d li u 18 On {table | view } (column [ Asc | Desc] [ ,...n ]) Ví d : Create nonclustered ch m c idx_STTHS_Lop On KETQUA (STTHS, Lop) Cú pháp xóa ch m c: Drop Ch m c table_name (ch m c_name) Ví d : Drop Ch m c KETQUA(idx_STTHS_Lop)IX. Chuy n i d li u v i các ng d ng khác (xem các tài li u hư ng d n th c hành SQL Server kèm theo)
  21. 21. Bài gi ng tóm t t H qu n tr cơ s d li u 19 Chương 3 T-SQL NÂNG CAOI. Khai báo và s d ng bi n1. Bi n c c b − Là m t i tư ng có th ch a giá tr thu c m t ki u d li u nh t nh, tên bi n b t u b ng m t ký t @. – Bi n c c b có giá tr trong m t query batch ho c trong m t th t c thư ng trú (stored procedure) ho c hàm (function). – Khai báo bi n c c b b ng l nh declare: cung c p tên bi n và ki u d li u: Declare tên_bi n Ki u_d _li u Ví d : Declare @MaSinhVien char(10) Declare @HoTen nvarchar(30) Declare @Sum float, @Count int – gán giá tr cho m t bi n c c b dùng l nh set. Giá tr gán cho bi n ph i phù h p v i ki u d li u c a bi n. Set tên_bi n = giá_tr Set tên_bi n = tên_bi n Set tên_bi n = bi u_th c Set tên_bi n = k t_qu _truy_v n Ví d : Set @MaLop = ‘TH2001’ Set @SoSV = (select count (*) from SinhVien) Set @MaLop = ‘TH’+Year(@NgayTuyenSinh) ưa k t qu truy v n vào bi n: SV(MaSV: int; HoTen: nvarchar(30), Tuoi int) Select @Var1 = HoTen, @Var1 = Tuoi from SV where MaSV = 1Lưu ý: n u câu truy v n tr v nhi u dòng, các bi n ch nh n giá tr tương ng c a dòng u tiên.2. Bi n toàn c c – Là các bi n h th ng do SQL Server cung c p, tên bi n b t u b ng 2 ký t @ – SQL t c p nh t giá tr cho các bi n này, ngư i s d ng không th gán giá tr tr c ti p. − M t s bi n h th ng thu ng dùng o @@error: thông báo mã l i, n u @@error = 0: thao tác th c hi n thành công.
  22. 22. Bài gi ng tóm t t H qu n tr cơ s d li u 20 o @@rowcount: cho bi t s dòng b nh hư ng b i l nh cu i (insert, update, delete). o @@trancount: cho bi t s giao d ch ang ho t ng trên k t n i hi n t i. o @fetch_status: cho bi t thao tác l y d li u t cursor có thành công không.II. C u trúc i u khi n1. L nh If…else − Ch c năng: xét i u ki n quy t nh nh ng l nh T-SQL nào s ư c th c hi n − Cú pháp: If bi u_th c_ i u ki n L nh| Kh i_l nh [Else L nh| Kh i_l nh] Kh i l nh là m t ho c nhi u l nh n m trong c p t khóa begin…end Ví d : xét 2 lư c quan h (L QH) HocPhan(MaHP, TenHP, SiSo) DangKy(MaSV, MaHP) Vi t l nh thêm m t ăng ký m i cho sinh viên có mã s 001 vào h c ph n HP01 (gi s h c ph n này ã t n t i trong b ng HocPhan). L i gi i như sau: Declare @SiSo int select @SiSo = SiSo from HocPhan where MaHP= ‘HP01’ if @SiSo < 50 Begin insert into DANG_KY(MaSV, MaHP) values(‘001’, ’HP01’) print N’ ăng ký thành công’ End Else print N’H c ph n ã SV’2. L nh While − Ch c năng: th c hi n l p l i m t o n l nh T-SQL khi i u ki n còn úng. − Cú pháp:
  23. 23. Bài gi ng tóm t t H qu n tr cơ s d li u 21 While bi u_th c_ i u_ki n L nh| Kh i l nh – Có th s d ng Break và Continue trong kh i l nh c a while Break: thoát kh i vòng while hi n hành. Continue : tr l i u vòng while, b qua các l nh sau ó. Ví d : xét lư c quan h SinhVien(MaSV: int, HoTen: nvarchar(30)) Vi t l nh xác nh m t mã sinh viên m i theo qui nh: mã sinh viên tăng d n, n u có ch tr ng thì mã m i xác nh s chèn vào ch tr ng ó. Ch ng h n, n u trong b ng sinhvien ã có các mã sinh viên 1, 2, 3, 7 mã sinh viên m i là 4. Gi i: Declare @STT int Set @STT = 1 While exists(select * from SV where MaSV = @STT) set @STT = @STT+1 Insert into SV(MaSV, HoTen) values(@STT, ‘Nguyen Van A’)3. L nh Case − Ch c năng: ki m tra m t dãy các i u ki n và tr v k t qu phù h p v i i u ki n úng. L nh case ư c s d ng như m t hàm trong câu select. − Cú pháp: Có hai d ng: D ng 1 (simple case): Case Bi u_th c_ u_vào When Giá_tr then k t_qu [...n] [ Else k t_qu _khác] End D ng 2 (searched case): Case When bi u_th c_ i u ki n then k t_qu [...n] [ Else k t_qu _khác] End Ví d : xét L QH NHAN_VIEN(MaNV, HoTen, NgaySinh, CapBac,Phai)
  24. 24. Bài gi ng tóm t t H qu n tr cơ s d li u 22 Cho bi t nh ng nhân viên n tu i ngh hưu bi t r ng tu i v hưu c a nam là 60, c a n là 55). Gi i: select * from NHAN_VIEN where datediff(yy, NgaySinh, getdate()) > = Case Phai when ‘Nam’ then 60 when ‘Nu’ then 55 End Cho bi t mã NV, h tên và lo i nhân viên (c p b c <=3:bình thư ng, c p b c = null: chưa x p lo i, còn l i: c p cao). Gi i: Select MaNV, HoTen, ‘Loai’ = Case when CapBac<=3 then ‘Binh Thuong’ when CapBac is null then ‘Chua xep loai’ else ‘Cap Cao’ End From NhanVienIII. Th t c thư ng trú (Stored Procedures)1. Khái ni m Th t c thư ng trú (Stored Procedures - SP) ch a các l nh T_SQL. Tương t như m tth t c trong các ngôn ng l p trình, SP trong SQL Server có th truy n tham s , có tínhtái s d ng. Các th t c này ư c d ch và lưu tr thành m t i tư ng trong CSDL.Ý nghĩa: − Tính tái s d ng, tính uy n chuy n nh h th ng tham s . − Khi biên d ch SP, các l nh trong c a nó ư c t i ưu hóa nó sao cho th c thi hi u qu nh t. K t qu t i ưu hóa ư c lưu b n v ng. Khi g i th c thi th t c không c n biên d ch và t i ưu hóa l i l i g i th t c ti t ki m th i gian và tài nguyên hơn kh i l nh tương ương thân th t c. − Trong ng d ng tri n khai theo môi trư ng client/server, client g i l i g i SP lên server thì chi m ư ng truy n ít hơn r t nhi u l n so v i vi c g i kh i l nh tương ương trong thân th t c Gi m kh i lư ng thông tin trao i khi ng d ng g i yêu c u th c hi n công vi c v cho server do ó tránh ngh n ư ng truy n, gi m trì tr .
  25. 25. Bài gi ng tóm t t H qu n tr cơ s d li u 23 − óng gói ch các thao tác cho phép trên CSDL vào các SP và quy nh truy xu t d li u ph i thông qua SP. Ngoài ra còn có th phân quy n trên SP H tr t t hơn cho vi c m b o an toàn (security) cho CSDL. − SP giúp cho vi c k t xu t báo bi u b ng Crystal Report tr nên ơn gi n và hi u qu hơn r t nhi u so v i vi c k t xu t d li u tr c ti p t các b ng và khung nhìn.2. Khai báo và s d ng th t cCú pháp khai báo: Create {proc | procedure} procedure_name {Parameter_name DataType [=default] [output] }[,…n] As { kh i l nh } GoLưu ý: Tên tham s t theo qui t c như tên bi n c c b . Giá tr tr v c a SP dùng m t (hay m t s ) tham s output.Ví d : − Xây d ng SP cho bi t danh sách sinh viên c a m t l p có mã cho trư c Create proc DS_Lop @MaLop varchar(10) As Select SV.MaSV, SV.HoVaTen, SV.NgaySinh From SinhVien SV where SV.Lop = @MaLop Go − Xây d ng SP tính toán giá tr cho ơn hàng có mã cho trư c v i quan h DonHang như sau: DonHang(Ma, SoLuong, DonGia, ThueSuat, ChietKhau, ThanhTien) Create proc TongTien @MaDH varchar(10) As Declare @ThanhTien float Declare @TienThue float Declare @TienChietKhau float Declare @DonGia float,@SoLuong int Set @SoLuong = (select SoLuong from DonHang where Ma = @MaDH)
  26. 26. Bài gi ng tóm t t H qu n tr cơ s d li u 24 Set @DonGia = (select DonGia from DonHang where Ma = @MaDH) Set @TienThue = (select ThueSuat from DonHang where Ma = @MaDH) Set @TienChietKhau = (select ChietKhau from DonHang where Ma = @MaDH) Set @ThanhTien = @DonGia*@SoLuong Set @TienThue = @ThanhTien*@TienThue/100 Set @ThanhTien = @ThanhTien + @TienThue Set @TienChietKhau = @ThanhTien*@TienChietKhau/100 Set @ThanhTien = @ThanhTien - @TienChietKhau Update DonHang set ThanhTien = @ThanhTien where Ma = @MaDH Go − Vi t th t c thêm m t ăng ký c a sinh viên vào m t h c ph n (t ng quát ví d trong ph n If …else) Create procedure usp_ThemDangKy @MaSV char(5), @MaHP char(5), @SiSo int = 0 output As select @SiSo = SiSo from HocPhan where MaHP= @MaHP if @SiSo < 50 Begin insert into DANG_KY(MaSV, MaHP) values(@MaSV, @MaHP) set @SiSo = @SiSo+1 return 1 End return 0 Go - Xây d ng SP tính i m trung bình và x p lo i cho sinh viên thu c l p cho trư c. Gi s có các quan h như sau: SinhVien (MaSV, HoTen, DTB, XepLoai, Lop) MonHoc (MaMH, TenMH) KetQua (MaMH, MaSV, LanThi, Diem) trong ó:
  27. 27. Bài gi ng tóm t t H qu n tr cơ s d li u 25 − i m thi ch tính l n thi sau cùng. − X p lo i: Xu t s c [9, 10], Gi i [8, 8.9], Khá [7, 7.9], Trung bình [5.0, 6.9], Y u [0,4.9]. − K t qu xu t d ng tham s output, không ghi xu ng CSDL.Gi iCreate proc XepLoaiSV @MaSV varchar(10), @DTB float out put, @XL nvarchar(20) out putAs Set @DTB = (Select avg(Diem) from KetQua Kq Where MaSV = @MaSV and not exists (select * from KetQua Kq1 where Kq1.MaSV = @MaSV and Kq1.MaMH=Kq.MaMH and Kq1.LanThi > Kq.LanThi)) If @DTB >= 9 Set @XL = N’Xu t s c’ Else if @DTB >= 8 Set @XL = N’Gi i’ Else if @DTB >= 7 Set @XL = N’Khá’ Else if @DTB >= 5 Set @XL = N’Trung bình’ Else Set @XL = N’Y u’GoCú pháp g i th c hi n th t c: EXEC| EXECUTE { [ @return_status = ] procedure_name { [ @parameter _name = ] value [ OUTPUT ] } [ ,...n ]Lưu ý: o Khi g i th c hi n SP, dùng t khóa Exec và c n truy n tham s v i ki u d li u phù h p và th t chính xác như khai báo trong nh nghĩa SP. o Có th truy n giá tr cho tham s u vào (input) là m t h ng ho c m t bi n ã gán giá tr , không truy n ư c m t bi u th c. o nh n ư c giá tr k t qu (thông qua tham s u ra), c n truy n vào m t bi n và có t khóa output. Ví d : o G i th t c usp_ThemDangKy:
  28. 28. Bài gi ng tóm t t H qu n tr cơ s d li u 26 Exec usp_ThemDangKy ‘001’, ’HP01’ ho c Exec usp_ThemDangKy @MaHP = ‘HP01’, @MaSV = ‘001’ o G i th t c usp_ThemDangKy có nh n k t qu u ra: Declare @SiSo int Exec usp_ThemDangKy ‘001’,’HP01’, @SiSo output Print @SiSo o G i th t c usp_ThemDangKy có nh n k t qu u ra và k t qu tr v t th t c: Declare @SiSo int, @KetQua int Exec @KetQua = usp_ThemDangKy ‘001’,’HP01’, @SiSo output o G i th c hi n th t c x p lo i sinh viên: Declare@MaSinhVien varchar(10) Declare@DiemTB varchar(10) Declare@XepLoai varchar(10) Set@MaSinhVien = ‘0712345’ Exec XepLoaiSV @MaSinhVien,@DiemTB out put,@XepLoai out put Exec XepLoaiSV ‘0713478’, @DiemTB out put,@XepLoai out putS a th t c Thay t khóa Create trong l nh t o th t c b ng t khóa Alter.Xóa th t c Drop {procedure|proc} procedure_name Ví d : Drop procedure usp_ThemDangKy3. Stored procedure h th ng − Là nh ng th t c do SQL Server cung c p s n th c hi n các công vi c: qu n lý CSDL, qu n lý ngư i dùng, c u hình CSDL,… − Các th t c này có tên b t u b ng “sp_” Khi xây d ng th t c, tránh t tên th t c b t u v i “sp_”.IV. Ki u d li u cursor1. Khái ni m Cursor - Là m t c u trúc d li u ánh x n m t t p các dòng d li u k t qu c a m t câu truy v n (select).
  29. 29. Bài gi ng tóm t t H qu n tr cơ s d li u 27 - Cho phép duy t tu n t qua t p các dòng d li u và c giá tr t ng dòng. - Th hi n c a cursor là 1 bi n, nhưng tên bi n này không b t u b ng ’@’. - V trí hi n hành c a cursor có th ư c dùng như i u ki n trong m nh where c a l nh update ho c delete: cho phép c p nh t/xoá d li u (d li u th t s trong CSDL) tương ng v i v trí hi n hành c a cursor.2. Khai báo và s d ng Cursor Khai báo Cursor Có th s d ng cú pháp chu n SQL 92 ho c cú pháp T_SQL m r ng. − Cú pháp SQL 92 chu n: Declare cursor_name [Insensitive] [Scroll] Cursor For select_statement [ For {Read only| Update [of column_name [,…n] ] }] − Cú pháp T_SQL m r ng Declare cursor_name Cursor [ Local | Global ] [ Forward_only| Scroll] [ Static| Dynamic] [ Read_only] For select_statement [ For Update [ of column_name [,…n] ] ]Lưu ý: Tên cursor trong các cách khai báo không b t u b ng ký t “@”. Ý nghĩa các tham s tùy ch n trong khai báo: o Insensitive/ static: n i dung c a cursor không thay i trong su t th i gian t n t i, trong trư ng h p này cursor ch là read only. o Dynamic: trong th i gian t n t i, n i dung c a cursor có th thay i n u d li u trong các b ng liên quan có thay i. o Local: cursor c c b , ch có th s d ng trong ph m vi m t kh i (query batch) ho c m t th t c/ hàm. o Global: cursor toàn c c, có th s d ng trong m t th t c/hàm hay m t query batch b t kỳ ho c n khi b h y m t cách tư ng minh. o Forward_only: cursor ch có th duy t m t chi u t u n cu i. o Scroll: có th duy t lên xu ng cursor tùy ý (duy t theo a chi u).
  30. 30. Bài gi ng tóm t t H qu n tr cơ s d li u 28 o Read only: ch có th c t cursor, không th s d ng cursor update d li u trong các b ng liên quan (ngư c l i v i “for update…” ). M c nh khi khai báo cursor n u không ch ra các tùy ch n thì cursor có các tính ch t: - Global - Forward_only - Read only hay “for update” tùy thu c vào câu truy v n - DynamicDuy t cursor Dùng l nh Fetch duy t tu n t qua cursor theo cú pháp: Fetch [ [Next| Prior| First| Last| Absolute n| Relative n] From ] Tên_cursor [Into Tên_bi n [,…n] ] −M c nh: fetch next. − i v i cursor d ng forward_only, ch có th fetch next. − Bi n h th ng @@fetch_status cho bi t l nh fetch v a th c hi n có thành công hay không, giá tr c a bi n này cơ s bi t ã duy t n cu i cursor hay chưa.Quy trình s d ng Cursor − Khai báo cursor. − “M ” cursor b ng l nh Open Open tên_cursor − Khai báo các bi n t m ch a ph n t hi n hành ( ang ư c x lý) c a cursor: Các bi n t m ph i cùng ki u d li u v i các trư ng tương ng c a ph n t trong cursor. Có n trư ng trong ph n t c a cursor thì ph i có n bi n t m tương ng. − Fetch (next,…) cursor chuy n n v trí phù h p: Có th ưa các giá tr c a dòng hi n hành vào các bi n thông qua m nh into c a l nh fetch. N u không có m nh into, các giá tr c a dòng hi n hành s ư c hi n th ra c a s k t qu (result pane) sau l nh fetch. Có th s d ng v trí hi n t i như là i u ki n cho m nh where c a câu delete/ update (n u cursor không là read_only).
  31. 31. Bài gi ng tóm t t H qu n tr cơ s d li u 29 − L p l i vi c duy t và s d ng cursor, có th s d ng bi n @@fetch_status bi t ã duy t qua h t cursor hay chưa. @@FETCH_STATUS = 0 : l y d li u thành công, @@FETCH_STATUS < 0 : không l y ư c d li u. − óng cursor b ng l nh Close Close Tên_cursor Lưu ý: Sau khi óng, v n có th m l i n u cursor chưa b h y. − H y cursor b ng l nh deallocate Deallocate Tên_cursorVí d : xét hai L QH SINHVIEN (MaSV, HoTen, MaKhoa) KHOA(MaKhoa, TenKhoa) Duy t và c giá tr t cursor C p nh t l i giá tr MaSV = Vi t t t tên Khoa + MaSV hi n t i cho t t c sinh viên: declare cur_DSKhoa cursor for select MaKhoa, TenKhoa from Khoa open cur_DSKhoa declare @MaKhoa int, @TenKhoa varchar(30), @TenTat varchar(5) fetch next from cur_DSKhoa into @MaKhoa, @TenKhoa while @@fetch_status = 0 begin -- xác nh tên t t c a Khoa d a vào @TenKhoa… update SinhVien set MaSV = @TenTat+MaSV Where MaKhoa = @MaKhoa fetch next from cur_DSKhoa into @MaKhoa, @TenKhoa end Close cur_DSKhoa Deallocate cur_DSKhoa Dùng cursor xác nh dòng c p nh t
  32. 32. Bài gi ng tóm t t H qu n tr cơ s d li u 30 declare cur_DSKhoa cursor scroll for select MaKhoa, TenKhoa from Khoa open cur_DSKhoa fetch absolute 2 from cur_DSKhoa if (@@fetch_status = 0) update Khoa set TenKhoa = ‘aaa’ where current of cur_DSKhoa Close cur_DSKhoa Deallocate cur_DSKhoa3. Bi n cursor − Ta có th khai báo m t bi n ki u cursor và gán cho nó tham chi u n m t cursor ang t n t i. − Bi n cursor có th ư c xem như là con tr cursor. − Bi n cursor là m t bi n c c b . − Bi n cursor sau khi gán giá tr ư c s d ng như m t cursor thông thư ng. Ví d : Declare @cur_var cursor set @cur_var = my_cur -- my_cur là m t cursor ang t n t i ho c: Declare @cur_var cursor set @cur_var = cursor for select_statementK t h p cursor v i stored procedureXây d ng SP tính i m trung bình và x p lo i cho sinh viên thu c l p cho trư c. Gi scó các quan h như sau: SinhVien (MaSV, HoTen, DTB, XepLoai, Lop) MonHoc (MaMH, TenMH) KetQua (MaMH, MaSV, LanThi, Diem) Bi t r ng i m thi ch tính l n thi sau cùng X p lo i: Xu t s c [9, 10], Gi i [8, 8.9], Khá [7, 7.9], Trung bình [5.0, 6.9], Y u [0, 4.9]. K t qu ghi xu ng CSDL, ng th i xu t ra t ng s sinh viên x p lo i gi i c a l p ó.• Phân tích ví d :
  33. 33. Bài gi ng tóm t t H qu n tr cơ s d li u 31 o L p c n xét có nhi u sinh viên, t ng sinh viên c n ư c x lý thông qua 3 bư c: Tính i m trung bình cho sinh viên, i m trung bình ph i là i m c a l n thi sau cùng. Có th tái s d ng th t c XepLoaiSVLop. D a vào i m trung bình c a sinh viên xác nh x p lo i. C p nh t i m và x p lo i vào b ng sinh viên. o M i sinh viên u l p l i 3 bư c trên.T phân tích trên ta th y: C n x lý nhi u ph n t (các sinh viên). M i ph n t x lý tương i ph c t p (truy v n, tính toán, g i th t c khác, i u ki n r nhánh, c p nh t d li u, …). Cách x lý các ph n t là như nhau. ⇒ S d ng cursor là thích h p Cursor ch a các sinh viên c a l p c n xét, ch c n ch a mã sinh viên là ư c.• Xây d ng th t c Create procedure XepLoaiSVLop @Lop nvarchar(10), @SoSVGioi int out As Declare @DTB float Declare @XepLoai nvarchar(20) Declare @MaSV nvarchar(10) Declare cur_SV cursor For (select MaSV from SinhVien where Lop=@Lop) Open cur_SV Fetch Next from cur_SV into @MaSV While @@FETCH_STATUS = 0 Begin Exec XepLoaiSV @MaSV, @DTB output, @XepLoai output Update SinhVien set DTB = @DTB, XepLoai=@XepLoai Where MaSV = @MaSV Fetch Next from cur_SV into @MaSV End Close cur_SV Deallocate cur_SV
  34. 34. Bài gi ng tóm t t H qu n tr cơ s d li u 32 Set @SoSVGioi = (select count(*) from sinhvien where lop = @Lop and XepLoai = N’Gi i’) GoV. Hàm ngư i dùng (User Defined Functions)1. Khái ni m hàm ngư i dùng • Gi ng stored procedure: − mã l nh có th tái s d ng. − Ch p nh n các tham s input. − Biên d ch m t l n và t ó có th g i khi c n. • Khác stored procedure: − Ch p nh n nhi u ki u giá tr tr v (ch m t giá tr tr v ). − Không ch p nh n tham s output. − Khác v cách g i th c hi n. • Có th xem hàm ngư i dùng thu c v 3 lo i tùy theo giá tr tr v c a nó: − Giá tr tr v là ki u d li u cơ s (int, varchar, float, datetime…). − Giá tr tr v là Table có ư c t m t câu truy v n. − Giá tr tr v là table mà d li u có ư c nh tích lũy d n sau m t chu i thao tác x lý và insert.2. Khai báo và s d ng Khai báo hàm ngư i dùng Lo i 1: Giá tr tr v là ki u d li u cơ s Create function func_name ( {parameter_name DataType [= default ] } [,…n]) returns DataType As Begin … Return {value | variable | expression} End Ví d :
  35. 35. Bài gi ng tóm t t H qu n tr cơ s d li u 33 Create function SoLonNhat (@a int,@b int,@c int) return int As Begin declare @max int set @max = @a if @b > max set @max = @b if @c > max set @max = @c return @max End Lo i 2: Giá tr tr v là m t b ng có ư c t m t câu truy v n Create function func_name ( {parameter_name DataType [= default ] } [,…n]) returns Table As Return [ ( ]select_statement [ ) ] Go Ví d : Vi t hàm in danh sách các m t hàng c a m t mã ơn hàng cho trư c Create function DanhSachMatHang ( @MaDonHang varchar(10) ) returns Table As Return (Select MH.TenHang,MH.DonGia From ChiTietDH CT, MatHang MH Where CT.MaDH = @MaDonHang and CT.MaMH = MH.MaMH) Go Lo i 3: Giá tr tr v là m t b ng mà d li u có ư c nh tích lũy d n sau m t chu i thao tác x lý và insert.
  36. 36. Bài gi ng tóm t t H qu n tr cơ s d li u 34 Create function func_name ( {parameter_name DataType [= default ] } [,…n]) returns TempTab_name Table(Table_definition) As Begin … Return End GoVí d : Create function DanhSachLop () returns @DS Table(@MaLop varchar(10),@SoSV int) As --các x lý insert d li u vào b ng DS return GoLưu ý: Trong thân hàm không ư c s d ng các hàm h th ng b t nh (Built-in nondeterministic functions ), bao g m : − GETDATE − GETUTCDATE − NEWID − RAND − TEXTPTR − @@TOTAL_ERRORS, @@CPU_BUSY, @@TOTAL_READ, @@IDLE, @@TOTAL_WRITE, @@CONNECTIONS …S d ng hàm ngư i dùng Các hàm ngư i dùng ư c s d ng trong câu truy v n, trong bi u th c… phù h p ki u d li u tr v c a nó. Ví d : − Select dbo.SoLonNhat(3,5,7) − Select * from DanhSachLop() Lưu ý: − N u dùng giá tr m c nh c a tham s , ph i dùng t khóa default.
  37. 37. Bài gi ng tóm t t H qu n tr cơ s d li u 35 − Khi g i hàm lo i 1 (tr v giá tr cơ b n), ph i có tên owner c a hàm i kèm (ví d dbo.SoLonNhat(5,8,-10)).Thay i hàm ngư i dùng Thay t khóa create trong các l nh t o hàm b ng t khóa alterXóa hàm ngư i dùng Drop function tên_hàm_c n _xóa Ví d : Drop function DanhSachMatHang3. Các hàm h th ng Ngoài các hàm do ngư i dùng nh nghĩa, SQL Server còn cung c p các hàm xây d ng s n c a h th ng. Các hàm này cung c p ti n ích như x lý chu i, x lý th i gian, x lý s h c… Sinh viên tìm hi u thêm v các hàm này trong Books on-line và các tài li u tham kh o.• t o hàm h th ng c n ti n hành theo các bư c sau: T o hàm trong cơ s d li u Master Tên hàm b t u b i fn_functionName Thay i ch nhân c a hàm b ng th t c sp_changeobjectowner như sau: EXEC sp_changeobjectowner ‘fn_ functionName’ , ‘system_function_schema’ Ví d : T o hàm h th ng th c chuy n i m t bi n ki u ngày tháng sang ki u chu i. --T o hàm fn_doingay create function fn_doingay(@ngay datetime) returns char(10) as begin return convert(nchar(10),@ngay,103) end --Thay i ch nhân c a hàm EXEC sp_changeobjectowner fn_doingay , system_function_schema Sau l nh này hàm fn_doingay có th dùng ư c cho CSDL b t kỳ. Select manv, hoten, fn_doingay(ngaysinh) From nhanvienVI. Triggers và cài t ràng bu c d li u1. Gi i thi u • Trigger là m t lo i stored procedure c bi t có các c i m sau:
  38. 38. Bài gi ng tóm t t H qu n tr cơ s d li u 36 − T ng th c hi n khi có thao tác insert, delete ho c update trên d li u. − Thư ng dùng ki m tra các ràng bu c toàn v n c a CSDL ho c các qui t c nghi p v . − M t trigger ư c nh nghĩa trên m t b ng, nhưng các x lý trong trigger có th s d ng nhi u b ng khác. • X lý c a trigger thư ng c n s d ng n hai b ng t m: − Inserted: ch a các dòng v a m i ư c thao tác insert/ update thêm vào b ng. − Deleted: ch a các dòng v a m i b xóa kh i b ng b i thao tác update/delete. Lưu ý: update = delete dòng ch a giá tr cũ + insert dòng ch a giá tr m i − Inserted và deleted là các b ng trong b nh chính: C c b cho m i trigger. Có c u trúc gi ng như b ng (table) mà trigger nh nghĩa trên ó Ch t n t i trong th i gian trigger ang x lý. − N u thao tác insert/ delete/ update th c hi n trên nhi u dòng, trigger cũng ch ư c g i m t l n B ng inserted/ deleted có th ch a nhi u dòng.2. S d ng TriggerKhai báo trigger − Cú pháp: Create trigger tên_trigger On {tên_b ng|tên_view} {For| After| Instead of } { [delete] [,] [insert] [,] [update] } As { các l nh T-sql } Go rong ó: For | After: − Trigger ư c g i th c hi n sau khi thao tác delete/ insert/ update tương ng ã ư c th c hi n thành công: Các dòng m i ư c thêm ch a ng th i trong b ng d li u và b ng inserted. Các dòng b xoá ch n m trong b ng deleted ( ã b xoá kh i b ng d li u). − Có th x lý quay lui thao tác ã th c hi n b ng l nh rollback transaction. Instead of: − Trigger ư c g i th c hi n thay cho thao tác delete/ insert/ update tương ng:
  39. 39. Bài gi ng tóm t t H qu n tr cơ s d li u 37 Các dòng m i ư c thêm ch ch a trong b ng inserted. Các dòng b ch nh xoá n m ng th i trong b ng deleted và b ng d li u (d li u không b xoá). − Trigger Instead of thư ng ư c dùng x lý c p nh t trên khung nhìn.Lưu ý: − L nh t o trigger ph i là l nh u tiên trong m t query batch. − Trên m t b ng có th nh nghĩa nhi u trigger for/after cho m i thao tác nhưng ch có th nh nghĩa m t trigger instead of cho m i thao tác. − Không th nh nghĩa trigger instead of update/ delete trên b ng có cài t khóa ngo i d ng update cascade/ delete cascade. − Trong thân trigger, có th s d ng hàm Update(tên_c t) ki m tra xem vi c c p nh t ư c th c hi n trên c t nào. Update(tên_c t) = true : có th c hi n c p nh t trên c t tên_c tS d ng trigger cài t m t s lo i ràng bu cVí d 1- Ràng bu c liên thu c tính – liên quan h Cho CSDL: DatHang(MaPDH, NgayDH,…) GiaoHang(MaPGH, MaPDH, NgayGH,…) Ràng bu c: Ngày giao hàng không th nh hơn ngày t hàng tương ng B ng t m nh hư ng: Thêm Xóa S a DatHang - - + (NgayDH) GiaoHang + - + (NgayGH, MaPDH) C n cài t trigger cho thao tác s a trên b ng DatHang, và thêm/s a trên b ngGiaohang Trigger cho thao tác thêm và s a trên giao hàng: Create trigger tr_GH_ins_upd_NgayGH On GIAOHANG for insert, update As if update(MaPDH) or update (NgayGH) if exists(select * from inserted i, DatHang d where i.MaPDH = d.MaPDH
  40. 40. Bài gi ng tóm t t H qu n tr cơ s d li u 38 and i.NgayGH<d.NgayDH) begin raiserror (N‘Ngày GH không th nh hơn ngày H’,0,1) rollback tran endgoBài t p: Trigger cho thao tác s a trên t hàng.Ví d 2 – Ràng bu c toàn v n liên b Xét L QH: KetQua(MASV, MAMH, LANTHI, DIEM) T o trigger ki m tra RBTV: “Sinh viên ch ư c thi t i a 2 l n cho m t môn h c” • Xác nh b ng t m nh hư ng: Insert Delete Update KetQua + - + (MASV, MAMH) • Cài t trigger d a trên b ng t m nh hư ng: -- Tao trigger ung voi thao tac insert tren bang KetQua Create trigger trg_KetQua_insert on KetQua for insert as declare @SoLanThi int select @SoLanThi=count(*) from KetQua K, inserted I where I.MaSV=K.MaSV and I.MaMH = K.MaMH if @SoLanThi > 2 begin raiserror(So lan thi phai <= 2, 0,1) rollback transaction endBài t p: T o trigger ng v i thao tac Update trên b ng KetQua.Ví d 3: Trigger cho vi c th c hi n m t thao tác c p nh t d li u nào ó.Cho quan hCHI_TIET_HOA_DON(MaHD,STT, MaMH, SoLuong, DonGia, ThanhTien).
  41. 41. Bài gi ng tóm t t H qu n tr cơ s d li u 39 • Vi t trigger th c hi n c p nh t giá tr c a ThanhTien khi thêm m t chi ti t hóa ơn
  42. 42. Bài gi ng tóm t t H qu n tr cơ s d li u 40 Chương 4 B O M T VÀ AN TOÀN D LI UI. B o m t trong h qu n tr cơ s d li u1. Khái ni m cơ b n v b o m t Nh m b o v h th ng CSDL không b xâm nh p, ngư i qu n tr cơ s d li u ph iquy t nh cho phép hay không cho phép ngư i dùng truy c p và thao tác trên cơ s dli u d a vào nhi m v c a ngư i dùng trên h CSDL. Ngư i qu n tr thư ng d a trên n nt ng lý thuy t b o m t c a h cơ s d li u a ngư i dùng, nh m tìm ra phương pháp b om t theo úng v i nhu c u c a b o m t d li u. V i m c ích tăng tính b o m t d li u, SQL Server h tr các tính năng cho phépngư i qu n tr thi t l p cơ ch b o v cơ s d li u trong môi trư ng a ngư i dùng, baog m các y u t chính sau: o Vai trò c a ngư i dùng trong h th ng và cơ s d li u. o Quy n s d ng các ng d ng cơ s d li u trong SQL Server. o Quy n t o và s a i c u trúc các i tư ng CSDL. o Quy n truy c p, x lý d li u. Khi ăng nh p vào m t h th ng CSDL a ngư i dùng, ngư i s d ng c n ph i cungc p UserID (tài kho n) và Password (m t kh u). D a trên UserID h th ng có kh năngki m soát t t c các hành vi c a ngư i s d ng trên CSDL SQL Server. th c hi n ư c ch c năng này, ngư i qu n tr CSDL c n ph i thi t l p các quy nx lý và truy c p vào CSDL khi t o ra UserID, ngoài ra còn có m t s thu c tính khác c aSQL Server như quy n backup d li u, trao i d li u v i các ng d ng CSDL khác, … Khi nói n b o m t, ngư i qu n tr c n quan tâm n các thông tin sau c a ngư idùng: o M t ngư i dùng ch có m t UserID và m t m t kh u. o Th i gian có hi u l c c a m t kh u. o Gi i h n chi u dài c a m t kh u. o Gi i h n ngư i s d ng theo license hay m r ng. o Thông tin v ngư i s d ng. Khi t o ngư i s d ng, tên tài kho n c n rõ ràng, d hi u d g i nh , và không chophép các ký t c bi t, không nên có kho ng tr ng.2. L a ch n b o m t
  43. 43. Bài gi ng tóm t t H qu n tr cơ s d li u 41 Khi t o ra m t ngư i dùng (login user) trong SQL Server, có 3 cách tăng tính b om t cho ngư i s d ng ó:o Giao ti p v i h i u hành: s d ng UserID và Password c a h i u hành Windows ăng nh p SQL Server. V i lo i b o m t này, ngư i dùng truy c p vào m ng và có th s d ng CSDL SQL Server, ng th i m t ngư i dùng có UserID và Password có th s d ng tài nguyên trên m ng.o B o m t chu n: v i lo i này, ngư i s d ng có UserID và Password tách r i v i h i u hành m ng, ng v i lo i b o m t này ngư i s d ng ch có hi u l c trong CSDL SQL Server, không th s d ng tài nguyên trên m ng.o T ng h p c hai trư ng h p trên: m t s ngư i dùng s d ng quy n s d ng trên h i u hành và SQL Server, m t s khác ch s d ng quy n truy c p vào SQL Server.Lưu ý: Tài kho n ngư i dùng có giá tr trên SQL Server hi n hành, khi sang m t SQLServer khác ph i t o ra tài kho n ngư i dùng trên server ó.o SQL Server cung c p các ch c năng hay các th t c t o m i và qu n tr ngư i dùng CSDL SQL Server như sau: S d ng th t c sp_addlogin. S d ng công c Enterprise Manager.• S d ng th t c sp_addlogin Cú pháp sp_addlogin [ @loginame = ] login [ , [ @passwd = ] password ] [ , [ @defdb = ] database ] [ , [ @deflanguage = ] language ] [ , [ @sid = ] sid ] [ , [ @encryptopt = ] encryption_option ]trong ó các tham s có ý nghĩa như sau: @loginame: tên tài kho n s t o. @passwd: m t kh u cho ngư i dùng có tài kho n trên. @defdb: cơ s d li u m c nh khi ngư i dùng ăng nh p vào SQL Server. @deflanguage: ngôn ng m c nhiên cho ngư i dùng SQL Server. @sid: s nh n d ng h th ng khi ngư i dùng ăng nh p vào. @encryptopt: khi t o tài kho n ngư i dùng trong CSDL, các thông tin v tài kho n, m t kh u ư c lưu tr trong b ng sysusers c a CSDL Master, n u b n cung c p tham s skip_enctription thì không mã hoá m t kh u trư c khi lưu vào b ng sysusers, n u không cung c p tham s hay tr ng, SQL Server s mã hoá m t kh u trư c khi lưu tr .
  44. 44. Bài gi ng tóm t t H qu n tr cơ s d li u 42Ví d : t o ngư i dùng có tên ‘nam’, m t kh u ‘123’, cơ s d li u m c nh ‘QLKyNang’ Exec sp_addlogin ‘nam’, ‘123’, ‘QLKyNang’ - Thay i m t kh u sp_password [[ @old = ] old_password ,] { [ @new =] new_password } [ , [ @loginame = ] login ]3. Quy n ngư i dùng và qu n tr quy n ngư i dùng Quy n c a ngư i dùng ư c nh nghĩa như m c ngư i dùng có th hay không thth c thi trên CSDL, quy n ư c chia thành 4 lo i như sau: o Quy n truy c p vào SQL Server. o Quy n truy xu t vào CSDL. o Quy n th c hi n trên các i tư ng c a CSDL. o Quy n x lý d li u.C p phát quy n truy c p vào CSDLCú pháp: Use db_name Go sp_grantdbaccess [@loginame =] login [,[@name_in_db =] name_in_db [OUTPUT]] Các tham s : @loginame: tài kho n c a ngư i s d ng ăng nh p vào SQL Server @name_in_db: t o bí danh (tên khác) c a tài kho n ngư i dùng khi truy c p vào CSDL db_name ư c ch nh, n u không ch rõ CSDL mu n cho phép ngư i dùng truy c p thì ngư i dùng ư c c p quy n trên CSDL hi n hành.Lo i b quy n truy c p vào CSDL db_name c a ngư i dùng Use db_name Go sp_revokedbaccess [@loginame =] loginC p phát quy n th c thi trên cơ s d li u Sau khi c p phát quy n cho ngư i dùng truy c p vào CSDL, k ti p cho phép ngư idùng ó có quy n truy c p và x lý các i tư ng trong CSDL cũng như x lý d li utrên các i tư ng ó.Các quy n truy c p trên các i tư ng trong m t CSDL:
  45. 45. Bài gi ng tóm t t H qu n tr cơ s d li u 43 Quy n Di n gi iSELECT Cho phép ngư i s d ng nhìn th y d li u, n u ngư i s d ng có quy n này thì h ch có th th c thi nh ng phát bi u select truy v n d li u trên các b ng hay các view ư c cho phép.INSERT Cho phép ngư i s d ng thêm d li u, n u ngư i s d ng có quy n này, h có th th c hi n phát bi u Insert, i v i m t s h th ng CSDL khác, mu n th c thi phát bi u Insert, ngư i s d ng ph i có quy n Select, trong SQL Server quy n Insert không liên quan n quy n truy v n Select.UPDATE Quy n này cho phép ngư i s d ng ch nh s a d li u b ng phát bi u Update.DELETE Quy n này cho phép ngư i s d ng xóa d li u b ng phát bi u Delete.REFERENCE Cho phép ngư i s d ng thêm d li u vào b ng có khóa ngo i b ng phát bi u Insert, trong SQL Server quy n Insert không liên quan n quy n truy v n Select.EXECUTE Quy n này cho phép ngư i s d ng th c thi các th t c (SP) trong CSDL.Th t c c p quy n GRANT GRANT ALL | < PERMISSION> [, …n] ON <table ho c view name> [(<column name> [, … n])] | <stored ho c extension procedure name> TO <login or role name> [, … n] [WITH GRANT OPTION] [AS <role name>]Trong ó: t khóa ALL cho phép ngư i s d ng có t t c các quy n. PERMISSION làm t trong các quy n: SELECT, INSERT, UPDATE, DELETE, REFERENCE,EXECUTE. Ch rõ nh ng b ng d li u, view ho c th t c nào cho phép ngư i dùng truyc p và x lý.T ch i quy n truy v n và x lý d li u DENY ALL | < PERMISSION> [, …n] ON <table ho c view name> [(<column name> [, … n])] | <stored ho c extension procedure name>
  46. 46. Bài gi ng tóm t t H qu n tr cơ s d li u 44 TO <login or role name> [, … n] [Cascade]Lo i b quy n truy v n và x lý d li u REVOKE [ GRANT OPTION FOR ] { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } { TO | FROM } security_account [ ,...n ] [ CASCADE ] [ AS { group | role } ]Quy n t o i tư ng trong CSDL Trong CSDL có m t s i tư ng và các ch c năng như sao lưu d li u mà m ingư i s d ng trên CSDL tùy theo ch c năng và nhi m v c th ư c phép hay không ư c phép t o các i tư ng như table, view, stored procedure, … và t o CSDL.Các quy n t o các i tư ng như sau: Create Database. Create Table. Create View. Create Procedure. Create Rule. Create Default. Backup Database. Backup Log. phân quy n t o i tư ng trong CSDL cho ngư i dùng, trong SQL Server có ths d ng th t c GRANT như sau: GRANT < ALL | Statement [, … n]> TO <login ID> [, … n]
  47. 47. Bài gi ng tóm t t H qu n tr cơ s d li u 454. Vai trò c a ngư i s d ng trong SQL Server và cơ s d li uVai trò trên SQL Server: Vai trò (Role) Di n gi i sysadmin Có các quy n tương ương v i sa. serveradmin C u hình m t s tham s và t t server. setupadmin B gi i h n b t m t s ch c năng liên k t server và kh i ng m t s th t c. securityadmin Qu n lý ngư i dùng và t o CSDL. processadmin ư c phép d ng các giao tác ang th c hi n trên CSDL và m t s quá trình th c hi n khác c a SQL Server. dbcreator ư c phép t o CSDL. Diskadmin Qu n lý các t p tin liên quan n CSDL SQL Server.Vai trò trên CSDL: Vai trò Di n gi i V i vai trò này, ngư i s d ng (NSD) thu c nhóm s h u db_owner CSDL m i có th truy c p vào CSDL. db_accessadmin Th c hi n các ch c năng gi ng như securityadmin. NSD ư c phép select trên các b ng d li u c a các ngư i db_datareader dùng khác trong CSDL. NSD ư c phép insert, update, delete trên các b ng d li u db_datawriter c a các ngư i dùng khác trong CSDL. db_ddladmin NSD có th thêm hay ch nh s a các i tư ng c a CSDL. db_securityadmin NSD có quy n tương ương v i quy n c a securityadmin. db_backupoperator NSD có th th c hi n ch c năng backup d li u. db_denydareader Không cho phép s d ng phát bi u SELECT trên t t c các b ng d li u c a CSDL. db_denydawriter Không cho phép s d ng phát bi u INSERT, UPDATE, DELETE trên t t c các b ng d li u c a CSDL.S d ng các th t c h th ng t o m t role m i, thêm m t ngư i dùng vào m t role,lo i b ngư i s d ng ra kh i m t role. o T o m t role sp_addrole [ @rolename = ] role_name [ , [ @ownername = ] owner ] Trong ó:
  48. 48. Bài gi ng tóm t t H qu n tr cơ s d li u 46 @rolename: tên role m i @ownername: ch s h u c a role m i, m c nh là dbo Sau khi t o role m i c n ph i gán m t s quy n truy c p và x lý trên các b ng d li u nào ó trong CSDL cho role m i ó. o Thêm ngư i s d ng vào Role sp_addrolemember [ @rolename = ] role_name , [ @membername = ] ‘login_ID o Lo i b ngư i s d ng ra kh i m t role sp_droprolemember [ @rolename = ] role_name , [ @membername = ] login_ID II. B n sao d li u Ph n này s gi i thi u k thu t làm gi m lưu lư ng d li u giao d ch v i SQL Serverkhi ã c u hình nhi u Server trên m ng.1. Gi i thi u v nhân b n d li u Nhân b n d li u (Replication) là công c ư c s d ng sao chép m t ho c nhi uCSDL n m t ho c nhi u server (SQL Server) khác. Các Server ư c t trong m ngmáy tính n i b (LAN). Ngư i khai thác có th th c hi n truy c p n CSDL có trongServer ch a d li u ư c nhân b n. D li u gi a các máy ư c th c hi n ng b v inhau theo l ch ho c theo s ki n, khi có yêu c u. Nhân b n d li u có nh ng ưu i m sau: − D li u ư c lưu tr nhi u nơi, hi u qu trong vi c có nhi u ng d ng cùng truy c p, khai thác. − Thích h p v i các ng d ng phân tích d li u c a h th ng x lý giao d ch tr c tuy n (OLTP) trong kho d li u (Data warehouse). − Có th khai thác d li u khi không k t n i n Server. − Gi m thi u xung t do s lư ng l n các giao d ch trên m ng. − Là m t gi i pháp an toàn khi Server b l i ho c b o dư ng.Mô hình nhân b n.D ch v nhân b n d li u g m các thành ph n cơ b n sau: Publisher, Distributor,Subscribers, Publications, Articles, Subscriptions.− Publisher: là server cung c p d li u nhân b n cho các server khác. M t publisher có th thi t l p nhi u b d li u nhân b n (g i là publication).
  49. 49. Bài gi ng tóm t t H qu n tr cơ s d li u 47− Distributor: là server qu n lý các thông tin nhân b n, lưu tr d li u trong các giao d ch th c hi n nh n và chuy n d li u t Publisher n các Subscriber. Remote distributor là server tách r i kh i publisher và ư c c u hình là distributor. Local distributor là m t server ư c c u hình là Publisher và Distributor.− Subscriber: Là server nh n d li u nhân b n. Subscriber g n li n v i publication (là máy ch nh n d li u nhân b n c a m t b d li u c u hình nhân b n).− Article: Là m t b ng, t p d li u ho c i tư ng c a CSDL c u hình nhân b n.− Publication: Là m t t p g m m t ho c nhi u article.− Subscription: Là m t giao d ch yêu c u b n sao b d li u ho c các i tư ng c a CSDL th c hi n nhân b n. Trong m i giao d ch publisher th c hi n y (push subscription) d li u, subscriber th c hi n kéo (pull subscription).Nhân b n d li u ư c th c hi n theo nh ng mô hình cơ b n sau:− Central Publisher: Là mô hình Publisher và Distributor thi t l p trên m t máy. G m các mô hình sau: M t Publisher và m t Subscriber:
  50. 50. Bài gi ng tóm t t H qu n tr cơ s d li u 48 M t Publisher và nhi u Subscriber. Publisher và Subscriber ư c thi t l p trên m t máy:− Publisher và Distributor không thi t l p trên m t máy:− Republisher: Là mô hình Publisher xu t b n d li u n Subscriber, sau ó Subscriber ư c thi t l p là Publisher xu t b n d li u n Subscriber khác.
  51. 51. Bài gi ng tóm t t H qu n tr cơ s d li u 49 ư ng truy n gi a hai máy ư c thi t l p là Publisher có th t c th p, phù h p v iv trí xa nhau. Ví d mô hình gi a các vùng cách xa nhau:+ Central Subscriber: Là mô hình Subscriber thi t l p nh n d li u xu t b n t nhi uPublisher.
  52. 52. Bài gi ng tóm t t H qu n tr cơ s d li u 50Nh ng ki u nhân b n d li u.Có 3 ki u nhân b n d li u: Snaphot, Transaction, Merge.Snapshot replication: là ki u nhân b n th c hi n sao chép, phân tán d li u ho c các itư ng c a CSDL t i m t th i i m. Snapshot thư ng ư c s d ng cho nh ng tình hu ngsau: D li u thư ng là tĩnh, ít thay i. Nhân b n s lư ng d li u nh .Transaction replication: là ki u nhân b n mà b t u b ng nhân b n Snapshot, sau ó sth c hi n nhân giao d ch d li u theo các s ki n insert, update, delete và nh ng thay iliên quan n th c hi n th t c, khung nhìn ch m c. Nhân b n ki u này cho phép th chi n l c d li u t i Publisher, cho phép ngư i s d ng s a i d li u nhân b n t i
  53. 53. Bài gi ng tóm t t H qu n tr cơ s d li u 51subscriber và chuy n d li u ã s a i n Publisher ho c Subscriber khác, d li u s a i này có th coi là d li u ư c xu t b n. Nhân b n ki u này ư c th c hi n khi: Mu n s a i d li u ư c xu t b n chuy n n Subscriber, th i gian th c hi n theo giây, ho c t c th i. C n giao d ch trên toàn b h th ng nhân b n d li u (d li u có th chuy n nt t c các Subscriber ho c không chuy n n Subscriber nào). Subscriber thư ng xuyên k t n i v i Publisher.Merge replication: là ki u nhân b n d li u cho phép th c hi n nhân b n s a i d li utrên nhi u Subscriber, có th k t n i (online) ho c không k t n i (offline) n Publisher.D li u s ư c ng b theo l ch ho c theo yêu c u, d li u c p nh t có th i i m sau s ư c ch p nh n. Ki u nhân b n này th c hi n khi: Nhi u Subscriber có nhu c u c p nh t d li u và chuy n d li u c p nh t n Publisher ho c Subscriber khác. Subscriber yêu c u nh n ho c chuy n d li u khi offline, ng b d li u v i các Subscriber và Publisher sau.
  54. 54. Bài gi ng tóm t t H qu n tr cơ s d li u 522. C u hình Publisher và Distributor.Trư c khi th c hi n c u hình các máy thành Publisher hay Distributor ta ph i th c hi nch y d ch v SQL Server Agent trong ch c năng Service manager. Các bư c c u hìnhnhư sau:- Ch n Server c n c u hình -> Replication- Nh p ph i chu t -> Configure Publishing Subscription and Distribution...- Th c hi n theo các bư c: + Ch n thư m c Snapshot
  55. 55. Bài gi ng tóm t t H qu n tr cơ s d li u 53- t tên CSDL c a Distribution.- Ch n Server c u hình thành Publisher.
  56. 56. Bài gi ng tóm t t H qu n tr cơ s d li u 54- Ch n CSDL tham gia nhân b n, ki u nhân b n.- Ch n Server ư c c u hình là Subscriber c a Publisher ang thi t l p.- K t thúc.T o PublicationBư c này s th c hi n t o Publication, cách th c hi n như sau:+ Ch n Publication trong Replication c a Publisher.+ Nh n ph i chu t → ch n New Publication...
  57. 57. Bài gi ng tóm t t H qu n tr cơ s d li u 55+ Th c hi n theo các bư c: - Ch n CSDL c n xu t b n d li u ho c i tư ng. - Ch n ki u nhân b n (trong ví d này th c hi n ki u Merge).- Ch n phiên b n SQL Server c a Subscriber.- Ch n Article tham gia Publication.
  58. 58. Bài gi ng tóm t t H qu n tr cơ s d li u 56- t tên cho Publication.- K t thúc.T o Push Subscription. Bư c này th c hi n t o th t c y (push) t Publisher (Distributor trong ví dnày) n Subscriber, ư c th c hi n trên Publisher. Các bư c th c hi n như sau:
  59. 59. Bài gi ng tóm t t H qu n tr cơ s d li u 57- Ch n Publication c a Publisher -> Nh n ph i chu t -> Push new Subscription...- Ch n Subscriber.- Ch n CSDL trên Subscriber n u ã có, n u chưa có th c hi n ch n ch c năng t o m i. - Ch n l ch th c hi n ng b d li u. - K t thúc. Sau khi thi t l p xong trên Subscriber s có CSDL theo tên ã t o.T o Pull Subscription
  60. 60. Bài gi ng tóm t t H qu n tr cơ s d li u 58Bư c này th c hi n t o công c kéo d li u nhân b n t Publisher v Subscriber, ư cth c hi n trên Subscriber.- Ch n Subscription c a Subscriber → Nh n ph i chu t → New Pull Supcription...- Th c hi n theo các bư c: + Ch n Publication. + Ch n Agent tham gia k t n i Publisher.- Ch n CSDL ích.
  61. 61. Bài gi ng tóm t t H qu n tr cơ s d li u 59- Th c hi n ti p các bư c và k t thúc. N u ã t o Push Subscription v i m t CSDL s không ư c t o Pull Subscription v i CSDL ó.Th c hi n ng b d li uSau khi thi t l p theo các mô hình nhân b n xong, có th th c hi n ng b d li u b ngcách:- Th c hi n theo l ch.- Theo yêu c u: Ch n Subscription (Push ho c Pull) → Nh n ph i chu t → StartSynchronizing.Sau khi th c hi n xong d li u s ư c ng b gi a Publisher và Subscriber. Ngoài th chi n theo công c ta có th tìm hi u th c hi n nhân b n theo câu l nh T-SQL ho c StoredProcedure.III. Sao lưu và khôi ph c d li u1. Lý do ph i sao lưu và khôi ph c d li u Trong quá trình th c hi n qu n tr CSDL SQL Server thì m t s nguyên nhân sau ây b tbu c b n ph i xem xét n k thu t sao lưu và khôi ph c d li u: ĩa b h ng (ch a các t p tin CSDL). Server b h ng. Nguyên nhân bên ngoài (thiên nhiên, h a ho n, m t c p,...). User vô tình xóa d li u. B vô tình hay c ý làm thông tin sai l ch. B hack.2. Các lo i sao lưu d li u Sao lưu (Backup) d li u trong SQL Server g m các lo i sau: Full Database Backups: sao chép toàn b CSDL (các t p tin bao g m các b ng, khung nhìn, các i tư ng khác). Differential Database Backups: sao chép nh ng d li u thay i trong Data file k t l n full backup g n nh t. File or file group backups: sao chép m t file ơn hay file group. Differential File or File Group Backups: th c hi n như Differential Database nhưng copy ph n d li u thay i c a file ơn ho c file group. Transaction log backups: Ghi nh n t t c các transaction ch a trong transaction log file k t l n transaction log backup g n nh t. V i lo i sao lưu này ta có th khôi ph c d li u t i m t th i i m.3. Các mô hình khôi ph c d li u
  62. 62. Bài gi ng tóm t t H qu n tr cơ s d li u 60 Full Recovery model: Là mô hình ph c h i toàn b ho t ng giao d ch c a d li u (Insert, Update, Delete, ho t ng b i l nh bcp, bulk insert). V i mô hình này ta có th ph c h i d li u t i m t th i i m trong quá kh ã ư c lưu trong transaction log file. Bulk-Logged Recovery Model: Mô hình này ư c th c thi cho các thao tác bcp, bulk insert, create ch m c, writetext, updatetext, các ho t ng này ch nh t ký s ki n vào log bi t mà không sao lưu toàn b d li u, chi ti t như trong full recover. Các s ki n Insert, Update, Delete v n ư c nh t ký và khôi ph c bình thư ng. Simple Recovery Model: V i mô hình này b n ch ph c h i l i th i i m sao lưu g n nh t mà không theo th i i m khác trong quá kh . Cách t mô hình khôi ph c: - Ch n CSDL. - Nh n nút ph i chu t → Properties → Options → Recovery → ch n Model.Xét ví d sau: Gi s ta có m t CSDL ư c backup theo chi n lư c như hình v bên dư i Nhìn hình ta th y CSDL ư c l p l ch Full Database Backup vào ngày ch nh t,Differential Database Backup vào ngày th ba và th năm, còn Log Database Backup vào5 ngày trong tu n, ngày th sáu có s c v i CSDL, data file b h ng. V n t ra làph i ph c h i d li u và CSDL ho t ng bình thư ng. Ta ph i làm các bư c sau: Th c hi n Backup log file (gi s log file không b h ng). Khôi ph c Full Database c a ngày ch nh t. Ph c h i Differential Database c a ngày th năm. Khôi ph c Transaction log backup ngày th năm.
  63. 63. Bài gi ng tóm t t H qu n tr cơ s d li u 614. Sao lưu cơ s d li u (Backup Database) Trư c khi xem xét k thu t sao lưu CSDL, ta th ng nh t m t s thu t ng b ng ti ngAnh như sau: Backup: Là quá trình copy toàn b ho c m t ph n database, transaction log, file, file group thành l p m t backup set ư c ch a trong backup media (disk ho c tape) b ng cách s d ng m t backup device (tape drive name ho c physical filename). Backup Device: M t file v t lý ho c m t drive tape. Backup file: M t file ch a Backup set. Backup media: là Disk ho c tape. Backup set: M t b backup m t l n backup ơn ch a trên backup media. Các bư c th c hi n backup như sau: − Ch n CSDL c n backup. − Nh n ph i chu t → All Tasks → Backup Database… - Nh p các tham s , l a ch n ki u.5. Khôi ph c d li u (Restore Database) Là ch c năng th c hi n khôi ph c d li u ã sao lưu, tùy theo chi n lư c backup màngư i qu n tr có th ph c h i n th i i m nào, thu ư c b d li u trong quá kh nhưth nào. Khôi ph c d li u ư c th c hi n theo th t backup, thông tin này ư c lưu trtrong msdb. Các bư c th c hi n như sau: − Ch n m c Databases → Nh n nút ph i chu t → All Tasks → Restore Database… − Nh p tham s , ch n mô hình khôi ph c.IV. Qu n lý giao d ch1. Các khái ni m M t giao d ch là m t ơn v th c hi n chương trình truy xu t và có th c p nh t nhi um c d li u. M t giao d ch thư ng là k t qu c a s th c hi n m t chương trình ngư idùng ư c vi t trong m t ngôn ng thao tác d li u m c cao ho c m t ngôn ng l p trình(SQL, COBOL, PASCAL ...), và ư c phân cách b i các câu l nh (ho c các l i g i hàm)có d ng begin transaction và end transaction. Giao d ch bao g m t t c các ho t ng ư c th c hi n gi a begin và end transaction. m b o tính toàn v n c a d li u, ta yêu c u h CSDL duy trì các tính ch t sau c agiao d ch: • Tính nguyên t (Atomicity). Ho c toàn b các ho t ng c a giao d ch ư c ph n ánh úng n trong CSDL ho c không có gì c . • Tính nh t quán (consistency). S th c hi n c a m t giao d ch là cô l p (Không
  64. 64. Bài gi ng tóm t t H qu n tr cơ s d li u 62 có giao d ch khác th c hi n ng th i) b o t n tính nh t quán c a CSDL. • Tính cô l p (Isolation). Cho dù nhi u giao d ch có th th c hi n ng th i, h th ng ph i m b o r ng i v i m i c p giao d ch Ti, Tj , ho c Tj k t thúc th c hi n trư c khi Ti kh i ng ho c Tj b t u s th c hi n sau khi Ti k t thúc. Như v y m i giao d ch không c n bi t n các giao d ch khác ang th c hi n ng th i trong h th ng. • Tính b n v ng (Durability). Sau m t giao d ch hoàn thành, các thay i ã ư c t o ra i v i CSDL v n còn ngay c khi x y ra s c h th ng. Các tính ch t này thư ng ư c g i là các tính ch t ACID (Các ch cái u c a b ntính ch t). Ta xét m t ví d : m t h th ng ngân hàng g m m t s tài kho n và m t t pcác giao d ch truy xu t và c p nh t các tài kho n. T i th i i m hi n t i, ta gi thi t r ngCSDL n m trên ĩa, nhưng m t vài ph n c a nó ang n m t m th i trong b nh . Cáctruy xu t CSDL ư c th c hi n b i hai ho t ng sau: • READ(X): chuy n m c d li u X t CSDL n buffer c a giao d ch th c hi n ho t ng READ này. • WRITE(X): chuy n m c d li u X t buffer c a giao d ch th c hi n WRITE n CSDL. Trong h CSDL th c, ho t ng WRITE không nh t thi t d n n s c p nh t tr cti p d li u trên ĩa; ho t ng WRITE có th ư c lưu t m th i trong b nh và ư cth c hi n trên ĩa mu n hơn. Trong ví d , ta gi thi t ho t ng WRITE c p nh t tr cti p CSDL. Ti là m t giao d ch chuy n 50 t tài kho n A sang tài kho n B. Giao d ch này có th ư c xác nh như sau: Ti : READ(A); A:=A - 50; WRITE(A) READ(B); B:=B + 50; WRITE(B);Ta xem xét m i yêu c u trong ACID:• Tính nh t quán: òi h i nh t quán ây là t ng c a A và B là không thay ib i s th c hi n giao d ch. N u không có yêu c u nh t quán, ti n có th ư c t o ra hay m t b i giao d ch. D dàng ki m nghi m r ng n u CSDL nh t quán trư c m t th c hi n giao d ch, nó v n nh t quán sau khi th c hi n giao d ch. m b o tính nh t quán

×