مفهوم دامنه Domain در پایگاه داده
دامنه (Domain) در پایگاه داده به مجموعهای از مقادیر مجاز برای یک ویژگی یا ستون خاص اشاره دارد. دامنه نوع دادهای را که یک ستون میتواند ذخیره کند و محدودیتهای مربوط به آن مقادیر را تعیین میکند. به عبارت دیگر، دامنه مشخص میکند که چه نوع دادههایی (مانند عدد، رشته، تاریخ و غیره) و چه محدودههایی (مانند اعداد بین ۱ تا ۱۰۰) میتوانند در یک ستون ذخیره شوند.
ویژگیهای دامنه:
- نوع داده (Data Type): نوع دادهای که ستون میتواند ذخیره کند، مانند عدد صحیح، رشته، تاریخ و غیره.
- محدودیتها (Constraints): محدودیتهایی که روی مقادیر ستون اعمال میشود، مانند محدودهی مجاز برای اعداد یا طول مجاز برای رشتهها.
- مقادیر پیشفرض (Default Values): مقداری که به طور پیشفرض برای ستون در نظر گرفته میشود اگر کاربر مقداری وارد نکند.
مثالها:
- دامنه عددی: یک ستون میتواند فقط اعداد صحیح بین ۱ تا ۱۰۰ را بپذیرد.
- دامنه رشتهای: یک ستون میتواند فقط رشتههایی با طول حداکثر ۵۰ کاراکتر را بپذیرد.
- دامنه تاریخ: یک ستون میتواند فقط تاریخهای بین ۱ ژانویه ۲۰۰۰ تا ۳۱ دسامبر ۲۰۲۰ را بپذیرد.
اهمیت دامنه:
- یکپارچگی دادهها (Data Integrity): دامنهها کمک میکنند تا دادههای نامعتبر وارد پایگاه داده نشوند.
- اعتبارسنجی (Validation): دامنهها به عنوان یک لایه اعتبارسنجی عمل میکنند و از ورود دادههای نادرست جلوگیری میکنند.
- سادهسازی طراحی پایگاه داده: دامنهها به طراحی پایگاه داده کمک میکنند و آن را قابل فهمتر و مدیریتپذیرتر میسازند.
مثال در SQL:
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Age INT CHECK (Age >= 18 AND Age <= 65),
HireDate DATE DEFAULT GETDATE()
);
در این مثال:
FirstName
وLastName
دامنهی رشتهای با طول حداکثر ۵۰ کاراکتر دارند.Age
دامنهای دارد که فقط مقادیر بین ۱۸ تا ۶۵ را میپذیرد.HireDate
دامنهای دارد که تاریخ استخدام را ذخیره میکند و اگر مقداری وارد نشود، تاریخ فعلی به عنوان پیشفرض در نظر گرفته میشود.
به طور کلی، دامنهها ابزار قدرتمندی برای کنترل و مدیریت دادهها در پایگاه داده هستند.
۱. دامنه برای کد ملی (National ID)
فرض کنید میخواهیم یک ستون برای کد ملی در جدول Customers
ایجاد کنیم. کد ملی باید یک رشته با طول دقیقاً ۱۰ کاراکتر باشد و فقط شامل اعداد باشد.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
NationalID CHAR(10) CHECK (LEN(NationalID) = 10 AND NationalID NOT LIKE '%[^0-9]%')
);
- دامنه: رشتهای با طول دقیقاً ۱۰ کاراکتر و فقط شامل اعداد.
۲. دامنه برای ایمیل (Email)
یک ستون برای ذخیره آدرس ایمیل در جدول Users
ایجاد میکنیم. ایمیل باید شامل یک @
باشد و پس از آن یک دامنه معتبر (مانند .com
، .ir
و غیره) داشته باشد.
CREATE TABLE Users (
UserID INT PRIMARY KEY,
Email VARCHAR(100) CHECK (Email LIKE '%@%._%')
);
- دامنه: رشتهای که شامل
@
و یک نقطه (.
) پس از آن باشد.
۳. دامنه برای سن (Age)
یک ستون برای سن در جدول Students
ایجاد میکنیم. سن باید بین ۵ تا ۱۰۰ سال باشد.
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Age INT CHECK (Age >= 5 AND Age <= 100)
);
- دامنه: عددی بین ۵ تا ۱۰۰.
۴. دامنه برای جنسیت (Gender)
یک ستون برای جنسیت در جدول Employees
ایجاد میکنیم. جنسیت فقط میتواند یکی از دو مقدار Male
یا Female
باشد.
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
Gender CHAR(1) CHECK (Gender IN ('M', 'F'))
);
- دامنه: فقط مقادیر
M
(مرد) یاF
(زن) مجاز هستند.
۵. دامنه برای تاریخ تولد (BirthDate)
یک ستون برای تاریخ تولد در جدول Members
ایجاد میکنیم. تاریخ تولد باید قبل از تاریخ فعلی باشد و کاربر باید حداقل ۱۸ سال داشته باشد.
CREATE TABLE Members (
MemberID INT PRIMARY KEY,
BirthDate DATE CHECK (BirthDate <= GETDATE() AND DATEDIFF(YEAR, BirthDate, GETDATE()) >= 18)
);
- دامنه: تاریخی که حداقل ۱۸ سال قبل از تاریخ فعلی باشد.
۶. دامنه برای کد پستی (PostalCode)
یک ستون برای کد پستی در جدول Addresses
ایجاد میکنیم. کد پستی باید یک رشته با طول دقیقاً ۱۰ کاراکتر باشد و فقط شامل اعداد باشد.
CREATE TABLE Addresses (
AddressID INT PRIMARY KEY,
PostalCode CHAR(10) CHECK (LEN(PostalCode) = 10 AND PostalCode NOT LIKE '%[^0-9]%')
);
- دامنه: رشتهای با طول دقیقاً ۱۰ کاراکتر و فقط شامل اعداد.
۷. دامنه برای امتیاز (Rating)
یک ستون برای امتیاز در جدول Products
ایجاد میکنیم. امتیاز باید بین ۱ تا ۵ باشد.
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
Rating INT CHECK (Rating >= 1 AND Rating <= 5)
);
- دامنه: عددی بین ۱ تا ۵.
۸. دامنه برای شماره تلفن (PhoneNumber)
یک ستون برای شماره تلفن در جدول Contacts
ایجاد میکنیم. شماره تلفن باید یک رشته با طول دقیقاً ۱۱ کاراکتر باشد و فقط شامل اعداد باشد.
CREATE TABLE Contacts (
ContactID INT PRIMARY KEY,
PhoneNumber CHAR(11) CHECK (LEN(PhoneNumber) = 11 AND PhoneNumber NOT LIKE '%[^0-9]%')
);
- دامنه: رشتهای با طول دقیقاً ۱۱ کاراکتر و فقط شامل اعداد.
۹. دامنه برای مقدار درصد (Percentage)
یک ستون برای درصد در جدول Discounts
ایجاد میکنیم. درصد باید بین ۰ تا ۱۰۰ باشد.
CREATE TABLE Discounts (
DiscountID INT PRIMARY KEY,
Percentage DECIMAL(5,2) CHECK (Percentage >= 0 AND Percentage <= 100)
);
- دامنه: عددی بین ۰ تا ۱۰۰.
۱۰. دامنه برای وضعیت سفارش (OrderStatus)
یک ستون برای وضعیت سفارش در جدول Orders
ایجاد میکنیم. وضعیت سفارش فقط میتواند یکی از مقادیر Pending
، Shipped
یا Delivered
باشد.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderStatus VARCHAR(20) CHECK (OrderStatus IN ('Pending', 'Shipped', 'Delivered'))
);
- دامنه: فقط مقادیر
Pending
،Shipped
یاDelivered
مجاز هستند.
این مثالها نشان میدهند که چگونه دامنهها میتوانند برای کنترل دقیقتر دادهها و جلوگیری از ورود مقادیر نامعتبر استفاده شوند.
دیدگاه شما