Database design 用于存储大量行的表设计
我试图在postgresql数据库中存储一些唯一的标识符以及它们在网站上的位置。为了更快、更易于维护,我真的无法决定选择以下3个选项中的哪一个。该表必须提供以下信息:Database design 用于存储大量行的表设计,database-design,postgresql,Database Design,Postgresql,我试图在postgresql数据库中存储一些唯一的标识符以及它们在网站上的位置。为了更快、更易于维护,我真的无法决定选择以下3个选项中的哪一个。该表必须提供以下信息: 它是文本的唯一标识符 已在其上看到该唯一标识符的站点 必须保存的数据量相当大:据我所知,大约有2200万个唯一标识符 因此,我考虑了以下表格的设计: id-整数 标识符-文本 在站点上看到\u-一个整数,站点表的外键 这种方法需要大约2200万乘以场地数量 id-整数 标识符-文本 在站点上看到\u \u 1-布尔值 在
- 它是文本的唯一标识符
- 已在其上看到该唯一标识符的站点
- id-整数 标识符-文本 在站点上看到\u-一个整数,站点表的外键
- id-整数 标识符-文本 在站点上看到\u \u 1-布尔值 在_站点上看到__2-布尔值 在站点上看到\u \u n-布尔值
- 一个只存储唯一标识符的表,如:
- 另一种方法是使用一个表来存储每个站点的唯一标识符
表1 站点ID、站点名称、站点描述
站点ID->主键
站点名称->索引 表2就是您正在谈论的表。
行ID、站点ID、任何信息。
行ID->主键
站点ID->表1中的外键
索引(行Id,站点Id)如果您已经有了一个基于文本的站点唯一标识符(可能是url?),那么您只需要一个带有两个字段的表:
CREATE TABLE (
unique_identifier TEXT NOT NULL,
site_identifier TEXT NOT NULL,
PRIMARY KEY (unique_identifier, site_identifier)
);
然后,您还可以在上添加唯一索引(site_identifier,UNIQUE_identifier),以便于按站点进行查找
您可能会以这种方式为主表使用一点额外的空间,但查询、更新和维护非常简单。如果我是您,我肯定会避免十列布尔恐惧,因为以后总会有更多的站点。我同意Romain Hippeau的观点,他补充说,你可能需要一个站点索引来回答“谁访问过站点x?”之类的问题。好的,但这意味着我必须存储2200万个唯一数据乘以我拥有的站点数。这是否可行?我还不太擅长数据库设计:)。谢谢@这不是问题,只要您只通过索引或主键进行访问。