2005-12-14
Amazonはメタデータが不足してる、の続き
メタデータの項目はどうしようか、そういや前に作りかけた時はやたらと項目が増えてカラムを増やすと大変なことになった気がするなぁ、そもそも書籍とDVDでは必要な項目その他が違うし、じゃあメタデータの項目は自由に増やせばいいじゃん、あれそーいやGoogleBaseってそういう構造だっけ?*1
……とか思って「じゃー誰か連携するの作るじゃろ」で放置予定だったのですが、んでも巻数順に並べ換える機能とかなさそうだし、とりあえずスキーマだけ考えた*2。
CREATE TABLE `ASINメタデータ` ( `asin` char(20) NOT NULL, -- あれ、ASINって何桁だっけ? `メタデータ値ID` int unsigned NOT NULL, `serial` int unsigned, UNIQUE (`asin`, `メタデータ値ID`), KEY (`メタデータ値ID`), FOREIGN KEY (`メタデータ値ID`) REFERENCES `メタデータ値` (`id`) ); CREATE TRABLE `メタデータ名` ( `id` int unsigned NOT NULL auto_increment, `name` text NOT NULL, PRIMARY KEY (`id`), KEY (`name`) ); CREATE TABLE `メタデータ値` ( `id` int unsigned NOT NULL auto_increment, `メタデータ名ID` int unsigned NOT NULL, `value` text NOT NULL, PRIMARY KEY (`id`), UNIQUE (`メタデータ名ID`, `value`), KEY (`value`), FOREIGN KEY (`メタデータ名ID`) REFERENCES `メタデータ名` (`id`) );
項目名なんて気にせずタグで一律管理ってのも考えたけど、それはそれで情報量が減るし、まあタグで入れるときに[シリーズ名:星界の紋章:1]とかで管理するようにすりゃええじゃろとか思ってとりあえずこんな形に。
これでちゃんと要件が満たせるのか(目的の情報が引けるのか)とか、パフォーマンス的に問題ないのかとか、そのへんは全然検証してませんけど。とりあえず忘れないうちに頭の中に浮かんだものをダンプしとけと。