我想创建两个键值存储。一个具有url的键和url的值,另一个具有url(这是其他表的值)和得分(整数)。
我试过阅读hstore documentation,但我真的找不到如何创建表格。
我想将网址表示为字符串。我正在将网址映射到其“父网址”。分数的概念应该更像索引,索引越高,网站越好(根据与其他页面的连接和访问时间的想法计算)。基本上一些示例数据可能如下所示:
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
答案 0 :(得分: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和域分成几部分,可能使用代理键进入url_scores
而不是存储parent_url
两次,等等。
顺便说一句,关系数据库完全有可能不是您数据的正确存储空间。如果不知道你在做什么,很难说。
无论如何,请阅读PostgreSQL教程和一些有关数据库设计的一般信息。