6 ĐỊNH NGHĨA MỘT LƯỢC ĐỒ QUAN HỆ TRONG SQL - Tài Liệu Text

  1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Cơ sở dữ liệu >
6 ĐỊNH NGHĨA MỘT LƯỢC ĐỒ QUAN HỆ TRONG SQL

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

4. Kiểu INT hoặc INTEGER ký hiệu các giá trị nguyên. Kiểu SHORTINTcũng ký hiệu các giá trị nguyên nhưng có số các chữ số ít hơn.5. Các số dấu phảy động có thể biểu diễn bằng nhiều cách. Chúng ta sử dụngkiểu REAL hoặc FLOAT (hai kiểu này cùng nghĩa) đối với các số dấu phảyđộng. Độ chính xác cao hơn có thể nhận được với kiểu DOUBLEPRECISION. SQL cũng có các kiểu với các số thực dấu phảy cố định. Đó làkiểu DECIMAL(n,d) cho phép các giá trị chứa n chữ số thập phân, với vị trícủa dấu chấm thập phân được giả thiết là vị trí d kể từ bên phải sang. KiểuNUMERIC hầu như đồng nghĩa với DECIMAL.6. Ngày và giờ cũng có thể được biểu diễn nhờ các kiểu DATE và TIME.Các giá trị của chúng là các xâu ký tự dạng đặc biệt. Thực vậy, chúng ta cóthể biến đổi ngày và giờ thành kiểu xâu và ngược lại.1.6.2 Các khai báo bảng đơn giảnDạng đơn giản nhất của khai báo một lược đồ quan hệ bao gồm các từ khoáCREATE TABLE sau đó là tên của quan hệ và một danh sách các thuộc tínhcùng với kiểu của chúng được đặt trong dấu ngoặc.Ví dụ 1.37 Lược đồ quan hệ ĐƠNVỊ biểu thị trong SQL như sau:1)CREATE TABLE ĐƠNVỊ (2)MãsốĐV INT,3)TênĐV VARCHAR(15),4)MãsốNQL CHAR(9),5)Ngàybắtđầu DATE );Thuộc tính đầu tiên, MãsốĐV là một số nguyên. Thuộc tính thứ hai là xâuký tự có độ dài nhỏ hơn hoặc bằng 15. Thuộc tính thứ ba là một xâu có độdài cố định gồm 9 ký. Như vậy nếu có một mã số người quản lý không có đủ9 ký tự thì nó sẽ được hệ thống đưa thêm vào một số khoảng trống, còn mộtmã số có quá 9 ký tự thì sẽ bị chặt bớt đi. Cuối cùng, thuộc tính Ngàybắtđầukiểu DATE. Trong SQL chuẩn không có kiểu này, chúng ta thay nó bằngCHAR(10).1.6.3 Sửa đổi các lược đồ quan hệ46 - Chúng ta có thể loại bỏ một quan hệ R bằng lệnh SQL:DROP TABLE R;Quan hệ R sẽ không còn là một phần của lược đồ cơ sở dữ liệu và chúng takhông còn có thể truy cập đến các bộ giá trị của nó nữa.- Thông thường chúng ta hay sửa đổi lược đồ của một quan hệ đã tồn tạihơn là xoá bỏ một quan hệ là một phần của cơ sở dữ liệu tồn tại lâu dài.Những sự sửa đổi này được thực hiện bằng một lệnh bắt đầu với từ khoáALTER TABLE và tên của quan hệ. Sau đó chúng ta có nhiều tuỳ chọn,quan trọng nhất là1. ADD sau đó là một tên cột và kiểu của nó.2. DROP sau đó là một tên cột.Ví dụ 38: Chúng ta có thể thêm vào quan hệ ĐƠNVỊ Sốđiệnthoại và bỏ đithuộc tính Ngàybắtđầu bằng các lệnh sau:DROP TABLE ĐƠNVỊ ADD Sốđiẹnthoại CHAR(10);DROP TABLE ĐƠNVỊ DROP Ngàybắtđầu ;Kết quả là quan hệ ĐƠNVỊ được thêm vào một thuộc tính Sốđiệnthoại, đólà một xâu ký tự có độ dài cố định gồm 10 ký tự. Trong quan hệ hiện tại, cácbộ giá trị đều có các thành phần đối với Sốđiệnthoại nhưng chúng ta biếtrằng không có số điện thoại nào được đặt vào đó. Như vậy, giá trị của mỗithành phần sẽ là NULL. Sau đây chúng ta sẽ thấy có khả năng chọn một giátrị “ngầm định” thay cho NULL đối với các giá trị không biết.1.6.4 Các giá trị ngầm địnhKhi chúng ta tạo ra hoặc sửa đổi các bộ giá trị, đôi lúc chúng ta không cócác giá trị cho tất cả các thành phần. Như ví dụ ở trên, khi ta thêm một cộtvào một quan hệ, các bộ giá trị đang tồn tại sẽ không có giá trị cho thuộctính đó và NULL được sử dụng để thay thế cho giá trị “thực”. Tuy nhiênSQL còn cung cấp khả năng chọn giá trị ngầm định, một giá trị xuất hiệntrong cột mỗi khi không các giá trị khác được biết.Nói chung, bất kỳ chỗ nào chúng ta khai báo một thuộc tính và kiểu dữ liệucủa nó chúng ta có thể thêm vào từ khoá DEFAUL và một giá trị thích hợp.47 Giá trị đó hoặc là NULL hoặc là một hằng. Một số các giá trị khác cũngđược hệ thống cung cấp như là thời gian hiện tại, hoặc một tuỳ chọn.Vídụ 39 Xét ví dụ 37 ở trên. Chúng ta có thể sử dụng ký tự ? làm ngầm địnhcho MãsốNQL, sử dụng ‘0000-00-00’ làm ngầm định cho Ngàybắtđầu, taviết như sau:4) MãsốNQL CHAR(9) DEFAULT ‘?’,5) Ngàybắtđầu DATE DEFAULT DATE’0000-00-00’1.6.5 Các chỉ sốMột chỉ số trên một thuộc tính A của một quan hệ là một cấu trúc dữ liệulàm có hiệu quả việc tìm các bộ giá trị có giá trị cố định đối với thuộc tínhA. Các chỉ số thường giúp đỡ với các truy vấn trong đó thuộc tính A củachúng ta được so sánh với một hằng, ví dụ A = 3 hoặc A AS < định nghĩa khung nhìn>;Vídụ 40: Giả sử chúng ta muốn có một khung nhìn là một phần của quan hệNHÂNVIÊN, chứa MãsốNV, Họđệm,Tên, Lương và MãsốĐV của các nhânviên có địa chỉ là ‘Hànội’. Chúng ta có thể định nghĩa khung nhìn này bằng:50 1)CREATE VIEW NVHÀNỘI AS2)SELECT MãsốNV, Họđệm,Tên, Lương, MãsốĐV3)FROM NHÂNVIÊN4)WHERE Địachỉ = ‘Hà nội’ ;Theo định nghĩa này, tên của khung nhìn là NVHÀNỘI, các thuộc tính củakhung nhìn là MãsốNV, Họđệm,Tên, Lương, Địachỉ, MãsốĐV. Định nghĩacủa khung nhìn là từ dòng 2 đến dòng 4).1.7.2 Truy vấn các khung nhìnQuan hệ NVHÀNỘI không chứa các bộ theo nghĩa thông thường. Đúnghơn là nếu chúng ta truy vấn NVHÀNỘI, các bộ thích hợp sẽ nhận được từbảng cơ sở NHÂNVIÊN, vì vậy truy vấn có thể được trả lời. Kết quả làchúng ta có thể hỏi NVHÀNỘI hai lần cùng một truy vấn và nhận được cáctrả lời khác nhau. Lý do là ở chỗ, mặc dù chúng ta không thay đổi địnhnghĩa của khung nhìn NVHÀNỘI nhưng bảng cơ sở NHÂNVIÊN có thể bịthay đổi trong thời gian giữa hai lần truy vấn.Vídụ 41 Chúng ta có thể truy vấn khung nhìn NVHÀNỘI như thể nó là mộtbảng được lưu giữ, chẳng hạn:SELECT TênFROM NVHÀNỘIWHERE MãsốĐV = 4 ;Định nghĩa của khung nhìn NVHÀNỘI được sử dụng để biến đổi truy vấn ởtrên thành truy vấn mới chỉ nhắm đến bảng cơ sở NHÂNVIÊN. Truy vấntrên tương đương với truy vấnSELECT TênFROM NHÂNVIÊNWHERE Địachỉ = ‘Hà nội’ AND MãsốĐV = 4 ;Ví dụ 42 Có thể viết các truy vấn chứa cả bảng lẫn khung nhìn, chẳng hạn:SELECT TênĐV, Tên51 FROM NVHÀNỘI, ĐƠNVỊWHERE NVHÀNỘI.MãsốĐV = ĐƠNVỊ.MãsốĐVTruy vấn này đòi hỏi tên của đơn vị và tên của các nhân viên có địa chỉ tạiHà nội.Vídụ 43 Chúng ta hãy xét một truy vấn phức tạp hơn được sử dụng để địnhnghĩa một khung nhìn.CREATE VIEW NVĐV ASSELECT TênĐV, TênFROM NHÂNVIÊN, ĐƠNVỊWHERE NHÂNVIÊN.MãsốĐV = ĐƠNVỊ.MãsốĐV;Chúng ta có thể truy vấn khung nhìn này như thể nó là một quan hệ đượclưu trữ, ví dụSELECT TênFROM NVĐVWHERE Tên = ‘Thanh’;Truy vấn ở trên tương đương với truy vấn:SELECT TênFROM NHÂNVIÊN, ĐƠNVỊWHERE (NHÂNVIÊN.MãsốĐV = ĐƠNVỊ.MãsốĐV)AND (Tên = ‘Thanh’);1.7.3 Đặt tên lại các thuộc tínhĐôi khi chúng ta thích đặt tên mới cho các thuộc tính của khung nhìn. Đểlàm điều đó, chúng ta chỉ ra các thuộc tính của khung nhìn bằng cách liệt kêchúng ở trong cặp dấu ngoặc và đặt ở sau tên của khung nhìn trong lệnhCREATE VIEW. Ví dụ, chúng ta có thể viết lại định nghĩa khung nhìn ở vídụ 1.43 như sau:CREATE VIEW NVĐV(Tênđơnvị, Tênnhânviên) AS52 SELECT TênĐV, TênFROM NHÂNVIÊN, ĐƠNVỊWHERE NHÂNVIÊN.MãsốĐV = ĐƠNVỊ.MãsốĐV;Hai khung nhìn là hoàn toàn như nhau nhưng các thuộc tính được đặt tênlại, Tênđơnvị và Tênnhânviên thay cho TênĐV và Tên.1.7.4 Sửa đổi các khung nhìnTrong nhiều trường hợp chúng ta không thể thực hiện một lệnh chèn, xoáhoặc cập nhật đối với một khung nhìn bởi vì khung nhìn không giống nhưmột bảng cơ sở. Tuy nhiên, đối với các khung nhìn tương đối đơn giản, gọilà các khung nhìn cập nhật được, có khả năng chuyển đổi cập nhật củakhung nhìn thành một cập nhật tương đương trên một bảng cơ sở và phépcập nhật có thể được thực hiện đối với bảng cơ sở. Điều kiện để khung nhìncập nhật được là các khung nhìn được định nghĩa bằng phép chọn một sốthuộc tính từ một quan hệ R (quan hệ này cũng có thể là một khung nhìn cậpnhật được). Hai điểm kỹ thuật quan trọng:• Mệnh đề WHERE không được bao hàm R trong một truy vấn con• Danh sách trong mệnh đề SELECT phải chứa đủ các thuộc tính saocho với mỗi bộ được chèn vào khung nhìn, chúng ta có thể điền cácthuộc tính khác vào với các giá trị null hoặc ngầm định thích hợp vàcó một bộ của quan hệ cơ sở sẽ được tạo nên từ bộ được chèn vàocủa khung nhìn.Ví dụ 44 Giả sử chúng ta cố gắng chèn vào khung nhìn NVHÀNỘI một bộ:INSERT INTO NVHÀNỘIVALUES (‘NV065’, ‘Nguyễn Đình’, ‘Thi’, 4500, 4);Khung nhìn NVHÀNỘI hầu như thoả mãn các điều kiện cập nhật được củaSQL bởi vì khung nhìn chỉ yêu cầu một số thành phần của các bộ của bảngcơ sở NHÂNVIÊN. Chỉ có một vấn đề là vì thuộc tính Địachỉ của bảngNHÂNVIÊN không phải là một thuộc tính của khung nhìn, bộ giá trị màchúng ta chèn vào NHÂNVIÊN sẽ có giá trị NULL chứ không phải là ‘Hà53 nội’ như là giá trị của nó cho Địachỉ. Bộ giá trị này không thoả mãn điềukiện là địa chỉ của nhân viên là Hà nội.Như vậy, để làm cho khung nhìn NVHÀNỘI cập nhật được, chúng ta sẽthêm thuộc tính Địachỉ cho mệnh đề SELECT của nó, mặc dù rõ ràng là địachỉ nhân viên là Hà nội. Định nghĩa lại của khung nhìn NVHÀNỘI là:1)CREATE VIEW NVHÀNỘI AS2)SELECT MãsốNV, Họđệm,Tên, Lương, Địachỉ,MãsốĐV3)FROM NHÂNVIÊN4)WHERE Địachỉ = ‘Hà nội’ ;Sau đó, chúng ta viết lệnh chèn vào khung nhìn cập nhật đượcNVHÀNỘInhư sau:INSERT INTO NVHÀNỘIVALUES (‘NV065’, ‘Nguyễn Đình’, ‘Thi’, 4500, 4);Thực hiện lệnh chèn, chúng ta tạo ra một bộ của NHÂNVIÊN sinh từ mộtbộ của khung nhìn được chèn vào khi định nghĩa khung nhìn được áp dụngcho NHÂNVIÊN. Các thuộc tính khác không xuất hiện trong khung nhìnchắc chắn tồn tại trong bộ NHÂNVIÊN được chèn vào. Tuy nhiên chúng takhông thể suy ra giá trị của chúng. Trong kết quả bộ mới của NHÂNVIÊNphải có trong các thành phần đối với mỗi thuộc tính này các giá trị mặc địnhthích hợp hoặc NULL hoặc một ngầm định nào đó đã được khai báo chothuộc tính.Chúng ta cũng có thể loại bỏ ra khỏi một khung nhìn cập nhật được. Lệnhxoá, cũng như lệnh chèn, được thực hiện thông qua một quan hệ nền R vàgây ra việc loại bỏ một bộ của R gây ra bộ được xoá của khung nhìn.Vídụ 45: Giả sử chúng ta muốn xoá khỏi khung nhìn cập nhật đượcNVHÀNỘI tất cả các bộ có tên chứa từ ‘an’. Ta có thể viết lệnh xoá nhưsau:DELETE FROM NVHÀNỘIWHERE Tên LIKE “%an%” ;54 Lệnh xoá này được chuyển thành một lệnh xoá tương đương trên bảng cơ sởNHÂNVIÊN; chỉ khác ở chỗ là điều kiện định nghĩa khung nhìn NVHÀNỘIđược thêm vào các điều kiện của mệnh đề WHERE. Kết quả là lệnh xoá nhưsau:DELETE FROM NHÂNVIÊNWHERE Tên LIKE “%an%” AND Địachỉ = ‘Hà nội’;Tương tự, một lệnh cập nhật trên một khung nhìn cập nhật được được thựchiện thông qua quan hệ nền. Như vậy lệnh cập nhật khung nhìn có tác dụngcập nhật tất cả các bộ của quan hệ nền sinh ra các bộ được cập nhật trongkhung nhìn.Ví dụ 46: Lệnh cập nhật khung nhìnUPDATE NVHÀNỘISET Lương = 4500WHERE MãsốNV = ‘NV002’;được chuyển thành lệnh cập nhật bảng cơ sở:UPDATE NHÂNVIÊNSET Lương = 4500WHERE MãsốNV = ‘NV002’ AND Địachỉ = ‘Hà nội’;Loại cập nhật một khung nhìn cuối cùng là loại bỏ nó. Lệnh cập nhật nàycó thể thực hiện dù khung nhìn có cập nhật được hay không. Lệnh DROPthông thường là:DROP VIEW NVHÀNỘI ;Chú ý rằng lệnh này xoá định nghĩa của khung nhìn vì vậy chúng ta khôngthể tiếp tục truy vấn hoặc cập nhật đối với khung nhìn này nữa. Tuy nhiên,việc xoá bỏ một khung nhìn không làm ảnh hưởng đến một bộ nào của quanhệ nền NHÂNVIÊN. Ngược lạiDROP TABLE Movie55 sẽ không chỉ xoá bỏ bảng NHÂNVIÊN, nó cũng sẽ làm cho khung nhìnNVHÀNỘI trở nên vô dụng bởi vì một truy vấn sử dụng nó sẽ tham chiếuđến một quan hệ NHÂNVIÊN không tồn tại.1.7.5 Giải thích các truy vấn có chứa các khung nhìnĐể giải thích các truy vấn khung nhìn, chúng ta lần theo cách một truy vấncó chứa khung nhìn được xử lý như thế nào.Tư tưởng cơ bản được minh hoạ ở hình vẽ dưới đây (hình 3). Một truy vấnQ được biểu thị bằng cây biểu thức trong đại số quan hệ. Cây biểu thức nàysử dụng các quan hệ là các khung nhìn làm lá. Trong hình vẽ cây có hai lá,đó là các khung nhìn V và W. Để giải thích Q theo thuật ngữ của các bảngcơ sở, chúng ta tìm các định nghĩa của V và W. Các định nghĩa này cũngđược biểu thị bằng các cây biểu thức trong đại số quan hệ. Trong hình 3 (ởbên phải) chúng ta thay các lá V và W bằng các định nghĩa của các khungnhìn đó. Cây kết quả là một truy vấn trên các bảng cơ sở tương đương vớitruy vấn gốc trên các khung nhìn.QVWHình 3: Thay thế các định nghĩa khung nhìn cho các tham chiếu khungnhìnVí dụ 47: Ta xét khung nhìn và truy vấn được định nghĩa như sau:1)CREATE VIEW NVHÀNỘI AS2)SELECT MãsốNV, Họđệm,Tên, Lương, MãsốĐV3)FROM NHÂNVIÊN4)WHERE Địachỉ = ‘Hà nội’ ;56

Xem Thêm

Tài liệu liên quan

  • Giao_trinh_SQL_server pptxGiao_trinh_SQL_server pptx
    • 177
    • 1,643
    • 19
  • Kiểm toán là công cụ hỗ trợ doanh nghiệp làm đúng Kiểm toán là công cụ hỗ trợ doanh nghiệp làm đúng
    • 2
    • 335
    • 0
  • Kiểm tra thông tin tài chính trên cơ sở các thủ tục thỏa thuận trước Kiểm tra thông tin tài chính trên cơ sở các thủ tục thỏa thuận trước
    • 2
    • 581
    • 0
  • Làm rõ phương pháp xác định và hạch toán đối với các hình thức liên doanh theo Làm rõ phương pháp xác định và hạch toán đối với các hình thức liên doanh theo
    • 3
    • 455
    • 0
  • Lập, trình bày và công khai báo cáo tài chính đối với các công ty đại chúng ở Việt Nam Lập, trình bày và công khai báo cáo tài chính đối với các công ty đại chúng ở Việt Nam
    • 3
    • 435
    • 0
  • Lựa chọn tiêu thức phân bổ chi phí sản xuất chung trong doanh nghiệp tổ chức sản xuất Lựa chọn tiêu thức phân bổ chi phí sản xuất chung trong doanh nghiệp tổ chức sản xuất
    • 3
    • 3
    • 23
  • Mẫu đơn đặt hàng Mẫu đơn đặt hàng
    • 3
    • 9
    • 48
  • Mẫu hợp đồng mua bán hàng hóa Mẫu hợp đồng mua bán hàng hóa
    • 6
    • 32
    • 502
  • Một số đề thi mẫu tốt nghiệp môn kế toán Một số đề thi mẫu tốt nghiệp môn kế toán
    • 11
    • 760
    • 0
  • Một số vấn đề về các chỉ tiêu trên báo cáo tài chính hợp nhất Một số vấn đề về các chỉ tiêu trên báo cáo tài chính hợp nhất
    • 3
    • 500
    • 1
  • Một số vận dụng kế toán quản trị trong quản lý trang trại Một số vận dụng kế toán quản trị trong quản lý trang trại
    • 3
    • 409
    • 0
Tải bản đầy đủ (.doc) (177 trang)

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

(1.16 MB) - Giao_trinh_SQL_server pptx-177 (trang) Tải bản đầy đủ ngay ×

Từ khóa » Dấu Chấm Trong Sql