2012-04-21 56 views
0

我有一個基本的數據模型,我想在MySQL中實現。我將使用mysqldb和SQLalchemy來完成數據部分,從一些XML中獲取一些數據。外鍵和基本關係表

我真的不知道如何實現我想要做的,我想知道如果有人能在正確的方向指向我。

我有幾張表,每張表都包含一段數據。

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

所有的表都在自己的空間獨特,但T1可以有很多T2S和T3S和T2/T3可以屬於很多的T1。合理?

我想解決這個方式是有一個四表: -

表4 - T1ref,T2ref,T3ref

,並在T1-3新colunm被稱爲TnRef並基本上是該表的主鍵。

  1. 這聽起來像一個明智的做法?
  2. 我想通填充數據的時候,我需要檢查每一個獨特表項,如果是,我捕捉TnRef值,如果它的心不是我插入新行和收集後的TnRef值。一旦我有了價值,我可以填充將所有內容鏈接在一起的T4行。
  3. ORM是正確的工具嗎?
+1

它看起來不正常。 – Flavius 2012-04-21 21:37:53

+0

這是實際數據庫的抽象表示法 - 我更關心在MySQL中如何實現FK和PK的機制。就我所瞭解的過程而言,我認爲實際的數據模型是正常化的。 – 2012-04-21 21:47:29

回答

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

+0

太棒了,謝謝 - 我打算在所有三張表中都有關鍵字段,並且使用t4作爲持有我想要捕捉的關係的'經紀人'。感謝您的時間,我會閱讀您的鏈接。 – 2012-04-21 21:55:36