Database 分层数据的数据库设计
我试图设计一个数据库来存储大量的URL。现在我想知道url各部分之间不同组合的数量。例如,flipkart有多少次提供男士专区?flipkart来了多少次?知道如何有效地设计它吗?添加带有索引的“域”列Database 分层数据的数据库设计,database,database-design,Database,Database Design,我试图设计一个数据库来存储大量的URL。现在我想知道url各部分之间不同组合的数量。例如,flipkart有多少次提供男士专区?flipkart来了多少次?知道如何有效地设计它吗?添加带有索引的“域”列 create table URLS( id longint primary key, full_url varchar(255), domain varchar(100) page_name varchar(100)); create index on URLS
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');
您可以使用类似于@rjhdby发布的结构。但除此之外,您还需要对所谓的“部分”的URL路径进行一些编程整合。根据站点的不同,有些并不真正有用。因此,您需要一个映射,您可以通过它来生成/生成,然后定期筛选,以确定您认为有用的URL的哪些部分。这可能会自动发生,因为公共部分将重复,并且对于该站点的URL是唯一的。但是,您还需要考虑在URL中间包含认证密钥或其他令牌的站点,并且您需要避免这些站点。它们将始终是唯一的,在本分析中没有任何用处 假设你正在为一组已知的有限的站点构建这个,这是可能的。然而,如果你是说,在一个ISPs的大门,你会得到一个独特的网站数量惊人。确定路径的正确唯一部分的任何映射/过滤都将是一项艰巨的任务 作为URL中出现的“键”的一个示例,以twitter状态为例:
https://twitter.com/aneroidx/status/427684072920342528
()。这里,第一部分是
这是一个关于分层数据的详细说明,因为它是关于正确过滤URL路径和节的说明。这只是一个示例。分层可以更大。在这种情况下,如何跟踪单个部分以及不同组件组合的计数?让我给你举个例子,假设xyz来了,那么x,x,y,y和xy…现在我想知道x和y一起来了多少次?此外,x和y分别出现了多少次?拿起笔和纸,写出这些部件的完整列表,并添加所需字段。或者在选择查询中简单地使用“LIKE”。我看到URL的3个全局部分。1-域,2-页面名称(例如index.html)和3-参数,在“?”之后“如果不是url…jst for xyz,你能为我提供一个更通用的解决方案吗?如果你想从参数中获得更多细节,只需再创建一个表创建表参数(id LONGINT外键,par_mane VARCHAR(255),par_值(255));在主表的add列'id PRIMARY KEY'中,我只是在寻找这种解决方案……所以最好将整个url拆分为多个相互关联的表……(映射)或者我简单地把它放在一个表中,以时间戳作为主键,有多个字段?我建议将它分成两个表,这样您就可以在一个表中输入原始URL和时间戳数据(可能有一个单独的
域
列)。在第二个表中,将过滤规则应用于原始表中的URL,然后根据需要插入带有计数/时间戳的记录。对于层次结构本身,使用这两个表作为另一个答案是可以的,但是要在其中获得正确的数据需要一些额外的努力,正如我上面所描述的。您可以将映射规则放入一个表中,但您可能会发现,将这些规则作为代码的一部分放入一个单独的可读/可扩展文件中会更容易。您不确定这是什么意思。链接