مفهوم دامنه Domain در پایگاه داده

دامنه (Domain) در پایگاه داده به مجموعه‌ای از مقادیر مجاز برای یک ویژگی یا ستون خاص اشاره دارد. دامنه نوع داده‌ای را که یک ستون می‌تواند ذخیره کند و محدودیت‌های مربوط به آن مقادیر را تعیین می‌کند. به عبارت دیگر، دامنه مشخص می‌کند که چه نوع داده‌هایی (مانند عدد، رشته، تاریخ و غیره) و چه محدوده‌هایی (مانند اعداد بین ۱ تا ۱۰۰) می‌توانند در یک ستون ذخیره شوند.

ویژگی‌های دامنه:

  1. نوع داده (Data Type): نوع داده‌ای که ستون می‌تواند ذخیره کند، مانند عدد صحیح، رشته، تاریخ و غیره.
  2. محدودیت‌ها (Constraints): محدودیت‌هایی که روی مقادیر ستون اعمال می‌شود، مانند محدوده‌ی مجاز برای اعداد یا طول مجاز برای رشته‌ها.
  3. مقادیر پیش‌فرض (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 مجاز هستند.

این مثال‌ها نشان می‌دهند که چگونه دامنه‌ها می‌توانند برای کنترل دقیق‌تر داده‌ها و جلوگیری از ورود مقادیر نامعتبر استفاده شوند.

دیدگاه شما

نشانی ایمیل شما منتشر نخواهد شد.