2011-07-31 14 views
0

私の列にはどのような列があるべきかを記述するdtdファイルがあります。DTDファイルからMySQLテーブルを作成する際の質問

問題は、列に使用する必要があるデータ型、つまりINT、Varchar、Textのいずれの情報でもなく、列の最大長に関する情報がないことです。ほとんどの場所で、私が信じているのは単純に混合データを意味すると#PCDATAと言います。

データタイプと最大長を調べる方法はありますか?または単にテーブルをVarchar (255)にする必要がありますか?

答えて

1

SGMLは有名な型システムがないので、あらゆる種類の要素に対して正しい型を推論する機械化された方法はありません。 #PCDATAは "混合データ"を意味するのではなく、内容が "#PCDATA"の "解析された文字データ"は他の要素を含んではいけませんが、エンティティ参照を含むことができます(SGMLでは包含/除外例外はXMLには存在しません)。 「混合コンテンツ」は(element1 | #PCDATA)のようなもので、データベーススキーマに変換するのがずっと難しくなります。

要素タイプ名からのコンテンツタイプまたはDTD内の有用なコメントから、コンテンツタイプを推測したり、一連のドキュメントを検査してその使用パターンを観察したりすることをお勧めします。

+0

コンテンツタイプは特定できますが、最大長はわかりません。すべての非数値フィールドに対してvarchar 255でなければならないと思いますか? –

+0

DTDは長さに制限を設けていないため、有効なドキュメントには任意の量のコンテンツが含まれている場合があります。実際に問題があり、SGMLパーサで文書を前処理することができない場合は、 'TEXT'カラム型を使うことができます。これは遅くなりますが、任意のテキストデータを扱うことができます。 –

+0

助けてくれてありがとう、SGMLパーサって何?このDTDファイルに続くxmlファイルからのデータによってデータを取り込まなければならないmysqlテーブル用のスキーマを定義するのに役立ちますか? –

関連する問題