微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建表格的更好方法是什么?

如何解决创建表格的更好方法是什么?

我有提供一些服务的机械师,一个机械师可能提供多种服务,在这种情况下如何更好地制作表格? 我现在拥有的是:
机械表:

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));

而且我需要展示机械师提供哪些服务以及我应该创建什么表? 也许是通过外键引用机械表的服务表,但我还需要存储服务值,那我该怎么办?

解决方法

如果某些机械师可能提供不同的服务,而某些服务可能由不同的机械师提供,那么这是多对多 (M:N) 链接,需要额外的邻接表。

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)
                       );
                         

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。