intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Chương 6 Quản lý bảng trong SQL Server

Chia sẻ: Hoang Minh Minh | Ngày: | Loại File: PDF | Số trang:20

115
lượt xem
13
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong bài trước, ta đã xem xét những tính năng của hệ quản trị CSDL quan hệ (RDBMS) SQL Server. Chúng ta đã biết các cách khác nhau để kích hoạt Enterprise Manager, cách khởi động và dừng SQL Server. Việc đặt cấu hình cho SQL Server với nhiều tùy chọn khác nhau cũng là phần quan trọng trong bài trước.

Chủ đề:
Lưu

Nội dung Text: Chương 6 Quản lý bảng trong SQL Server

  1. SQL Server Chương 6 Quản lý bảng trong SQL Server Mục tiêu: Kết thúc chương, học viên có thể: Nắm được các bước tạo một bảng Hiểu được các kiểu dữ liệu trong SQL Server Định nghĩa được các ràng buộc toàn vẹn và hiểu được ý nghĩa của các ràng buộc Biết được cách cập nhật và xoá một bảng bằng cách sử dụng T-SQL và Enterprise Manager Hiểu được các khái niệm liên quan đến ràng buộc và các đối tượng ràng buộc 6.1 Giới thiệu Trong bài trước, ta đã xem xét những tính năng của hệ quản trị CSDL quan hệ (RDBMS) SQL Server. Chúng ta đã biết các cách khác nhau để kích hoạt Enterprise Manager, cách khởi động và dừng SQL Server. Việc đặt cấu hình cho SQL Server với nhiều tùy chọn khác nhau cũng là phần quan trọng trong bài trước. Chúng ta cũng đã xem xét cách tạo, xóa và copy CSDL. 6.1.1 CSDL và bảng CSDL Một bảng là một tập hợp các bản ghi có quan hệ với nhau được xếp thành các hàng và cột. Mỗi CSDL bao gồm một số bảng, mỗi bảng chứa một tập hợp dữ liệu liên quan. Các bảng trong một CSDL có quan hệ với nhau. Chúng ta hãy xem xét một CDSL dùng để lưu trữ dữ liệu của một “Hệ thống đặt vé máy bay”. Những thông tin chi tiết của các hành khách, người đã đặt vé, có thể được lưu trong bảng Reservation. Trong khi những thông tin về việc huỷ vé có thể được lưu trong bảng “Cancellation”. Hơn nữa, ngày và giờ của các chuyến bay có thể được lưu trong một bảng khác. Danh sách vé cũng được lưu trong một bảng khác. Tất cả các bảng liên quan đến đặt chỗ vé bay được lưu trong một CSDL “Airlines”. Mặt khác, bảng chứa thông tin về việc nghỉ phép của nhân viên của hãng hàng không không phù hợp với CSDL này, vì nó không liên quan gì đến việc đặt vé máy bay. 6.1.2 Thiết kế bảng và CSDL Một việc rất quan trọng khi thiết kế CSDL là phải tạo được mô hình CSDL mức khái niệm (còn gọi là “blueprint” hay “Conceptual model”). Mô hình bản thiết kế CSDL phải đảm bảo CSDL đó có thể đáp ứng được những nhu cầu hiện tại và sau này của doanh nghiệp. Người thiết kế CSDL phải nhớ rằng mô hình CSDL mức khái niệm không phụ thuộc vào mô hình CSDL (dù là mô hình phân cấp, mô hình mạng hay mô hình quan hệ). Thêm nữa, Mô hình CSDL mức khái niệm của CSDL cũng không được phụ thuộc vào ứng dụng, phần cứng, phần mềm để đảm bảo chỉ có những thông tin cần thiết và đúng đắn được lưu trữ trong CSDL. Quản lý bảng trong SQL Server 99
  2. SQL Server Khi thiết kế CSDL, ta phải xác định những bảng nào cần thiết, mỗi bảng sẽ lưu trữ dữ liệu nào, ai được phép truy nhập vào từng bảng, … Ở phần tạo và làm việc với bảng, ta sẽ xem xét chi tiết hơn.. Cách hiệu quả nhất để định nghĩa bảng là tạo ra tất cả những gì cần thiết cho bảng tại thời điểm tạo bảng, bao gồm các ràng buộc dữ liệu, và một số các thành phần khác. Tuy nhiên trong một số trường hợp bạn cũng có thể tạo ra một bảng có thể chưa đầy đủ, thêm một ít dữ liệu vào đó, sau đó thử làm việc trên bảng đó. Cách thức này giúp chúng ta nhận thấy những kiểu giao dịch nào thường xuyên xẩy ra và những kiểu dữ liệu nào thường xuyên được nhập vào bảng trước khi chúng ta chấp nhận thiết kế đó của bảng. Chúng ta nên phác thảo cấu trúc của bảng trên giấy trước khi tạo bảng. Có một vài điểm cần nhớ khi tạo bảng là:  Bảng sẽ chứa những kiểu dữ liệu gì  Các trường trong bảng và kiểu dữ liệu của từng trường (và kích thước của trường nếu cần thiết)  Những trường nào chấp nhận giá trị Null?  Tên trường Chú ý : NULL là một mục mà không được gán giá trị một cách tường minh. NULL không phải bằng với 0 hoặc trắng. Vì vậy hai giá trị Null là không bằng nhau.  Trường nào cần đặt giá trị mặc định và xác định các điều kiện để đảm bảo dữ liệu hợp lệ cho trường.  Trường nào cần đặt index và xác định loại index phù hợp cho trường đó. Xác định những trường nào là khóa chính, trường nào là khóa ngoại. Giá trị mặc định, khoá chính, khoá ngoại sẽ được giới thiệu chi tiết trong phần sau của chương này. 6.1.3 Chuẩn hoá dữ liệu Chuẩn hóa là quá trình loại bỏ những dữ liệu dư thừa (hoặc không mong muốn) từ dữ liệu đầu vào. Hãy xem CSDL như một tủ quần áo. Chúng ta nên phân loại chúng như: quần, áo, cà vạt, tất,.. và xếp chúng ở những ngăn riêng biệt. Nếu chúng ta để tất không thành đôi ở nhiều nơi khác nhau, chúng ta sẽ không bao giờ tìm thấy một đôi để đi vào buổi sáng hôm sau. Nếu chúng ta để lẫn cả cà vạt và tất, ta cũng sẽ rất khó tìm và đi chúng trong một thời gian ngắn. Cho nên tất cả dữ liệu phải được nhóm vào nhau một cách phù hợp, giống như tất phải để thành đôi. Không nên để bất kì dữ liệu không phù hợp vào trong bảng. Dữ liệu liên quan với nhau cũng phải được đặt vào một bảng thích hợp. Chuẩn hóa là một kĩ thuật giúp người dùng nhóm các dữ liệu liên quan với nhau và đặt dữ liệu đó vào trong một bảng phù hợp. Do đó, chúng ta phải chuẩn hóa CSDL trước khi bắt đầu làm việc với nó. Có một số dạng chuẩn hóa đã được công nhận và được sử dụng rộng rãi. Một CSDL chuẩn hoá nên có những đặc trưng sau: Quản lý bảng trong SQL Server 100
  3. SQL Server  Mỗi bảng phải có một trường khoá.  Không được có các trường trùng nhau..  Mỗi bảng phải chứa thông tin về một thực thể đơn. Thực thể có thể là một địa điểm, đối tượng, sự kiện hoặc một con người. Ví dụ: Các quyển sách, Giáo viên, Nhân viên.  Mỗi trường trong bảng phải phụ thuộc vào khoá chính.  Tất cả các trường không là khoá chính phải độc lập với nhau. Khi nào thì dùng chuẩn hoá? Chuẩn hóa được áp dụng trong những tình huống sau:  Dữ liệu nhiều và nằm rải rác.  Không có nhóm dữ liệu được định nghĩa.  Dữ liệu quá phức tạp.  Bước đầu tiên để xây dựng ứng dụng CSDL. 6.2 Tạo các bảng CSDL Sau khi cấu trúc bảng đã được xác định, bảng có thể được tạo. Dữ liệu thường được lưu trong các bảng cố định. Bất kì người dùng nào có quyền phù hợp đều có thể sử dụng bảng, bảng sẽ tồn tại trong CSDL cho đến khi chúng bị xóa đi. 6.2.1 Tạo bảng với Enterprise Manager hoặc T-SQL Một bảng có thể được tạo bằng cách dùng:  Enterprise Manager hoặc  Các câu lệnh Transact-SQL trong Query Analyzer Cú pháp để tạo một bảng sử dụng T-SQL là: CREATE TABLE ( ) Ví dụ: CREATE TABLE Airlines_Master (Aircode CHAR(2), Airline_name VARCHAR(15)) Chúng ta có thể tạo một bảng mới với Enterprise Manager bằng cách chọn CSDL và sau đó chọn các lựa chọn Action, New và Table. Quản lý bảng trong SQL Server 101
  4. SQL Server Figure 6.1: Tạo một bảng mới Khi chọn Table, cửa sổ thiết kế hiện lên để ta có thể nhập vào cấu trúc của bảng. Giả sử chúng ta muốn tạo một bảng tên là ‘Airlines_master’ có hai trường ‘Air code’ và ‘Airline_name’. Chúng ta nhập vào tên trường, độ rộng và các kiểu dữ liệu cho hai trường này và lưu bảng với tên là Airlines_master. Figure 6.2: Adding fields to a table 6.2.2 Kiểu dữ liệu và ràng buộc toàn vẹn Kiểu dữ liệu là một trong những điều quan trọng nhất của T-SQL. Dữ liệu trong một bảng của SQL Server 2000 được định nghĩa bởi kiểu dữ liệu của nó. Nó chỉ rõ loại thông tin nào có thể được lưu trong một cột. Khi tạo bảng, đầu tiên chúng ta phải xác định kiểu dữ liệu cho từng trường trong bảng. Kiểu dữ liệu xác định những giá trị cho phép lưu vào trường. Ví dụ, nếu chúng ta chỉ muốn lưu tên vào Quản lý bảng trong SQL Server 102
  5. SQL Server một trường, chúng ta có thể đặt kiểu dữ liệu ‘character’ cho trường đó. Nếu chúng ta muốn một trường nào đó chỉ lưu các giá trị số, ta đặt kiểu dữ liệu của trường đó là ‘numeric’. Các kiểu dữ liệu hệ thống là những kiểu dữ liệu do SQL Server 2000 cung cấp. Những kiểu dữ liệu này đều chỉ rõ số lượng byte được cấp phát đề lưu trữ dữ liệu, và dạng dữ liệu nào có thể được lưu trữ. Xác định một kiểu dữ liệu cho trường đảm bảo rằng chỉ có kiểu dữ liệu đó mới được lưu vào trong trường. Ví dụ, ‘TWO’ không thể được lưu vào trong trường có kiểu dữ liệu là ‘int’. Nhưng số 2 có thể được lưu vào trường có kiểu dữ liệu là ‘character’ hoặc ‘int’. Hình 6.3 mô tả các kiểu dữ liệu khác nhau trong SQL Server 2000. char char char varchar varchar varchar nchar nchar nvarchar nvarchar char char varchar char varchar varchar nchar nchar nvarchar nvarchar text char cha ntext char char char varchar nchar Figure 6.3: SQL Server data types Một số kiểu dữ liệu hệ thống thường được dùng được liệt kê trong bảng sau. Kiểu dữ liệu Mô tả Kiểu dữ liệu binary - Kiểu dữ liệu Binary: binary bao gồm các số hecxa. Có ba Cú pháp: binary [(n)] dạng của kiểu dữ liệu binary. Varbinary: Cú pháp: varbinary [(n)] Image: Cú pháp: image Quản lý bảng trong SQL Server 103
  6. SQL Server Kiểu dữ liệu Text – Kiểu dữ liệu ký Char: tự bao gồm một tổ hợp các chữ cái, Cú pháp:char [(n)] các ký hiệu hoặc các chữ số. Varchar: Kiểu dữ liệu Nchar và nvarchar lưu Cú pháp: varchar [(n)] kí tự theo tiêu chuẩn Unicode. Nchar: Cú pháp: nchar [(n)] Nvarchar: Cú pháp: nvarchar [(n)] Text: Cú pháp: text Ntext: Cú pháp: ntext Date và time – Dữ liệu ngày tháng Datetime: được đặt trong dấu nháy đơn. Thứ tự Cú pháp : datetime giữa chúng không quan trọng. Có thể Smalldatetime đặt ngày tháng truớc thời gian hoặc Cú pháp: Smalldatetime ngược lại. Dữ liệu Integer: Bao gồm các số nguyên dương và nguyên âm, như -15, 0, 5, 2509. Có Dữ liệu Numeric – Dữ liệu này chỉ bốn dạng khác nhau của kiểu dữ bao gồm các số. Nó gồm các số liệu Integer int, dương, số âm, và số thập phân. smallint, tinyint, bigint. Dữ liệu Decimal: float, real Kiểu dữ liệu Monetary - Kiểu dữ Money: liệu Monetary (tiền tệ) lưu trữ các giá Cú pháp: Money trị tiền tệ với độ chính xác là bốn chữ Smallmoney: số sau dấu phẩy. Cú pháp: smallmoney . Kiểu dữ liệu Bit – Kiểu dữ liệu này Bit: có thể lưu giá trị 1 hoặc 0 Cú pháp:Bit sql_variant – Đây là kiểu dữ liệu sql_variant: lưu giá trị của các kiểu dữ liệu khác Cú pháp:Sql_variant trong SQL Server 2000. Bảng 6.1: Các kiểu dữ liệu của SQL Server Toàn vẹn dữ liệu đóng một vai trò rất quan trọng trong một môi trường RDBMS lớn có nhiều người cùng sử dụng. Chúng ta không thể mong đợi người sử dụng sẽ nhập những dữ liệu đúng đắn. Do đó, trong khi tạo bảng, chúng ta phải chú ý và đảm bảo chỉ những dữ liệu hợp lệ mới được phép nhập vào CSDL. Toàn vẹn dữ liệu (Data integrity) chỉ sự tin cậy và chính xác của dữ liệu. Các qui tắc toàn vẹn dữ liệu (Integrity rules) được thiết lập để đảm bảo dữ liệu nhất quán và chính xác. Những qui tắc Quản lý bảng trong SQL Server 104
  7. SQL Server này sẽ thực hiện việc kiểm tra dữ liệu đầu vào, chỉ những dữ liệu hợp lệ mới cho phép lưu trữ. Chúng ta thường nghe câu châm ngôn “Garbage in, garbage out”. Lí do chính mà chúng ta dùng một CSDL để lưu trữ dữ liệu mà không dùng các bảng tính hoặc bộ xử lí văn bản là vì nó ngăn không cho lưu trữ những dữ liệu vô nghĩa (dữ liệu rác hoặc dữ liệu không chính xác). Điều này được thực hiện bằng việc sử dụng toàn vẹn dữ liệu. Mọi DBMS hay RDBMS đều hỗ trợ nhiều công cụ cho việc duy trì sự toàn vẹn dữ liệu. Chú ý: Toàn vẹn dữ liệu đảm bảo rằng tất cả dữ liệu lưu trữ trong CSDL là hợp lệ. CSDL sẽ mất tính toàn vẹn dữ liệu của nó khi nó cho phép lưu trữ những dữ liệu không hợp lệ. Việc thực hiện toàn vẹn dữ liệu đảm bảo sự đúng đắn và chính xác của dữ liệu trong CSDL. Ví dụ, nếu một Employee ID (mã nhân viên) trong bảng Employee (Nhân viên) được nhập là “123”, CSDL sẽ không cho phép lưu trữ một bản ghi khác mà Employee ID có cùng giá trị, vì không thể có hai nhân viên có cùng một số ID. Nếu chúng ta có trường Employee-rating chỉ có thể nhận các giá trị từ 1 đến 5, CSDL khi đó sẽ không cho phép lưu trữ giá trị 6 vào trong trường đó. Nếu bảng đó có trường Department để lưu thông tin về phòng ban của nhân viên, CSDL khi đó sẽ chỉ cho phép những phòng ban nào có trong công ty mới được phép lưu vào trường. Toàn vẹn dữ liệu có thể phân làm bốn loại như hình vẽ 6.4 Toàn vẹn Toàn vẹn tham thực thể chiếu Toàn vẹn dữ liệu Toàn vẹn do người Toàn vẹn miền dùng định nghĩa Hình 6.4: Các kiểu toàn vẹn dữ liệu Ý tưởng cơ bản của Toàn vẹn Thực thể (Entity integrity) là chúng ta phải có khả năng xác định được mỗi thực thể lưu trong CSDL. Thực thể là bất kỳ cái gì tồn tại trong thế giới thực. Nó có thể là một đối tượng, một chủ đề, hoặc một sự kiện được lưu trong CSDL. Bảng được tạo ra để lưu trữ thực thể, các trường trong bảng thể hiện các thuộc tính của thực thể. Toàn vẹn thực thể định nghĩa mỗi dòng trong bảng là một thực thể duy nhất trong bảng đó. Khi chúng ta đưa một thực thể (bản ghi) vào bảng, điều quan trọng là thực thể đó phải được xác định duy nhất trong bảng để chúng ta có thể truy xuất nó và thay đổi dữ liệu trên nó. Xác định khóa chính là bước đầu tiên thực hiện toàn vẹn thực thể. Sau đó chúng ta sẽ xác định khóa ngoại cho bảng. Thuật ngữ Domain (miền) chỉ một tập hợp các giá trị được phép lưu vào trường. Ví dụ, một yêu cầu trên trường age của bảng Employee là chỉ nhận các giá trị từ 18 đến 58. Ta biết Toàn vẹn thực thể (Entity Integrity) kiểm tra sự hợp lệ dữ liệu của thực thể, toàn vẹn miền Quản lý bảng trong SQL Server 105
  8. SQL Server (Domain Integrity) đảm bảo các yêu cầu về dữ liệu trên một trường cụ thể. Toàn vẹn miền xác định sự hợp lệ của dữ liệu trên một trường đã cho. Toàn vẹn miền được mô tả trong hình 6.5  Miền xác định Các giá trị nằm ngoài miền XĐ Age Hình 6.5: Toàn vẹn miền Có thể xem toàn vẹn miền như là các quy tắc về nghiệp vụ (business rules) trên một trường. Ở mức đơn giản nhất, kiểu dữ liệu trên trường cũng thực hiện chức năng của toàn vẹn miền. Ví dụ chuỗi kí tự ‘two’ không được phép lưu vào một trường có kiểu dữ liệu numeric. Để hạn chế việc đưa những dữ liệu không đúng đắn vào CSDL, chúng ta cần đặt ra những qui tắc dữ liệu hợp lệ trên bất kì trường nào. Toàn vẹn tham chiếu (Referential integrity) duy trì mối quan hệ giữa các bảng khi các bản ghi bị thay đổi. Toàn vẹn tham chiếu đảm bảo các giá trị khóa luôn nhất quán trên các bảng. Một trong những yêu cầu để đảm bảo tính nhất quán là nếu một giá trị khóa bị thay đổi, tất cả các tham chiếu đến nó cũng được thay đổi theo. Ví dụ, nếu một bác sĩ thôi không làm việc trong bệnh viện nữa, chắc chắn sẽ không sắp xếp lịch hẹn gặp của bệnh nhân với bác sĩ đó. Nếu trường ID trong bảng Physicians bị thay đổi, thì nó cũng sẽ làm thay đổi các bản ghi liên quan trong bảng Appointment để đảm bảo không có bản ghi nào trong bảng Appointment bị mồ côi. SQL Server 2000 cung cấp rất nhiều các công cụ khác nhau để thực hiện toàn vẹn dữ liệu. Chúng được liệt kê trong bảng 6.2 Kiểu toàn vẹn Các công cụ của SQL Server Toàn vẹn thực thể 1. PRIMARY KEY constraint 2. UNIQUE constraint 3. IDENTITY columns Toàn vẹn miền 1. DEFAULT definition 2. FOREIGN KEY constraint 3. CHECK constraint 4. NOT NULL property Toàn vẹn tham chiếu 1. FOREIGN KEY constraint 2. CHECK constraint Toàn vẹn do người dùng 1. Rules định nghĩa 2. Stored Procedures 3. Triggers Bảng 6.2: Các công cụ của SQL Server đảm bảo tính toàn vẹn dữ liệu Quản lý bảng trong SQL Server 106
  9. SQL Server SQL Server 2000 đưa ra ba cơ chế để thực hiện Toàn vẹn thực thể. Đó là khóa chính (PRIMARY KEY), ràng buộc duy nhất (UNIQUE constraint), thuộc tính Identity (IDENTITY property). Từng cơ chế sẽ được giải thích chi tiết dưới đây. Ràng buộc khoá chính Một bảng có một trường hoặc kết hợp nhiều trường mà giá trị của chúng dùng để xác định tính duy nhất của một bản ghi trong bảng. Khi một trường đơn có thể phân biệt được từng bản ghi trong bảng, nó được gọi là khóa chính (Primary key) của bảng, và sẽ đảm bảo tính toàn vẹn thực thể trên bảng đó. Khi có nhiều hơn một trường cùng kết hợp để xác định tính duy nhất của một bản ghi trong bảng, như vậy khóa chính của bảng gồm nhiều trường và được gọi là khóa kết hợp (Composite key) Một bảng bao giờ cũng có khóa chính. Ràng buộc khóa chính đảm bảo các bản ghi trong bảng là duy nhất. Xác định khoá chính Đối với người phát triển, việc lựa chọn đúng trường khóa chính cho bảng là rất quan trọng. Khóa chính của bảng có thể là một trường đơn, hay nhiều trường. Yêu cầu dữ liệu của trường khóa chính phải là duy nhất, không được trùng nhau đối với tất cả các bản ghi trong bảng (bao gồm cả các bản ghi sẽ được thêm vào sau này). Tất cả các trường thỏa mãn yêu cầu trên gọi là Candidate key. Ví dụ, trong bảng Employee, mã số nhân viên có thể là một candidate key, nhưng cũng có thể thay nó bằng số chứng minh thư, hay kết hợp của số chứng minh thư và cấp bậc. Điều này được minh họa trong hình 6.6. Bảng Employee Candidate key Candidate key Candidate key Mã nhân viên Tên nhân viên Số CMT Cấp E001 John K3450 A E002 Smith H7832 B E003 Mary I56741 A E004 Lisa J45322 C Hình 6.6: Xác định Candidate key Vậy chúng ta chọn khóa chính như thế nào từ các candidate key? Có hai yếu tố có thể xem xét khi chúng ta đưa ra quyết định là: tính tối thiểu và tính ổn định (minimality and stability.) Khóa tổi thiểu (Minimal key) là loại khóa có số lượng trường ít nhất. Do đó, nếu chúng ta phải lựa chọn khóa chính giữa một trường đơn và nhiều trường thì ta nên chọn trường đơn làm khóa chính hơn. Vì việc thao tác dữ liệu trên một trường sẽ nhanh hơn trên nhiều trường. Tuy nhiên cũng có Quản lý bảng trong SQL Server 107
  10. SQL Server các ngoại lệ ví dụ như thao tác dữ liệu trên hai trường có kiểu integer sẽ nhanh hơn trên một trường có kiểu Varchar với kích thước lớn. Tính ổn định (Stability) là một đặc tính của dữ liệu trong một trường. Vì khóa chính dùng để đặt quan hệ giữa hai bảng, cho nên một điều quan trọng là không nên thay đổi thường xuyên dữ liệu trong trường khóa chính. Một cách lí tưởng là nó không bao giờ thay đổi. Khi bạn đã chọn được khóa chính từ các candidate key, các candidate key còn lại gọi là Alternate key. Tạo và sửa một khoá chính Một ràng buộc khoá chính đơn có thể là:  Được tạo ngay khi định nghĩa bảng Cú pháp: CREATE TABLE Table_name PRIMARY KEY Ví dụ: CREATE TABLE Reservation ( PNR_no int PRIMARY KEY ) Câu lệnh này sẽ tạo một ràng buộc khoá chính cho cột PNR_no trong bảng Reservation.  Đưa thêm vào một bảng đã tồn tại, nếu bảng đó chưa có ràng buộc khoá chính. Nhớ rằng một bảng chỉ có thể có một ràng buộc khoá chính. Cú pháp: ALTER TABLE Table_name ADD CONSTRAINT PRIMARY KEY () Ví dụ: ALTER TABLE Reservation ADD CONSTRAINT PK_const PRIMARY KEY (PNR_no)  Thay đổi hoặc xoá khóa chính nếu nó đã tồn tại. Nếu chúng ta muốn thay đổi khóa chính, trước tiên chúng ta phải xoá khoá chính đó đi rồi tạo lại. Một vài điểm cần chú ý khi tạo một khoá chính  Khi một ràng buộc khóa chính được đưa vào một bảng đã có dữ liệu, SQL Server 2000 sẽ kiểm tra những dữ liệu trên các trường khóa chính để đảm bảo rằng không có các giá trị trùng nhau hay tồn tại các giá trị null. Nếu các trường khóa chính có chứa các giá trị null hay các giá trị trùng nhau, SQL Server 2000 sẽ trả về một lỗi và không đặt ràng buộc khóa chính đó cho bảng. Quản lý bảng trong SQL Server 108
  11. SQL Server  Một ràng buộc khóa chính không thể bị xóa nếu nó đang được tham chiếu bởi một ràng buộc khóa ngoại (foreign key constraint) trong một bảng khác. Để có thể xóa được, trước tiên phải xóa ràng buộc khóa ngoại. Ràng buộc Duy nhất (UNIQUE Constraint) Ràng buộc duy nhất (UNIQUE constraint) yêu cầu tất cả các giá trị trong trường phải là duy nhất, giá trị của trường phải khác nhau trên tất cả các bản ghi của bảng. Một bảng có thể có nhiều ràng buộc duy nhất, và tất cả các bản ghi phải thỏa mãn các ràng buộc đó. Ràng buộc duy nhất đảm bảo tính toàn vẹn thực thể vì tất cả các bản ghi trong bảng bao giờ cũng khác nhau. Chúng ta có thể sử dụng ràng buộc duy nhất để đảm bảo các giá trị trùng lặp không được nhập vào một trường nào đó. Khi đó chức năng của ràng buộc duy nhất giống với chức năng của ràng buộc khóa chính ngoại trừ nó cho phép nhập các giá trị null. Cả hai ràng buộc đó đều đảm bảo tính duy nhất, nhưng ràng buộc duy nhất sẽ được sử dụng thay vì ràng buộc khóa chính khi chúng ta muốn đảm bảo tính duy nhất của:  Một trường hay một tổ hợp các trường không phải khóa chính Có những trường hợp, chúng ta cần nhiều trường phải có các giá trị duy nhất. Khi đó, chúng ta không thể thiết lập các trường đó là khóa chính được vì trong một bảng chỉ có duy nhất một ràng buộc khóa chính. Cho nên ta có thể đặt ràng buộc duy nhất trên các trường đó vì một bảng cho phép có nhiều ràng buộc duy nhất.  Một trường cho phép nhận giá trị null Các ràng buộc Duy nhất có thể được định nghĩa trên các trường mà cho phép các giá trị Null, trong khi các ràng buộc khoá chính chỉ có thể được định nghĩa trên những trường không cho phép các giá trị Null.  Một ràng buộc duy nhất cũng có thể được tham chiếu bởi một ràng buộc khoá ngoài. Thuộc tính IDENTITY Phương pháp thứ ba để thiết lập ràng buộc Thực thể là áp dụng thuộc tính IDENTITY cho một trường. Thuộc tính này có thể được áp dụng cho trường có kiểu dữ liệu decimal, int, smallint or numeric. Nó sinh ra một giá trị duy nhất trong bảng. Theo mặc định, giá trị bắt đầu thiết lập bởi thuộc tính này là 1. Thuộc tính này có thể được thiết lập khi tạo bảng. Cú pháp: Column_name Data Type IDENTITY (SEED, INCREMENT) Trong đó: Column_name: Tên trường được gắn thuộc tính IDENTITY. SEED : Giá trị khởi tạo của cột IDENTITY. Quản lý bảng trong SQL Server 109
  12. SQL Server INCREMENT : Bước nhảy được sử dụng để sinh ra giá trị tiếp theo cho cột. Nó cũng có thể là số âm. Ví dụ, để sinh ra số vé cho trường ‘PNR_NO’ trong bảng Reservation, thuộc tính IDENTITY sẽ được dùng như sau: CREATE TABLE Reservation_Copy (PNR_NO INT IDENTITY(1,1)) Giá trị bắt đầu của trường‘PNR_NO’ được đặt là 1, và mỗi khi thêm một bản ghi, nó tự động tăng thêm 1. Các ràng buộc khóa chính và khóa ngoại có thể cùng được sử dụng như là một combination key để bắt toàn vẹn tham chiếu. Khi đó, trường khóa ngoại phải được liên kết đến trường khóa chính trong bảng khác. 6.3 Cập nhật và xoá bảng Đôi khi với một bảng đã tạo, chúng ta phải thay đổi lại cấu trúc hay các bản ghi của nó.. Một số bảng không còn dùng nữa có thể bị xóa khỏi CSDL. Những thao tác này có thể được thực hiện bằng T-SQL với Query Analyzer hoặc sử dụng Enterprise Manager. 6.3.1 Cập nhật bảng Sau khi một bảng được tạo, chúng ta có thể thay đổi những lựa chọn đã được thiết lập cho bảng lúc ban đầu. Những lựa chọn này là:  Các trường có thể được thêm, sửa hoặc xoá. Ví dụ, tên trường, độ rộng, kiểu dữ liệu của trường cũng có thể được thay đổi.  Tên bảng có thể được thay đổi.  Các bản ghi có thể được thêm, sửa và xoá. Có hai cách sửa các trường trong một bảng là:  The Enterprise Manager  Transact-SQL Với Enterprise Manager, việc cập nhật một bảng cực kỳ dễ. Chúng ta chỉ cần mở bảng đó ra, thực hiện những thay đổi cần thiết và lưu lại. Để mở bảng trong cửa sổ design, ta chọn Design Table bằng cách chọn nhấn phải chuột lên bảng như trong hình 6.7. Quản lý bảng trong SQL Server 110
  13. SQL Server Hình 6.7: Sửa thiết kế của bảng Cú pháp để thay đổi cấu trúc của một bảng sử dụng T-SQL là: Cú pháp: ALTER TABLE [ALTER COLUMN ] |ADD [Column_name ] | {DROP COLUMN } Trong đó: là tên của bảng cần sửa. ALTER COLUMN xác định những trường nào cần được sửa. là tên của trường cần được sửa, xoá hoặc thêm. là kiểu dữ liệu mới của trường được sửa. ADD xác định trường sẽ được thêm vào bảng. DROP COLUMN xác định trường sẽ bị xoá khỏi bảng. Quản lý bảng trong SQL Server 111
  14. SQL Server 6.3.2 Xoá bảng Khi một bảng không còn cần đến nữa hoặc khi chúng ta muốn thiết kế lại bảng, hoặc dọn dẹp CSDL, ta có thể xóa bảng đó khỏi CSDL. Khi xóa bảng, toàn bộ cấu trúc, các full-text indexes, các ràng buộc, các index của nó bị xóa vĩnh viễn khỏi CSDL. Không gian trước đây dùng để lưu bảng và các index được giải phóng. Sử dụng Enterprise Manager, chúng ta xóa bảng bằng cách kích vào bảng như hình 6.8 rồi chọn Delete. Hình 6.8: Xoá một bảng Sử dụng T-SQL và Query Analyzer, cú pháp để xoá một bảng như sau: Cú pháp: DROP TABLE Ví dụ: DROP TABLE Airlines_Master Câu lệnh DROP TABLE không thể xoá được một bảng khi nó được tham chiếu bởi một ràng buộc khoá ngoại. Để có thể xóa nó, đầu tiên ta phải xóa ràng buộc khóa ngoại, hay bảng tham chiếu trước. 6.4 Ràng buộc và đối tượng ràng buộc (Constraint and Constraint object) Bên cạnh toàn vẹn thực thể, chúng ta cũng có toàn vẹn miền (Domain integrity) để đảm bảo dữ liệu hợp lệ cho bảng. Trước khi ta tìm hiểu các công cụ của SQL Server 2000 để thực hiện toàn Quản lý bảng trong SQL Server 112
  15. SQL Server vẹn miền, chúng ta sẽ tìm hiểu ràng buộc là gì. Điều này giúp chúng ta tìm hiểu các kiểu ràng buộc khác nhau dùng để thực hiện toàn vẹn miền. 6.4.1 Ràng buộc và đối tượng ràng buộc Ràng buộc là một thuộc tính có thể được đặt trên một trường hay nhiều trường trong bảng, nhằm giới hạn dữ liệu được nhập vào các trường đó. Nếu dữ liệu đưa vào vi phạm ràng buộc, câu lệnh thực hiện sẽ không có tác dụng SQL Server 2000 cung cấp ba ràng buộc: CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY và UNIQUE. Một vài ràng buộc trong số này đã được xem xét trong các phần trước. DEFAULT Mọi trường trong một bản ghi phải có giá trị, kể cả giá trị NULL. Nó không nên để trắng. Trong trường hợp mà giá trị null không đáp ứng được yêu cầu và dữ liệu mong muốn không có sẵn, tốt hơn ta nên đặt giá trị mặc định cho trường.Giá trị mặc định sẽ được lưu vào trường khi người dùng không chỉ ra bất kì giá trị nào cho nó. Ví dụ, người ta thường dùng giá trị N.A khi số điện thoại của khách hàng không có. Hay một công ty có chính sách chỉ những người có cấp bậc từ L6 trở đi mới được nhận HRA (tiền trợ cấp thuê nhà). Vì vậy, trong trường HRA sẽ lưu N.A cho mọi nhân viên có cấp bậc dưới L.6 như hình 6.9 Bảng nhân viên Mã nhân viên Tên nhân viên Cấp H.R.A E001 Maria L7 7500 E002 Joseph L6 N.A Các giá trị mặc E003 Sheba L8 8500 định E004 James L5 N.A Hình 6.9: Các giá trị mặc định Giá trị mặc định trên trường phải tương thích với kiểu dữ liệu trên trường đó. Ví dụ, giá trị mặc định cho một trường kiểu int phải là một số nguyên, không thể là một xâu ký tự. Giá trị mặc định có thể được xác định ngay khi tạo bảng hoặc được thêm vào I sau. Hình 6.10 chỉ ra rằng giá trị mặc định ‘NA’ được đặt cho trường ‘Phone’. Quản lý bảng trong SQL Server 113
  16. SQL Server Hình 6.10: Thêm các giá trị mặc định Ràng buộc Khoá ngoại Khóa ngoại là một trường hay nhiều trường dùng để tạo liên kết dữ liệu giữa hai bảng. Mối liên kết giữa hai bảng dựa trên một trường chung. Một trường là khóa chính trong bảng cha, một trường là khóa ngoại trong bảng con. Ví dụ, ‘PNR_No’ là khoá chính trong bảng Reservation và là khóa ngoài trong bảng Passenger như hình 6.11. Khóa chính Khoá ngoại Khoá chính PNR_No Aircraft_code PNR_no Ticket_no Name 1 IC01 1 1 Allan Smith 2 BA02 1 2 Stell Smith 3 IC01 1 3 Pam Smith 4 BA02 2 4 Peter Jones 2 5 Lily Jones Bảng cha - Reservation …….. ….. …… …….. ….. …… Bảng con - Passenger Hình 6.11: Khoá chính và khoá ngoại Quản lý bảng trong SQL Server 114
  17. SQL Server Mục đích chính của khoá ngoại là kiểm soát dữ liệu được lưu trong bảng con. Một ràng buộc khóa ngoại đảm bảo rằng chỉ có dữ liệu đã tồn tại trong khoá chính của bảng cha mới được phép nhập cho khoá ngoại. Một bảng có thể có nhiều khoá ngoại. Một ràng buộc khóa ngoại không chỉ được dùng để liên kết đến ràng buộc khóa chính trong bảng khác; nó còn có thể tham chiếu tới các trường có ràng buộc duy nhất trong bảng khác. SQL Server 2000, kiểm tra các dữ liệu đã có trong các trường khóa ngoại để đảm bảo rằng nó phải tham chiếu đến các trường khóa chính hay các trường có ràng buộc duy nhất trong bảng cha. Ràng buộc CHECK Ràng buộc CHECK được dùng để hạn chế những dữ liệu lưu trong một trường. Ví dụ, trường Class_code trong bảng Reservation có thể đặt ràng buộc CHECK chỉ cho phép nhận các giá trị: EX cho ghế hạng Sang, FC cho ghế hạng Nhất và E cho ghế hạng Kinh tế. Khi đặt ràng buộc CHECK lên một bảng đã có dữ liệu, nó sẽ thực hiện việc kiểm tra trên những dữ liệu cũ và cả những dữ liệu sau này thêm vào. 6.4.2 Thêm các đối tượng ràng buộc vào bảng Ràng buộc có thể được tạo ngay khi tạo bảng hoặc có thể thêm vào sau này.  Tạo một ràng buộc khi tạo bảng Một ràng buộc thường được tạo khi tạo bảng. Nó được vào trong câu lệnh CREATE TABLE. Cú pháp: CREATE TABLE Table_name ( ) Trong đó: là định nghĩa cho mỗi trường của bảng. là bất cứ ràng buộc nào dành cho bảng hoặc các trường như khoá chính, ràng buộc CHECK. là tuỳ chọn. Nó cũng có thể được xác định sau khi tạo bảng. Quản lý bảng trong SQL Server 115
  18. SQL Server Hình 6.12: Tạo bảng cùng với ràng buộc  Tạo một ràng buộc trên một bảng đã có Một ràng buộc có thể được tạo trên một bảng đã có dữ liệu bằng câu lệnh ALTER TABLE. Cú pháp: ALTER TABLE Table_name ADD CONSTRAINT Cũng có thể xóa một ràng buộc và tạo ra một ràng buộc khác trên cùng một trường. Hình 6.13: Thêm một ràng buộc vào một bảng đã tồn tại Quản lý bảng trong SQL Server 116
  19. SQL Server Kết luận  Một bảng là một tập hợp các bản ghi được xếp thành các hàng và cột.  Một CSDL bao gồm một số bảng, mỗi CSDL lưu một tập dữ liệu có liên quan.  Một điều cực kỳ quan trọng để thiết kế CSDL là tạo ra một mô hình CSDL mức khái niệm.  Khi chúng ta thiết kế một CSDL, chúng ta cần chọn kiểu bảng cần thiết, kiểu của dữ liệu sẽ được lưu trong mỗi bảng, và ai có quyền truy cập tới các bảng đó,…  Chuẩn hoá là một tiến trình nhằm loại bỏ sự dư thừa từ dữ liệu đầu vào.  Một bảng có thể được tạo bằng: • Enterprise Manager hoặc • Câu lệnh Transact-SQL trong Query Analyzer  Câu lệnh để tạo một bảng sử dụng T-SQL là CREATE TABLE theo sau là tên bảng.  Chúng ta có thể tạo một bảng mới với Enterprise Manager bằng cách chọn CSDL và sau đó chọn Action, New và Table.  Các kiểu dữ liệu là một trong những điều quan trong nhất của T-SQL.  Toàn vẹn dữ liệu có nghĩa là dữ liệu tin cậy và chính xác. Các ràng buộc được thiết kế để giữ cho dữ liệu nhất quán và chuẩn xác.  Ý tưởng cơ bản của Toàn vẹn thực thể là chúng ta phải có khả năng xác định mỗi thực thể trong CSDL.  Xác định trường khoá là bước đầu tiên bắt toàn vẹn thực thể. Sau đó ta xác định các khóa ngoại của bảng.  Toàn vẹn miền hạn chế dữ liệu nhập vào trên một trường nào đó.  Toàn vẹn tham chiếu duy trì quan hệ giữa các bảng khi thao tác các bản ghi. Toàn vẹn Tham chiếu đảm bảo giá trị khoá nhất quán trên các bảng.  SQL Server 2000 cung cấp ba cơ chế cho toàn vẹn Thực thể: Khoá Chính, ràng buộc Duy nhất, và thuộc tính IDENTITY.  Câu lệnh T-SQL để xoá một bảng là DROP TABLE tiếp theo là tên bảng.  Một ràng buộc là một thuộc tính được đặt trên một trường hoặc một tập hợp các trường của một bảng để hạn chế dữ liệu nhập vào các trường đó. Quản lý bảng trong SQL Server 117
  20. SQL Server Kiểm tra tiến bộ 1. _________________ là tiến trình loại bỏ sự dư thừa từ dữ liệu đầu vào. 2. Toàn vẹn dữ liệu có nghĩa là dữ liệu ____________ và ______________. 3. Câu lệnh T-SQL để xoá một bảng là ______________ tiếp theo là tên bảng 4. SQL Server 2000 cung cấp ba cơ chế cho toàn vẹn Thực thể: _______________, __________________ và _____________________. 5. Chúng ta có thể tạo một bảng mới Enterprise Manager bằng cách chọn CSDL và sau đó chọn ______________, New và Table. 6. Một ________________ đảm bảo rằng chỉ có dữ liệu tồn tại trong khoá chính của bảng cha mới được phép nhập và khoá ngoại. 7. Chúng ta có thể sử dụng toàn vẹn __________ để đảm bảo rằng các giá trị lặp không được nhập vào một cột nhất định. 8. Một ______________ là một thuộc tính mà có thể được đặt trên một hoặc một tập các cột của trong bảng để hạn chế dữ liệu nhập vào các cột đó. 9. Một khoá tối thiểu là một khoá với số lượng trường _________. 10. Thuộc tính _________ sinh ra một giá trị duy nhất trong bảng và theo mặc định giá trị khởi tạo là 1. Quản lý bảng trong SQL Server 118
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2