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番目のテーブルを用意することだと思いました:-

表4-T1ref、T2ref、T3ref

T1-3には、TnRefと呼ばれ、基本的にそのテーブルの主キーである新しい列があります。

  1. これは賢明なアプローチのように聞こえますか?
  2. データを入力するときに、各テーブルエントリの一意性を確認する必要があると考えました。一意である場合は、TnRef値をキャプチャし、そうでない場合は、新しい行を挿入して、その後TnRef値を収集します。値を取得したら、すべてをリンクするT4行にデータを入力できます。
  3. ORMはこれを行うための適切なツールですか?
4

1 に答える 1

2
  1. あなたが説明したような多対多の関係については、はい、T1 レコードを T2(s) および T3(s) とリンクする 4 番目のテーブルを持つことは理にかなっていると思います。ただし、T4 がリンクを正しく保存できるように、T2 と T3 にキー列を追加する必要があると思います。

  2. T2 と T3 が拡張され、アプリケーションが (たとえば) T1 の特定のレコードに { recordProp1= someval, recordProp2= someotherval } を追加する要求に対応することを意味していると思います。もしそうなら、はい、最初に 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 に答える