正規化された方法でデータベースに解析するXMLファイルがあります。表2は、1対多の関係表を作成するためのアイデアです。名前、タイトルはファイルグループごとに決して変更されませんが、ダウンロードパスは異なります。XMLファイルを正規化されたデータベーススキーマに解析する
表1
id | name | title | download_path
----------------------------------------------------------------------
1 | FileGroup 1 | This is the first file group | /this/1/1.zip
2 | FileGroup 1 | This is the first file group | /this/1/2.zip
3 | FileGroup 2 | This is the second file group | /this/2/1.zip
4 | FileGroup 2 | This is the second file group | /this/2/2.zip
5 | FileGroup 3 | This is the third file group | /this/3/1.zip
XMLファイル
<Item>
<Name>File Group 1</Name>
<Title>This is the first file group</Title>
<DownloadPath>/this/1/1.zip</DownloadPath>
</Item>
<Item>
<Name>File Group 1</Name>
<Title>This is the first file group</Title>
<DownloadPath>/this/1/2.zip</DownloadPath>
</Item>
<Item>
<Name>File Group 2</Name>
<Title>This is the second file group</Title>
<DownloadPath>/this/2/1.zip</DownloadPath>
</Item>
<Item>
<Name>File Group 2</Name>
<Title>This is the second file group</Title>
<DownloadPath>/this/2/2.zip</DownloadPath>
</Item>
<Item>
<Name>File Group 3</Name>
<Title>This is the third file group</Title>
<DownloadPath>/this/3/1.zip</DownloadPath>
</Item>
表2
group_id | file_id
-----------------------------
1 | 1
1 | 2
2 | 3
2 | 4
3 | 5
XMLによって解析する際に、これを行うための最善の方法は何ですか。 XMLデータを配列に入れて各アイテムをforeachすると、それらを素早くグループ化してテーブル2に関係を作成できるようにする必要があります。テーブル1を作成した後、リレーションシップテーブルが、それでもグループ化するにはどうすればいいのか分かりません。 XMLには、名前とタイトル以外のグループに分類されているとは言いません。各グループは、任意の数のファイルダウンロードパスを持つことができます。
私はXMLファイルの作成について言及していません。そのすべて私は対処する必要があります。
ありがとうございます。私のXMLは良いです、私はすぐに上記の例を簡単に編集しました。 Iveは変化を起こしました。私はスキーマをもう一度見ていきます。 – madphp
また、上記の表は、データベースの正規化における2番目の正規形式です。私はそれがより良いことを認めます。 – madphp
@madphpテーブルが2NFにありません。タイトルは機能的には名前にのみ依存しています。ただし、名前は候補キーではありません。これは2NFに違反します。 –