如何在MySQL表中创建一个值来引用同一数据库中的另一个表?

2024-05-02 21:15:26 发布

您现在位置:Python中文网/ 问答频道 /正文

在我列出我的问题之前,让我先给你一点背景知识。
我在我的项目中使用python、tkinter和MySQL。我的数据库timetablebtn中有两个表,其字段为:

----------------------------------------------------------
Field     | Type          | Null | Key | Default | Extra |
----------+---------------+------+-----+---------+--------
sno       | int(5)        | NO   | PRI |   0     |       |
btnobject | varchar(50)   | NO   |     |  NULL   |       |
tabledate | varchar(20)   | NO   |     |  NULL   |       |
----------------------------------------------------------

上面的示例记录是:1,"btnobject1","01/01/21"2,"btnobject2","02/01/21
我将使用下面的sql命令实现这一点
INSERT INTO timetablebtn VALUES (1,"btnobject1","01/01/21");
此表中有24条此类记录。
和{}:

------------------------------------------------------
Field  | Type         | Null | Key | Default | Extra |
-------+--------------+------+-----+---------+-------+
sno    | int(5)       | NO   | PRI |   0     |       |  
time   | varchar(20)  | NO   |     |  NULL   |       |
events | varchar(100) | NO   |     |  NULL   |       |
------------------------------------------------------

这个记录的一个例子是:1,"07:30-08:30","Exercise"
我想要的是timetablebtn表中的每个btnobject都引用timetablevents的不同实例,也就是说,我希望每个btnobject都有自己的TimeTableEvents,而不需要我手动创建每个表,因为创建24个表是一项艰巨的工作。

我希望btnobject是一个外键,其中新表的结构是:

---------------------------------------------
btnobject  | sno | time        | events     |
-----------+-----+-------------+------------+
btnobject1 | 1   | 07:30-08:30 | Exercise   |
           | 2   | 08:30-09:00 | Breakfast  |
           | 3   | 09:00-11:00 | HackerRank |
btnobject2 | 1   | 07:30-08:30 | Exercise   |
           | 2   | 08:30-09:00 | Breakfast  |
           | 3   | 09:00-11:00 | Read books |
---------------------------------------------


创建一个以btnobject作为外键的表,其中表结构为:

--------------------
btnobject  | details
-----------+--------
btnobject1 | {'sno':[1,2,3],'time':['07:30-08:30','08:30-09:00','09:00-11:00'],'events':['Exercise','Breakfast','HackerRank'] }
btnobject2 | {'sno':[1,2,3],'time':['07:30-08:30','08:30-09:00','09:00-11:00'],'events':['Exercise','Breakfast','Read books'] }

其中details列下的元素是python字典。
有没有办法做到这一点?

如果有比我上面列出的更好的方法,请与我分享。提前谢谢


Tags: nofieldtimetype记录eventsnullvarchar