0

我有一个要在 MySQL 中实现的基本数据模型。我将使用 mysqldb 和 SQLalchemy 来做数据部分,从一些 XML 中获取一些数据。

我不太确定如何实现我想做的事情,我想知道是否有人能指出我正确的方向。

我有几个表,每个表都包含一部分数据。

Table 1 - recordTitle, recordID, recordDate
Table 2 - recordProp1, recordProp2, recordProp3
Table 3 - recordPropA, recordPropB, recordPropC

所有的表在自己的空间中都是唯一的,但是T1可以有很多T2和T3,T2/T3可以属于很多T1。有道理?

我想解决这个问题的方法是有一个第四张桌子:-

表 4 - T1ref、T2ref、T3ref

并在 T1-3 中有一个名为 TnRef 的新列,基本上是该表的主键。

  1. 这听起来像一个明智的方法吗?
  2. 我想在填充数据时,我需要检查每个表条目的唯一性,如果是,我捕获 TnRef 值,如果不是,我插入新行并在之后收集 TnRef 值。一旦我有了这个值,我就可以填充将所有内容链接在一起的 T4 行。
  3. ORM 是执行此操作的正确工具吗?
4

1 回答 1

2
  1. 对于您描述的多对多关系,是的,我认为有第四个表将 T1 记录与 T2(s) 和 T3(s) 链接起来是有意义的。不过,我认为您需要向 T2 和 T3 添加一个键列,以使 T4 能够正确存储链接。

  2. 我假设您的意思是 T2 和 T3 将扩展,并且您的应用程序将请求(例如)将 { recordProp1= someval, recordProp2= someotherval } 添加到 T1 中的给定记录。如果是这样,那么是的,您需要先在 T2 上进行查找,然后根据 T1 和 T2 的键将其插入到 T4 中。

  3. 我认为 ORM 绝对是做到这一点的正确工具。当然,您首先要确保 MySQL 中的所有外键关系都是正确的。但是 SqlAlchemy 可以处理多对多关系。看看: http ://docs.sqlalchemy.org/en/latest/orm/relationships.html#many-to-many

于 2012-04-21T21:52:06.333 回答