【问题标题】:How do I make a value in MySQL table to reference another table in the same database?如何在 MySQL 表中创建一个值以引用同一数据库中的另一个表?
【发布时间】:2021-11-20 06:06:37
【问题描述】:

在我列出我的问题之前,让我先给你一些背景信息。
我正在为我的项目使用 python、tkinter 和 MySQL。我的数据库中有 2 个表 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 条此类记录
timtableevents

------------------------------------------------------
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 都有自己的时间表事件,而无需我手动创建每个表,因为创建 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 字典。
有什么办法可以做到这一点?
或者
如果有比我上面列出的更好的方法,请与我分享。提前致谢。

【问题讨论】:

  • 由于sno是主键,不同的btnobject不能有相同的值。
  • @acw1668 好的,如果我将 btnobject 作为主键,那么是否可以以我上面显示的格式存储它?
  • 谁的字段请提供 CREATE TABLE,而不是 DESCRIBE。 上面的示例记录将是将其作为 INSERT INTO 提供。后面的输出示例必须与以前的源数据匹配 - 所以提供所需的行数。
  • 我建议timetablebtn表中的所有字段都是PRIMARY键,snotimetimetableevents表的PRIMARY键。
  • @acw1668,一张表只能有1个主键。但我猜你的意思是“外键”?

标签: python mysql tkinter foreign-keys


【解决方案1】:

为匹配目的创建新表。schema

【讨论】:

  • 您能否详细说明 timetable_events_matching 的作用。我不太清楚。
猜你喜欢
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多