创建 table 的更好方法是什么?
what is a better way to create table?
我有提供某些服务的机械师,机械师可能会提供多项服务,在这种情况下如何更好地制作 table?
我现在拥有的是:
机械师 table :
create table mechanic(
id_master int not null unique,
rating int DEFAULT 10,
start_time TIME not null,
end_time TIME not null,
work_or_not BOOL DEFAULT 1,
Constraint FK_masterID_userID FOREIGN KEY(id_master) REFERENCES user(id_user),
Constraint Check_STARTTIME_ENDTIME check(start_time<end_time),
Constraint CHECK_FOR_STARTTIME CHECK(start_time>'-1:0:0' AND HOUR(start_time)<23),
Constraint CHECK_FOR_ENDTIME CHECK(end_time>'-1:0:0' AND HOUR(end_time)<23));
我需要展示机械师提供的服务以及我应该创建什么 table?
也许服务 table 通过外键引用机械师 table 但我还需要存储服务值,所以我应该怎么做?
如果某些技工可能提供不同的服务,而某些服务可能由不同的技工提供,那么这是多对多 (M:N) link,需要额外的邻接 table。
CREATE TABLE mechanic ( id_mechanic INT AUTO_INCREMENT PRIMARY KEY
-- , ... {another columns}
);
CREATE TABLE service ( id_service INT AUTO_INCREMENT PRIMARY KEY
-- , ... {another columns}
);
CREATE TABLE adjacency ( id_mechanic INT NOT NULL,
id_service INT NOT NULL,
PRIMARY KEY (id_mechanic, id_service),
FOREIGN KEY (id_mechanic) REFERENCES mechanic (id_mechanic),
FOREIGN KEY (id_service) REFERENCES service (id_service)
);
我有提供某些服务的机械师,机械师可能会提供多项服务,在这种情况下如何更好地制作 table?
我现在拥有的是:
机械师 table :
create table mechanic(
id_master int not null unique,
rating int DEFAULT 10,
start_time TIME not null,
end_time TIME not null,
work_or_not BOOL DEFAULT 1,
Constraint FK_masterID_userID FOREIGN KEY(id_master) REFERENCES user(id_user),
Constraint Check_STARTTIME_ENDTIME check(start_time<end_time),
Constraint CHECK_FOR_STARTTIME CHECK(start_time>'-1:0:0' AND HOUR(start_time)<23),
Constraint CHECK_FOR_ENDTIME CHECK(end_time>'-1:0:0' AND HOUR(end_time)<23));
我需要展示机械师提供的服务以及我应该创建什么 table? 也许服务 table 通过外键引用机械师 table 但我还需要存储服务值,所以我应该怎么做?
如果某些技工可能提供不同的服务,而某些服务可能由不同的技工提供,那么这是多对多 (M:N) link,需要额外的邻接 table。
CREATE TABLE mechanic ( id_mechanic INT AUTO_INCREMENT PRIMARY KEY
-- , ... {another columns}
);
CREATE TABLE service ( id_service INT AUTO_INCREMENT PRIMARY KEY
-- , ... {another columns}
);
CREATE TABLE adjacency ( id_mechanic INT NOT NULL,
id_service INT NOT NULL,
PRIMARY KEY (id_mechanic, id_service),
FOREIGN KEY (id_mechanic) REFERENCES mechanic (id_mechanic),
FOREIGN KEY (id_service) REFERENCES service (id_service)
);