分层数据的数据库设计

时间:2014-02-20 08:59:53

标签: database database-design

我正在尝试设计一个存储大量网址的数据库。现在我想要计算网址各部分之间的不同组合。例如,男士款多少次带有flipkart? flipkart来了多少次?任何想法如何有效地设计它?

2 个答案:

答案 0 :(得分:1)

添加索引为

的“域名”列
create table URLS(
    id longint primary key,
    full_url varchar(255), 
    domain varchar(100)
    page_name varchar(100));
create index on URLS (domain);
create table parameters(
    id longint foreign key referencing URLS(id),
    param_name varchar(100),
    param_value varchar(100));

select count(a.full_url)
from URLS a, parameters b
where a.id=b.id
    and (b.param_name='user' and b.param_value='Jack');

答案 1 :(得分:0)

您可以使用类似于@rjhdby发布的结构。但除此之外,您还需要对所谓的“部分”进行一些程序化的URL路径合并。根据网站的不同,有些并不是很有用。因此,您需要一个可以扩展/构建的映射,然后定期过滤以确定您认为有用的URL部分。这可能会自动发生,因为公共部分将重复并且对于该网站的URL是唯一的。但是,您还需要考虑在URL中间包含身份验证密钥或其他令牌的站点,您需要避免这些。它们将始终是独一无二的,在此分析中没有用处。

假设您正在为已知的有限网站集构建此功能,则可以这样做。但是,如果您说,在互联网服务供应商门口,您将获得疯狂数量的独特网站。任何映射/过滤以确定其路径的正确唯一部分将是一项艰巨的任务。

作为网址中显示的“关键字”的示例,请使用推特状态:https://twitter.com/aneroidx/status/427684072920342528link)。
在这里,第一部分是domain,然后是用户名(但不是真正的“路径”),然后是“status”,这是您知道的一部分要监控的部分,然后是一个独特的“推文” id' - 您也不会考虑某个部分。因此,在将它们放入数据库之前,您可能需要确定这些正确的唯一部分,或者将它们放入原始数据并运行单独的程序,以便根据上述过滤器/规则为唯一部分创建正确的条目。

这是关于分层数据,因为它是关于正确过滤URL路径和部分。