2017-06-22 15 views
1

私は作業している映画データベースを持っており、PHP側で作業を始める前にデータベースが確実であることを確認したいと思います。テキスト文字列を一意のIDに変換する方法

私は大量にインポートされたデータをウェブからスクレイプしているので、ジャンルや俳優の列の結果はテキスト文字列になっています。私はそれらを一意のIDに変換し、関係テーブルを作成したいと思う。

基本的にそれが今どのように:

作品の表

Movie ID - Movie name - Genres - Actors 
1  - Inception - Sci Fi - Leonardo Di Caprio, Ellen Page 
私はそれをしたいどのように

作品の表

Movie ID - Movie Name 
1  - Inception 

ジャンル表

Genre ID - Genre Name 
1  - Sci Fi 

俳優表

Actor ID - Actor Name 
1  - Leonardo Di Caprio 
2  - Ellen Page 

ジャンル関係表

Movie ID - Genre ID 
1  - 1 

俳優の関係表

Movie ID - Actor ID 
1  - 1 
1  - 2 

それだけのジャンルだった場合、私は手ではなく、私はシンプルを考え出すのに苦労しています映画や俳優の何千ものがあるのでこれを行うことができますこのすべてのデータを変換するアプローチ。

私はすべてのデータのcsvダンプを持っており、これをこの形式でインポートするためにPHPスクリプトを使用して実行できるとわかっています。または、SQLコマンドを実行してこのようにデータを並べ替えることができるかどうかわかりませんデータベースには200,000以上の映画があります)。

これを達成するためのヒントやアイデアは非常に高く評価されます。

答えて

0

このような何かが仕事でソートされます:

For each record 
    Do 
     Select from genre table using genre string to get genre ID 
     If select did not return ID, INSERT new genre string to add new genre ID 
    While Select did not return ID 
    For each actor 
     Do 
     Select from genre table using actor string to get actor ID 
     If select did not return ID, INSERT new actor string to add new actor ID 
     While Select did not return ID 
    ... 

しかし、問題があるでしょう:同じ名前の

  • 作品ジャンル名の
  • 異なるスペル(SF、SCI Fiの、 SFフィクション)
  • 俳優名のスペルが異なります。あなたはIMDBの俳優たちがマイクやマイケルであることがわかります。そして、女性は、あなたが任意の変化のために同じIDコードを取得することができ、いくつかの既存のデータベースへのアクセスを必要とするだろうと固定するために他の人
  • 同じ名前を持つ俳優

いくつかの映画の中で彼らの結婚の名前を使用しますが、ない場合がありますジャンル名、俳優リストを提供するときのムービーなどが含まれます。

関連する問題