Чӣ тавр пайванди як ба як дар базаи маълумотҳо амалӣ кардан мумкин аст?
sobes.tech AI
Ҷавоб аз AI
Вазъ "як-ёки-ёки" дар базаи маълумотиҳои муоширатӣ бо ёрии маҳдудияти беназм ва калиди хориҷӣ амалӣ мешавад. роҳҳои маъмултарин:
-
Истифодаи калиди асосии умумӣ: Ду ҷадвал майдони якхеларо ҳамчун калиди асосӣ истифода мебаранд, ки ҳамчунин ҳамчун калиди хориҷӣ, ки ба калиди асосии ҷадвали дигар ишора мекунад.
-
Истифодаи калиди хориҷии беназм: Дар яке аз ҷадвалҳо майдон эҷод мешавад, ки ҳамчун калиди хориҷӣ ишора ба калиди асосии дигар ҷадвал аст ва ба ин майдон маҳдудияти беназм татбиқ мешавад.
Масалан бо калиди асосии умумӣ (дар SQL Server):
CREATE TABLE UserProfiles (
UserId INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50)
);
CREATE TABLE UserDetails (
UserId INT PRIMARY KEY, // Ин ҳам калиди асосӣ ва ҳам калиди хориҷӣ
Address NVARCHAR(100),
Phone NVARCHAR(20),
CONSTRAINT FK_UserDetails_UserProfiles FOREIGN KEY (UserId) REFERENCES UserProfiles(UserId)
);
Масалан бо калиди хориҷии беназм (дар SQL Server):
CREATE TABLE Users (
UserId INT PRIMARY KEY,
Username NVARCHAR(50) UNIQUE
);
CREATE TABLE UserInfo (
UserInfoId INT PRIMARY KEY, // Калиди асосии UserInfo
UserId INT UNIQUE, // Калиди хориҷии беназм, ки ба Users ишора мекунад
Email NVARCHAR(100),
CONSTRAINT FK_UserInfo_Users FOREIGN KEY (UserId) REFERENCES Users(UserId)
);
Интихоб байни ин усулҳо вобаста ба семантикаи маълумот ва қулайии дастрасӣ мебошад. Пайвастшавӣ тавассути калиди асосии умумӣ одатан вақте истифода мешавад, ки маълумоти ҷадвали дуввум ҳамчун васеъкунии ихтиёрии аввалин мебошад. Калиди хориҷии беназм бештар чандир аст, агар калидҳои асосии ҷадвалҳо дар ибтидо мувофиқат накунанд.