Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 分层数据的数据库设计_Database_Database Design - Fatal编程技术网

Database 分层数据的数据库设计

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

我试图设计一个数据库来存储大量的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 (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
()。
这里,第一部分是域< /C>,然后是用户名(但不是真正的‘PATH’),然后是“<代码>状态> /代码>”,这是一个你知道的部分,是一个监控的部分,然后是一个独特的“twitt ID”,你也不会考虑这个部分。因此,您可能需要先确定这些正确的唯一节,然后再将它们放入数据库,或者将它们放入原始文件并运行单独的程序,以便根据上述过滤器/规则为唯一节创建适当的条目


这是一个关于分层数据的详细说明,因为它是关于正确过滤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,然后根据需要插入带有计数/时间戳的记录。对于层次结构本身,使用这两个表作为另一个答案是可以的,但是要在其中获得正确的数据需要一些额外的努力,正如我上面所描述的。您可以将映射规则放入一个表中,但您可能会发现,将这些规则作为代码的一部分放入一个单独的可读/可扩展文件中会更容易。您不确定这是什么意思。链接