الطريقة الأولى: بدون برامج مساعدة.
وفى هذه الحالة يمكن
فتح الـ Command
Prompt فى الـ(Windows) ثم تحديد
المسار الذى تم تحميل MySQL بداخله كما يلي:
path=D:\PHP_Work\XAMPP\mysql\bin
وبعد ذلك يمكننا عمل فتح MySQL وعمل Connect عليها كما
يلي:
mysql -u root -p
وبعدها يطلب الـ password أدخله ثم Enter ليظهر لك فى
الـ Command Prompt المؤشر
mysql>
جاهز للأوامر.
الطريقة الثانية: فى حالة تجهيز MySQL منفردة على الجهاز. بدون برامج مساعدة مثل XAMPP أو WAMP أو AppServe الخ
نفتح من Start>All Programs>MySQL>MySQL
====================================================
جميع حقوق نقل المعلومات مسموح بها لوجه الله. ولكن يرجى الإشارة لأسم الموقع فقط.
CREATE DATABASE databasename;
وللتعامل مع قاعدة بيانات محددة وتنفيذ الأوامر عليها
نكتب الأمر التالى
USE databasename
ولعرض قواعد البيانات الموجودة نكتب الأمر
mysql> show databases;
+------------------------+
| Database |
+------------------------+
| information_schema |
| adeltube_db |
| tests |
+------------------------+
3 rows in set (0.11 sec)
مثال:
mysql> CREATE DATABASE 7istDB;
Query OK, 1 row affected (0.00 sec)
mysql> use 7istDB;
Database changed
ولحذف قاعدة بيانات نكتب الأمر
DROP DATABASE DBName;
======================
جميع حقوق نقل المعلومات مسموح بها لوجه الله. ولكن يرجى الإشارة لأسم الموقع فقط.
|
الوصف |
الجزء |
كلمة
أساسية بمعني إنشاء جدول. |
CREATE
TABLE |
يكتب
بدلا عنها اسم الجدول المراد إنشائه. |
table |
يكتب
بدلا عنها أسم الحقل الأول والثاني وهكذا حتى نهاية حقول الجدول المنشئ ويفصل
بين كل حقل والأخر بفصله (, ) . |
Field1
– Field 2 |
يكتب
بدلا عنها نوع بيانات الحقل. |
Type |
يكتب
بدلا عنها حجم عدد الخانات بالحقل ويوجد أنواع بيانات لها حجم وأنواع لا يحدد
لها حجم حقل . |
size |
تكتب
إذا كنت تريد عدم ترك بيان فارغ في هذا الحقل نهائيا . |
Not
Null |
عبارة
عن تعبير يحدد علي حسب القيد المذكور فبعض القيود يحدد لها تعبيرا مثل حقل
المفتاح الخارجي فلابد من ذكر أسم الجدول والحقل الذي يعمل كمفتاح رئيسي الذي
يمثله الحقل الحالي كمفتاح خارجي . |
Expr |
لجعل
الحقل يضاف به بيانات رقمية مسلسلة تلقائية. |
AUTO_INCREMENT |
-----------------------
جميع حقوق نقل المعلومات مسموح بها لوجه الله. ولكن يرجى الإشارة لأسم الموقع فقط.
أولا:
الأرقام الصحيحة Integer
ثانيا: الأرقام العشرية أو الكسرية Decimal Numbers
As the FLOAT declaration DOUBLE.
ثالثا:
أنواع البيانات النصية Strings
& Text
VARCHAR(variable length ofstring up to 255characters)
CHAR(string offixed length,which can be between 0and 253.)
رابعا:أنواع
بيانات التاريخ والوقت Date
& Time Data Types
DATETIME( “YYYYMM-DD HH:MM:SS” )
TIMESTAMP( Formats )
خامسا: أنواع بيانات أخرى
BOOL(True/False 0/1)
BLOB: Binary Large Object. TINYBLOB,BLOB,MEDIUMBLOB
and LONGBLOB.
1- علي مستوي الحقل Column Level
يتم تعريف أي قيد به ماعدا:
§
المفتاح الأساسي المركبComposite
Primary Key
§
المفتاح الخارجي المركب Composite Foreign Key
وهذا طبيعي جدا لأن القيد في هذا المستوي يفرض علي الحقل
الذي يكتب أمامه القيد أما في تلك الحالات يحتوي القيد علي أكثر من حقل فلا يمكن
إتباع هذه الطريقة في عمل هذه القيود.
2- علي مستوي الجدول Table Level
يتم تعريف أي قيد به ماعدا قيد NOT NULL
قيد المفتاح الأساسى Primary Key Constraint
Column Level
|
Table Level
|
لاحظ
أن الفرق هنا لأننا نكتب الأوامر أخر الجدول فلابد أن نحدد من هو الحقل الذي سوف
يتم تنفيذ القيد عليه أما في الطريقة الأولي لم نكتب ذلك وهذا لأن القيد سوف ينفذ
علي الحقل المكتوب أمامه مباشرة.
قيد المفتاح الخارجي Foreign Key Constraint
Column Level
… Column Type REFERENCES parenttable (primarycolumn) … |
مثال:
… DeptWorkINT(4) References Dept (DeptNo), … |
ولاحظ
أن هذا القيد دائما يمثل علاقة مفتاح خارجى FK لمفتاح
أساسى PK – وفى المثال السابق - الحقل DeptWork عبارة عن
مفتاح خارجى FK يشير إلى (References) حقل المفتاح الأساسى DeptNo لجدول Dept.
ولاحظ
ان حقل المفتاح الخارجي يجب أن يشير لحقل مفتاح أساسى ولابد أن يكون من نفس نوع
بيانات الحقل الأساسى ومن نفس الحجم Size إن وجد.
Table Level
… FOREIGN KEY (column) REFERENCES parenttable (primarycolumn) … |
مثال آخر
… Foreign Key (DeptWork) References Dept ( DeptNo ), … |
في هذا الشكل يتضح لنا أهمية كتابة كلمة Foreign Key وذلك لتحديد المفتاح الخارجي في هذا الجدول الذي سوف يكون مرتبط بحقل مفتاح أساس في جدول أخر وبعد كلمة References نكتب أسم الجدول الآخر ثم أسم الحقل المفتاح الأساسى ويمكن إضافة Cascade Delete Related Fields بمعني عند حذف قيمة من المفتاح الأساسى يحذف تلقائيا كل البيانات المرتبطة به في الجدول المحتوي علي المفتاح الخارجي وهذا قد يمثل خسارة كبيرة وفقد بيانات هامة - يمكننا كتابة On Delete Cascade لتمثيلها في أي المستويين علي سبيل المثال:
|
وللتحقق
من الـ Referential
Integrity أى أن
البيانات فى Foreign
Keyلابد أن يكون موجود
مثيل لها فى الـ Primary
Key لابد من
كتابة TYPE = InnoDB بعد الإنتهاء من جملة Create Table وقبل الـ ; وبعد إغلاق القوس ) وفى نهاية
الجملة.
قيد NOT NULLNOTNULL Constraint
Column Level
… Salary FLOAT(6,2) Not Null, … |
ولاحظ
أنه لايمكن تعريف هذا القيد على مستوي الجدول.
قيد عدم التكرار UNIQUE Constraint
Column Level
|
|
قيد التحقق من القيمةCHECK Constraint
Column Level
|
لاحظ
أهمية كتابة الشرط كاملا بعد كلمة CHECK وبين
أقواسها.
Table Level
… CHECK ( Gender IN ('M', 'm', 'F', 'f') ), … |
أمثلة لإنشاء الجداول بالطرق المختلفة.
CREATE TABLE EMPLOYEE
(
SSN
Char(4) Primary Key ,
Name VARCHAR(60) NOT NULL
,
BirthDate Date ,
Salary FLOAT(6,2) ,
Street VARCHAR(100) ,
City VARCHAR(25)
Default 'Cairo'
) ;
CREATE TABLE FLIGHT
(
Flight_Number INT(2) ,
Flight_Date Date ,
Passengers
INT(3) ,
Primary Key (Flight_Number ,Flight_Date )
) ;
إنشاء جداول وإنشاء علاقة من النوع واحد لكثير
CREATE TABLE IF NOT EXISTS
EMPLOYEE
(
SSN INT(5)
Primary Key ,
Name VARCHAR(60) NOT NULL ,
BirthDate Date,
Salary
FLOAT(6,2)
) ;
CREATE TABLE EMPLOYEE_PHONE
(
SSN
INT(5) REFERENCES EMPLOYEE(SSN)
,
Phone
Char(12) ,
Primary
Key(SSN,Phone)
) ;
إنشاء جداول وبينهم علاقة واحد لواحد One to One Relationship
Entity Relationship Model (ERD)
Relational Model (Mapping)
SQL (Create Tables)
CREATE TABLE IF NOT EXISTS EMPLOYEE
(
SSN CHAR(4) PRIMARY KEY ,
Name VARCHAR(60) NOT NULL ,
BirthDate Date ,
Salary FLOAT(6,2)
);
CREATE TABLE
DEPARTMENT
(
Dept_No CHAR(2) ,
Dept_Name VARCHAR(50) NOT NULL ,
Manager CHAR(4) UNIQUE
,
Primary Key(Dept_No) ,
Foreign Key (Manager) REFERENCES EMPLOYEE(SSN) );
إنشاء جدول بعلاقة مرجعة -نفس الجدول به المفتاح الرئيسي PK وفى نفس الوقت نفس الجدول به المفتاح الخارجى FK- تسمى Recursion أو Recuirsive Relationship
نموذج Relational/Mapping
DROP TABLE IF EXISTS EMPLOYEE;
CREATE TABLEEMPLOYEE
(
SSN CHAR(4) Primary Key ,
Name
VARCHAR(60) NOT NULL ,
BirthDate Date ,
Salary FLOAT(6,2) ,
Super_SSN CHAR(4) REFERENCES EMPLOYEE(SSN)
) ;
لعرض الجداول التى تم إنشاءها
mysql> Show Tables;
+------------------------+
| Tables_in_testexamples |
+------------------------+
| employee |
| flight |
+------------------------+
2 rows in set (0.01 sec)
لعرض مواصفات جدول تم إنشاءه نستخدم Describe وبعدها أسم
الجدول:
mysql> Describe Employee;
+-----------+--------------+------+-----+---------+-------+
| Field
| Type | Null | Key |
Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| SSN
| char(4) | NO | PRI | NULL |
|
| Name
| varchar(60) | NO |
| NULL | |
| BirthDate | date | YES
| | NULL |
|
| Salary
| float(6,2) | YES | |
NULL | |
| Street
| varchar(100) | YES | | NULL
| |
| City
| varchar(25) | YES | |
Cairo | |
+-----------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
§
عرض أسماء الجداول
SHOW Tables;
§
عرض بناء الجدول
DESCRIBE EMPLOYEE;
§
عرض معلومات عن قيد
SELECT COLUMN_NAME, CONSTRAINT_NAME,
REFERENCED_COLUMN_NAME,
REFERENCED_TABLE_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'Table2';
التعديلات على جداول منشئة فعلا Alter Tables)
-
إنشئ الجدول التالى:
CREATE TABLE Table1 (col1 INTEGER,col2 CHAR(10));
-
لتعديل وتغير أسم الجدول
ALTER TABLE Table1 RENAME Table2;
-
لتغير نوع البياناتMODIFY وتعديل الأسم وإضافة قيود CHANGE
ALTER TABLE Table2
MODIFY col1 TINYINT NOT NULL,
CHANGE col2 col3 CHAR(20);
-
لإضافة حقل جديد لجدول موجود
ALTER TABLE Table2 ADD col4 TIMESTAMP;
-
أى حقل جديد معدل يضاف فى آخر الجدول ولتحديد وضعه فى
ترتيب الحقول يمكن إستخدام كلمة AFTER
| BEFORE كما يلي:
ALTER TABLE Table2 ADD col4 TIMESTAMPAFTER col3;
-
لإضافة قيود جديدة على حقول موجودة
ALTER TABLE Table2
ADD INDEX (col4),
ADD UNIQUE (col1);
-
حذف حقل موجود بالجدول
ALTER TABLE Table2 DROP COLUMN col3;
-
إضافة حقل بقيود جديدة و إضافة قيود على حقول موجودة
ALTER TABLE Table2
ADD col3 INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (col3);
-
لعرض جملة الإنشاء الخاصة بالجدول نكتب الأمر التالى
mysql> show create table table2\G;
*************************** 1. row
***************************
Table: table2
Create Table: CREATE TABLE `table2` (
`col1` tinyint(4) NOT NULL,
`col4` timestamp NOT NULL
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`col3` int(10) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`col3`),
UNIQUE KEY `col1` (`col1`),
KEY
`col4` (`col4`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.01 sec)
-
لإنشاء جدول جديد Table3 بنفس
مواصفات جدول Tabl2 نكتب
Create Table Table3
LIKE Table2;
-
ولإنشاء جدول جديد Table4 بنفس شكل
جدول Table2 وبنفس البيانات نكتب
Create Table Table4 AS
SELECT * FROM Table2;
كما يمكن تحديد حقول معينة فقط بدلا من * وبيانات محددة
بكلمة Where كما سنرى فيما بعد فى جملة SELECT.
-
لحذف جدول
DROP TABLE Table4;
النسخ الاحتياطي Backup لقاعدة البيانات هو عملية اخذ نسخة من الإنشاء ومن البيانات المخزنة لبرامج قاعدة البيانات. وذلك بغرض إسترجاعها Restore فى وقت آخر
لعمل نسخ إحتياطى Backupمن قاعدة البيانات يكتب الأمر كما يلى فى Command Line
mysqldump -u root -p DatabaseName > db_backup.sql
ولعمل إسترجاع Restore النسخ
الإحتياطى فى قاعدة بيانات نكتب الأمر كما يلى فى الـ Command Line
mysql -u root -p DatabaseName < db_backup.sql
سنتعرض فى الشرح القادم إلى مثال/مشروع متكامل نتعلم عليه
ونطبق عليه كل الجمل الخاصة بـ MySQL.
1- الاحتياجات المعلوماتية
:-
المطلوب تصميم قاعدة بيانات تحتوي
علي معلومات تخص مدرسة وهذا طبقا للبيانات التالية:
§ لكل طالب
بالمدرسة رقم وهو رقم فريد لا يتكرر وأسم متفرع لأسم الطالب و باقي الاسم وتاريخ
ميلاد وعنوان ونوع ورقم تليفون ان وجد وعمر الطالب الحالي .
§ وبالطبع قد يدرس
الطالب أكثر من مادة وهذا علي أساس أن المادة توصف برقم فريد لا يتكرر داخل القسم
الواحد وعنوان المادة ولكل طلب في كل مادة درجة .
§ أما القسم فله
رقم فريد لا يتكرر وأسم مميز لا يتكرر والمادة هنا تتبع قسم واحد ( علي سبيل
المثال مادة إعداد التقارير تدرس بقسم الحاسب فقط وغير مختصة بأي مادة أخري في قسم
آخر حتى ولو تشابهت في الاسم).
§
وللمادة مدرس واحد يدرسها
علي أساس إن المدرس الواحد قد يدرس أكثر من مادة.
§ ويسجل عن المدرس رقم مميز للمدرس وأسم ونوع ومرتب ورتبه جامعية وشهاداته التي حصل عليها تاريخ تعينه ومدينته والقسم الذي يعمل به والقسم الذي يديره أن وجد
تصميم البيانات بنموذج (ER - Entity Relational Schema )
الخاص بمشروع المدرسة
تصميم البيانات فى نموذج ( Relational Schema )
تصميم الجداول Tables Design لمشروع المدرسة
========================
جدول
القسم Department
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
DeptNo |
رقم القسم |
char |
4 |
X |
Primary Key |
DName |
أسم القسم |
Varchar |
25 |
X |
Unique |
Manager |
مدير القسم |
char |
4 |
ü |
Foreign Key / Unique |
جدول المدرس Teacher
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
TeacherId |
رقم المدرس |
char |
4 |
X |
Primary Key |
Name |
أسم المدرس |
Varchar |
50 |
X |
Unique |
Gender |
النوع |
Char |
1 |
X |
Check m or f |
Salary |
المرتب |
Float |
6.2 |
ü |
|
Rank |
الرتبة الجامعية |
Varchar |
30 |
ü |
|
HireDate |
تاريخ التعيين |
Date |
8 |
ü |
|
City |
البلد |
varchar |
30 |
ü |
|
DeptWork |
قسم العمل |
char |
4 |
ü |
Foreign Key |
جدول الشهادات الجامعية CollegeDegree
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
|
TeacherId |
رقم المدرس |
char |
4 |
X |
Foreign Key |
Primary Key |
CollegeDegree |
الشهادة |
Varchar |
50 |
X |
|
جدول الطالب Student
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
StudNo |
رقم الطالب |
char |
10 |
X |
Primary Key |
FName |
أسم الطالب |
varchar |
25 |
X |
|
LName |
باقي الأسم |
varchar |
25 |
X |
|
BDate |
تاريخ الميلاد |
Date |
8 |
ü |
|
Address |
العنوان |
Varchar |
100 |
ü |
|
Gender |
النوع |
Char |
1 |
X |
Check m or f |
Phone |
التليفون |
Char |
12 |
ü |
|
جدول المادة Subject
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
|
SubCode |
رقم المادة |
char |
10 |
X |
|
Primary Key |
DeptBelong |
القسم التابعة له |
char |
4 |
X |
Foreign Key |
|
TeacherTaught |
المدرس الملقن |
char |
4 |
ü |
Foreign Key |
|
Title |
عنوان المادة |
varchar |
20 |
X |
|
جدول الدراسة Study
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
|
StudNo |
رقم الطالب |
char |
10 |
X |
Foreign key |
Primary Key |
SubCode |
رقم المادة |
char |
4 |
X |
ForeignKey |
|
DeptNo |
رقم القسم |
char |
4 |
X |
||
Score |
الدرجة |
Float |
5.2 |
ü |
|
=======================
تصميم الجداول Tables Design لمشروع المدرسة
========================
جدول
القسم Department
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
DeptNo |
رقم القسم |
char |
4 |
X |
Primary Key |
DName |
أسم القسم |
Varchar |
25 |
X |
Unique |
Manager |
مدير القسم |
char |
4 |
ü |
Foreign Key / Unique |
جدول المدرس Teacher
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
TeacherId |
رقم المدرس |
char |
4 |
X |
Primary Key |
Name |
أسم المدرس |
Varchar |
50 |
X |
Unique |
Gender |
النوع |
Char |
1 |
X |
Check m or f |
Salary |
المرتب |
Float |
6.2 |
ü |
|
Rank |
الرتبة الجامعية |
Varchar |
30 |
ü |
|
HireDate |
تاريخ التعيين |
Date |
8 |
ü |
|
City |
البلد |
varchar |
30 |
ü |
|
DeptWork |
قسم العمل |
char |
4 |
ü |
Foreign Key |
جدول الشهادات الجامعية CollegeDegree
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
|
TeacherId |
رقم المدرس |
char |
4 |
X |
Foreign Key |
Primary Key |
CollegeDegree |
الشهادة |
Varchar |
50 |
X |
|
جدول الطالب Student
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
StudNo |
رقم الطالب |
char |
10 |
X |
Primary Key |
FName |
أسم الطالب |
varchar |
25 |
X |
|
LName |
باقي الأسم |
varchar |
25 |
X |
|
BDate |
تاريخ الميلاد |
Date |
8 |
ü |
|
Address |
العنوان |
Varchar |
100 |
ü |
|
Gender |
النوع |
Char |
1 |
X |
Check m or f |
Phone |
التليفون |
Char |
12 |
ü |
|
جدول المادة Subject
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
|
SubCode |
رقم المادة |
char |
10 |
X |
|
Primary Key |
DeptBelong |
القسم التابعة له |
char |
4 |
X |
Foreign Key |
|
TeacherTaught |
المدرس الملقن |
char |
4 |
ü |
Foreign Key |
|
Title |
عنوان المادة |
varchar |
20 |
X |
|
جدول الدراسة Study
أسم الحقل |
وصف |
نوع البيانات |
طول الحقل |
القيمة الفارغة |
القيود |
|
StudNo |
رقم الطالب |
char |
10 |
X |
Foreign key |
Primary Key |
SubCode |
رقم المادة |
char |
4 |
X |
ForeignKey |
|
DeptNo |
رقم القسم |
char |
4 |
X |
||
Score |
الدرجة |
Float |
5.2 |
ü |
|
=======================
1- إنشاء قاعدة البيانات المدرسة بأوامر الـ SQL على قاعدة بيانات MySQL.
والآن يمكننا عمل الجداول بالقاعدة من خلال تلك الأوامر
واليك الأوامر
- Create School Database Create
Database School; |
-Department Table:
use School; Create
Table Department ( DeptNo char(4) Primary Key , DName varchar(25) Unique , Manager char(4) ); |
- Teacher Table:
Create
Table Teacher ( TeacherId char(4) Not
Null, Namevarchar(50) Not
Null, Gender Char(1) Not Null Check ( Gender
In('M','m','F','f') ) , Salary FLOAT(7,2), Rank varchar(30), HireDate
Date, City varchar(30), DeptWork char(4) References Department(DeptNo) , Primary Key
(TeacherId), Unique
(Name) ); |
لاحظ أننا قد وضعنا علي حقل Genderأكثر من قيد تم الفصل ما بينهم بمسافة أو أكثر.
ALTER Table
Department Add Foreign
Key(Manager) References Teacher (TeacherID)
|
Create
Table CollegeDegree ( TeacherId char(4) Not Null , CollegeDegree varchar(30) Not Null , Foreign Key
(TeacherId)References Teacher(TeacherId) , Primary
Key(TeacherId , CollegeDegree) ); |
لاحظ هنا أن حقل المفتاح الرئيسي محتوي علي جدولين لذلك
يوضع القيد إجبارا علي مستوي الجدول
- Student Table: Create
Table Student ( StudNo char(10) Not Null Primary Key, FName varchar(25) Not Null, LName varchar(25) Not Null, BDate Date, Address varchar(100), Gender Char(1) Not NullDefault 'M' , Phone Char(12) , Check (
Gender In('M','m','F','f') ) ); - Subject Table: |
Create
Table Subject ( SubCodechar(10)
Not Null, DeptBelong char(4)Not Null References Department(DeptNo) , TeacherTaught char(4)References Teacher(TeacherId) , Title
varchar(20) Not Null, Primary
Key(SubCode , DeptBelong) ); |
- Study Table:
Create
Table Study ( StudNo char(10) Not Null , SubCode char(10) Not Null , DeptNo char(4) Not Null , Score FLOAT(5,2) , Foreign Key
(StudNo) References Student(StudNo) , Foreign Key
(SubCode , DeptNo) References
Subject ( SubCode ,DeptBelong)
, Primary Key
(StudNo , SubCode , DeptNo ) ); |
لاحظ أيضا المفتاح الرئيسي لهذا الجدول فهو مفتاح يضم ثلاث حقول كمفتاح رئيسي, يمكن كحل آخر ينشئ PK عبارة عن ترقيم تلقائى AUTO_INCREMENT ومعه لابد من جعل الثلاثة حقول عليها قيد Unique.