קשרים בין טבלאות

PRIMARY KEY

PK – מפתח ראשי:
– חייב להיות שונה ערך
– בטבלה הוא יכול להיות רק יחיד ובעזרתו ניתן לזהות את הרשומה בטבלה באופן חד-חד-ערכית.
– אסור שיהיה ערך NULL

דוגמה של מפתח אשר מורכב רק מעמודה אחת:

CREATE TABLE Persons (
ID int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);

דוגמה של מפתח אשר מורכב משתי עמודות
כלומר יכול להיות אותו id אבל LastName חייב להיות שונה:

CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);


FOREIGN KEY

FK – מפתח זר, מקשר למפתח ראשי של טבלאות אחרות.

לצורך דוגמה, ניצור טבלה Products עם מפתח ראשי ProductID

* UnitPrice  מסוג DECIMAL כאשר 13 זה מספר ספרות שלמות ו-2 זה מספר ספרות לאחר נקודה.

CREATE TABLE Products (
ProductID int NOT NULL PRIMARY KEY,
ProductName varchar(255) NOT NULL,
UnitPrice DECIMAL(13, 2) NOT NULL
);

וניצור טבלה בשם Orders עם מפתח ראשי OrderID ומפתח זר ProductID.

כאשר ProductID  זה מפתח ראשי עבור טבלה Products

CREATE TABLE Orders (
OrderID int NOT NULL PRIMARY KEY,
OrderDate DATE,
ProductID int FOREIGN KEY REFERENCES Products(ProductID)
);

דרך אגב, ניתן לראות את המפתחות תוך בחירת טבלה newDB -> מפתחות 

 

להשלמת הדוגמה שלנו, בואו נוסיף נתונים לטבלאות:

עבור טבלה Products

INSERT INTO Products ( ProductID, ProductName, UnitPrice) 
VALUES ( '1', 'Coffee', '12.30');

וגם

INSERT INTO Products ( ProductID, ProductName, UnitPrice) 
VALUES ( '3', 'Ice Cream', '15.45');

עבור טבלה Orders

INSERT INTO Orders ( OrderID, OrderDate, ProductID) 
VALUES ( '1', '23-JUN-20', '1');

וגם

INSERT INTO Orders ( OrderID, OrderDate, ProductID) 
VALUES ( '2', '25-JUN-20', '3');

ואז קבלנו קשר בין הטבלאות:

הזמנה עם OrderID=1 מטבלה Orders מקושרת לטבלה Products  דרך ProductID=1

וגם הזמנה עם OrderID=2 מטבלה Orders מקושרת לטבלה Products  דרך ProductID=3

CHECK

בדיקה שתנאי מתקיים, כאשר נתונים נכנסים לטבלה.

לדוגמה:
כל פעם כאשר יוכנס מידע לטבלה
אז תתבצע בדיקה אם הגיל הוא יותר או שווה ל-18.

CREATE TABLE PersonsTable (
ID int NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);

ננסה להכניס לטבלה PersonsTable  גיל פחות מ-18

INSERT INTO PersonsTable (ID, FirstName,Age) 
VALUES ( '1', 'Daniel', '17');

נקבל

דילוג לתוכן