PostgreSQL Ràng buộc: Các loại có ví dụ

Ràng buộc là gì?

Các kiểu dữ liệu được sử dụng để giới hạn loại thông tin có thể được lưu trữ trong bảng. Nhưng có 2 vấn đề với cách tiếp cận này.

  • Vấn đề 1: Các hạn chế được thực thi bởi các loại dữ liệu là không đủ cho một số ứng dụng nhất định. Ví dụ: cột chứa giá Mặt hàng chỉ được chấp nhận giá trị dương. Tuy nhiên, không có kiểu dữ liệu cụ thể nào chỉ chấp nhận số dương.
  • vấn đề 2: Bạn có thể muốn giới hạn thông tin trong dữ liệu hàng/cột so với các cột hoặc hàng khác. Ví dụ: một bảng chứa thông tin Mục chỉ được có một hàng cho mỗi ràng buộc cột duy nhất.

Để khắc phục những vấn đề như vậy và xác định các quy tắc này, bạn có thể sử dụng hạn chếs trong PostgreSQL. Nói một cách đơn giản, ràng buộc là các quy tắc mà dữ liệu của bạn phải tuân theo. Việc thêm các ràng buộc về bảng cho phép hệ thống cơ sở dữ liệu thực thi tính toàn vẹn của dữ liệu.

Do đó, nếu người dùng đang cố lưu trữ dữ liệu trong một cột vi phạm ràng buộc đã xác định thì thông báo lỗi sẽ được hiển thị.

Loại PostgreSQL Những ràng buộc

Chúng ta hãy xem xét các loại khác nhau PostgreSQL ràng buộc bạn có thể tạo để đảm bảo tính chính xác của dữ liệu:

  • Độc đáo
  • Có giá trị
  • Kiểm tra ràng buộc
  • Khóa chính
  • chính nước ngoài
  • Ràng buộc thực thi

1) PostgreSQL Hạn chế duy nhất

Ràng buộc duy nhất giúp bạn đảm bảo rằng dữ liệu chứa trong một cột hoặc một nhóm ràng buộc cột là duy nhất.

Ví dụ

CREATE TABLE Item(
Item_no integer UNIQUE,
Name text,
);

2) KHÔNG Ràng buộc rỗng

Ràng buộc không null xác định rằng một cột không bao giờ có giá trị null. Loại ràng buộc này rất giống với việc tạo ràng buộc kiểm tra. Tuy nhiên, PostgreSQL tạo ra một ràng buộc không null, hiệu quả hơn. Vấn đề với phương pháp này là bạn không thể đặt tên rõ ràng cho các ràng buộc không rỗng.

Ràng buộc không null không phải là ràng buộc mặc định PostgreSQL chuẩn và không nên được sử dụng trong các ứng dụng di động. Sau đó nó đã được thêm vào PostgreSQL để làm cho nó tương thích với một số khác Hệ thống DBMS. Nhiều người sử dụng nó vì nó giúp dễ dàng chuyển đổi các ràng buộc trong tệp tập lệnh.

Cú pháp:

CREATE TABLE Item (
product no integer NULL, Item_name text NULL, Itm_price numeric NULL
);

3) PostgreSQL Kiểm tra ràng buộc

Ràng buộc kiểm tra giúp bạn chỉ định rằng giá trị trong một số cột phải là biểu thức Boolean.

PostgreSQL ràng buộc kiểm tra bao gồm từ khóa CHECK, theo sau là một biểu thức trong ngoặc đơn. Ràng buộc kiểm tra Postgres phải liên quan đến cột cần bị ràng buộc nếu không nó sẽ không có ý nghĩa gì.

Cú pháp:

CREATE TABLE Item(
Item_id INTEGER PRIMARY KEY,
name VARCHAR(20),
Item_price NUMERIC CHECK(price>0)
);

Ví dụ:

CREATE TABLE Emp(
ID	INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l) check(gender gender='M'),
Salary INTEGER NOT NULL,
Dept_Num INTEGER
);
CREATE TABLE ITEM(
Id INTEGER PRIMARY KEY,
name VARCHAR(15),
price numeric CHECK (price > 0)
);

4) Ràng buộc khóa chính

Ràng buộc khóa chính cho phép bạn sử dụng một cột hoặc nhóm cột làm mã định danh duy nhất cho các hàng trong bảng. Để xác định các ràng buộc khóa chính, các giá trị được khai báo của bạn phải là duy nhất và không được rỗng. Điều này cho phép hai định nghĩa bảng chấp nhận cùng một dữ liệu.

Cú pháp:

Create Table Item(
Item_no, integer PRIMARY KEY,
Item_name text,
Item_Price numeric
);

Ví dụ 1:

CREATE TABLE Employee(
ID INTEGER PRIMARY KEY
Fname VARCHAR(20),
Lname VARCHAR(20),
Gender CHAR(l),
Salary INTEGER NOT NULL, Dept INTEGER, UNIQUE(FNAME, LNAME)
);

Ví dụ 2:

CREATE TABLE first(
A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl)
);
Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER.
);

Ví dụ 3:

CREATE TABLE Items (
Item_no integer UNIQUE NOT NULL, name text, price numeric
CREATE TABLE Items (
Items_no no integer PRIMARY KEY, name text, price numeric

5) Ràng buộc khóa ngoại

Ràng buộc khóa ngoại chỉ định rằng các giá trị trong một cột hoặc một nhóm cột phải khớp với các giá trị xuất hiện trong một số hàng của bảng khác. Điều này cho phép bạn thiết lập tính toàn vẹn tham chiếu giữa hai bảng được liên kết.

Giả sử bạn có một bảng lưu trữ các đơn đặt hàng cho các sản phẩm khác nhau. Bạn muốn đảm bảo rằng bảng chứa các đơn đặt hàng sản phẩm tồn tại. Vì vậy, ở đây, bạn cần xác định ràng buộc khóa ngoại trong bảng đơn hàng tham chiếu đến bảng sản phẩm.

Cú pháp:

CREATE TABLE	(
id INTEGER PRIMARY KEY. name VARCHAR(IO)
>;
CREATE TABLE testable
Id INTEGER PRIMARY KEY
read INTEGER REFERENCES	(id)
);

Ví dụ 2:

CREATE TABLE Student (
Std_ID INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l),
Steam, VARCHAR(20),
Dept_NUM INTEGER REFERENCES Department
);

6) Ràng buộc loại trừ

Ràng buộc loại trừ giúp bạn đảm bảo rằng nếu bất kỳ hai hàng nào được so sánh với nhau trên các cột hoặc biểu thức được chỉ định với các toán tử được chỉ định, thì ít nhất một trong các phép so sánh toán tử này sẽ trả về giá trị null hoặc false. Thêm điều này PostgreSQL ràng buộc sẽ tự động tạo một chỉ mục thuộc loại được chỉ định trong khai báo ràng buộc.

Ví dụ:

Ví dụ, sau đây PostgreSQL câu lệnh tạo một bảng mới tên là School và thêm năm cột.

CREATE TABLE SCHOOL6(
STDID INT PRIMARY KEY NOT NULL,
STDNAME TEXT NOT NULL,
STDAGE INT NOT NULL,
FEEDBACK CHAR(50),
STANDARD INT NOT NULL,

Ví dụ, sau đây PostgreSQL câu lệnh sẽ tạo một bảng mới tên là Branch, bảng này có thêm ba cột. Cột STD_ID là khóa ngoại và nó tham chiếu đến trường ID của bảng SCHOOL6.

CREATE TABLE BRANCH (
BRANCHCODE INT PRIMARY KEY NOT NULL,
BRAMCHNAME CHAR(50) NOT NULL,
STD_ID INT references SCHOOL6(ID)
);