sql - টেবিল ডিজাইন করার সময় এক থেকে এক, এক থেকে একাধিক এবং অনেক থেকে অনেক সম্পর্ক কিভাবে বাস্তবায়ন করা যায়?




বোর্ড পরীক্ষার খাতায় লেখার নিয়ম (2)

সম্পর্কের ধরনগুলির জন্য এখানে কিছু বাস্তব বিশ্ব উদাহরণ রয়েছে:

1: 1

একটি সম্পর্ক যদি এক এবং একমাত্র টেবিলের একটি রেকর্ড টেবিলের একটিতে সর্বাধিক এক রেকর্ডের সাথে সম্পর্কিত হয়।

এক থেকে এক সম্পর্ক স্থাপন করার জন্য, টেবিলের প্রাথমিক কী (কোন অনাথ রেকর্ড সহ) টেবিলের দ্বিতীয় কী (অনাথ রেকর্ডের সাথে) হতে হবে।

উদাহরণ স্বরূপ:

CREATE TABLE Gov(
    GID number(6) PRIMARY KEY, 
    Name varchar2(25), 
    Address varchar2(30), 
    TermBegin date,
    TermEnd date
); 

CREATE TABLE State(
    SID number(3) PRIMARY KEY,
    StateName varchar2(15),
    Population number(10),
    SGID Number(4) REFERENCES Gov(GID), 
    CONSTRAINT GOV_SDID UNIQUE (SGID)
);

INSERT INTO gov(GID, Name, Address, TermBegin) 
values(110, 'Bob', '123 Any St', '1-Jan-2009');

INSERT INTO STATE values(111, 'Virginia', 2000000, 110);

1 মি

টেবিলে একটি বা একাধিক রেকর্ডের সাথে যদি টেবিলের একটি রেকর্ড থেকে এক রেকর্ড থাকে তবে কেবল একটি সম্পর্ক অনেকের মধ্যে একটি। তবে, টেবিলের একটি রেকর্ড টেবিলের মধ্যে আরও একটি রেকর্ডের সাথে সম্পর্কিত হতে পারে না।

অনেক সম্পর্কের মধ্যে একটি স্থাপন করতে, টেবিলের প্রাথমিক কী ("এক" টেবিল) টেবিল বি ("অনেক" টেবিল) এর সেকেন্ডারি কী হতে হবে।

উদাহরণ স্বরূপ:

CREATE TABLE Vendor(
    VendorNumber number(4) PRIMARY KEY,
    Name varchar2(20),
    Address varchar2(20),
    City varchar2(15),
    Street varchar2(2),
    ZipCode varchar2(10),
    Contact varchar2(16),
    PhoneNumber varchar2(12),
    Status varchar2(8),
    StampDate date
);

CREATE TABLE Inventory(
    Item varchar2(6) PRIMARY KEY,
    Description varchar2(30),
    CurrentQuantity number(4) NOT NULL,
    VendorNumber number(2) REFERENCES Vendor(VendorNumber),
    ReorderQuantity number(3) NOT NULL
);

এম: এন

টেবিলের একটি রেকর্ড যদি টেবিল বিতে এক বা একাধিক রেকর্ডের সাথে সম্পর্কিত হয় তবে কেবল একটি সম্পর্ক অনেকের জন্য হয় এবং কেবলমাত্র।

অনেকগুলি সম্পর্ক স্থাপন করতে, "ক্লাসস্টুডেন্ট রিলেশন" নামক একটি তৃতীয় টেবিল তৈরি করুন যা টেবিলের এবং টেবিলের উভয় টেবিলের প্রাথমিক কীগুলি থাকবে।

CREATE TABLE Class(
    ClassID varchar2(10) PRIMARY KEY, 
    Title varchar2(30),
    Instructor varchar2(30), 
    Day varchar2(15), 
    Time varchar2(10)
);

CREATE TABLE Student(
    StudentID varchar2(15) PRIMARY KEY, 
    Name varchar2(35),
    Major varchar2(35), 
    ClassYear varchar2(10), 
    Statusvarchar2(10)
);  

CREATE TABLE ClassStudentRelation(
    StudentID varchar2(15) NOT NULL,
    ClassID varchar2(14) NOT NULL,
    FOREIGN KEY (StudentID) REFERENCES Student(StudentID), 
    FOREIGN KEY (ClassID) REFERENCES Class(ClassID),
    UNIQUE (StudentID, ClassID)
);

কিছু উদাহরণ দিয়ে টেবিল ডিজাইন করার সময় কেউ কি এক-এক, এক থেকে একাধিক এবং অনেক-অনেক সম্পর্ককে কিভাবে বাস্তবায়ন করতে পারে তা ব্যাখ্যা করতে পারেন?


এক থেকে এক (1-1) সম্পর্ক: এটি প্রাথমিক এবং বিদেশী কী (শুধুমাত্র একটি রেকর্ড বিদেশী কী সম্পর্কিত প্রাথমিক কী ) মধ্যে সম্পর্ক । এই এক সম্পর্ক এক।

অনেকে (1-এম) সম্পর্কের মধ্যে একটি: এটি প্রাথমিক এবং বিদেশী কী সম্পর্কগুলির মধ্যে সম্পর্কও রয়েছে তবে এখানে একাধিক রেকর্ড সম্পর্কিত প্রাথমিক কী (অর্থাত্ টেবিল এটির বই তথ্য এবং টেবিল বিয়ের একটি বইয়ের একাধিক প্রকাশক রয়েছে)।

অনেকে অনেকে (এমএম): অনেকে অনেকের মধ্যে দুটি মাত্রা অন্তর্ভুক্ত করে, নমুনা সহ নীচের সম্পূর্ণরূপে ব্যাখ্যা করেছে।

-- This table will hold our phone calls.
CREATE TABLE dbo.PhoneCalls
(
   ID INT IDENTITY(1, 1) NOT NULL,
   CallTime DATETIME NOT NULL DEFAULT GETDATE(),
   CallerPhoneNumber CHAR(10) NOT NULL
)
-- This table will hold our "tickets" (or cases).
CREATE TABLE dbo.Tickets
(
   ID INT IDENTITY(1, 1) NOT NULL,
   CreatedTime DATETIME NOT NULL DEFAULT GETDATE(),
   Subject VARCHAR(250) NOT NULL,
   Notes VARCHAR(8000) NOT NULL,
   Completed BIT NOT NULL DEFAULT 0
)
-- This table will link a phone call with a ticket.
CREATE TABLE dbo.PhoneCalls_Tickets
(
   PhoneCallID INT NOT NULL,
   TicketID INT NOT NULL
)




database-design