0

2 つのキー バリュー ストアを作成したいと考えています。1 つは URL のキーと url の値を持ち、もう 1 つは URL (これは他のテーブルの値) とスコア (整数) を持ちます。

hstoreのドキュメントを読んでみましたが、テーブルの作成方法がわかりません。

URLを文字列として表現したい。URLをその「親URL」にマッピングしています。スコアの考え方は、インデックスが高いほど Web サイトが優れていることを示します (他のページへの接続性とアクセス時間の考え方に基づいて計算されます)。基本的に、いくつかのサンプル データは次のようになります。

key url:    https://maps.google.com/maps?hl=en&tab=wl
parent url: https://www.google.com/

parent url: https://www.google.com/
score: 100

key url: http://www.cracked.com/blog/5-things-you-should-know-before-making-indie-movie/
parent url: http://www.cracked.com/

parent url: http://www.cracked.com/
score: 125
4

1 に答える 1

4

ここで使いたい理由がわかりませんhstore

これは、単純なテーブルのペアでモデル化できます。データの簡単な翻訳は次のとおりです。

CREATE TABLE url_scores(
    parent_url text primary key,
    score integer not null
);

CREATE TABLE url_mappings(
    key_url text not null,
    parent_url text not null references url_scores(parent_url)
);

INSERT INTO url_scores(parent_url, score) VALUES ('https://www.google.com/', 100);
INSERT INTO url_scores(parent_url, score) VALUES ('http://www.cracked.com/', 125);

INSERT INTO url_mappings(key_url, parent_url)
VALUES ('https://maps.google.com/maps?hl=en&tab=wl', 'https://www.google.com/');

INSERT INTO url_mappings(key_url, parent_url)
VALUES ('http://www.cracked.com/blog/5-things-you-should-know-before-making-indie-movie/
', 'http://www.cracked.com/');

... ただし、http/https とドメインを部分に分割し、2 回url_scores保存する代わりに代理キーを使用するなどして、もう少し正規化することをお勧めします。parent_url

ところで、リレーショナル DB がデータの適切なストレージではない可能性は十分にあります。あなたがそれで何をしているのかを知らずに言うのは難しいです。

とにかく、PostgreSQL のチュートリアルと、データベース設計に関する一般的な情報を読んでください。

于 2012-12-03T03:48:58.807 に答える