Database 更好的区块名单设计

Database 更好的区块名单设计,database,schema,blocking,Database,Schema,Blocking,我有10-12个项目需要在我的系统上维护一个区块列表。哪种设计更好?这些是示例列,要阻止的项目多得多 表1 b_id b_电子邮件 b_名称 b_用户名 b_页面名称 b_单词 b_IP 评论 表2 b_id b_类型 文本 评论 基本上在表1中,每个被阻止的项仅在1列中是一个值,其余的都是NULL。 在表2中,每个被阻止的项都驻留在唯一的列中,因此没有空值 还有其他可能的设计,比如每个项目都有单独的tbl,但是会有很多tbs来保存区块列表 编辑:此数据用于阻止用户执行某些活动。每个被阻止的项

我有10-12个项目需要在我的系统上维护一个区块列表。哪种设计更好?这些是示例列,要阻止的项目多得多

表1
b_id
b_电子邮件
b_名称
b_用户名
b_页面名称
b_单词
b_IP
评论

表2
b_id
b_类型
文本
评论

基本上在表1中,每个被阻止的项仅在1列中是一个值,其余的都是NULL。 在表2中,每个被阻止的项都驻留在唯一的列中,因此没有空值

还有其他可能的设计,比如每个项目都有单独的tbl,但是会有很多tbs来保存区块列表


编辑:此数据用于阻止用户执行某些活动。每个被阻止的项目在不同的地方使用。例如:

block_IP=网站将根据检测到的用户IP阻止的IP地址列表
block_name=用户无法用于注册的受限名/姓列表
block_email=用户无法用于注册的受限电子邮件列表
block_username=用户无法用于获取配置文件名的受限用户名列表
block_pagenames=用户无法创建的受限页面名称列表
block_word=用户不能在评论、博客等内容中使用的辱骂性词语。 而且这个名单还在继续


所以基本上这些都像是单独的查找项。在一个理想的世界里,我们会为每一项设置单独的表格。但是我不喜欢仅仅为了保存阻塞项的值而有20-30个表的想法。这应该是一种更简单的管理方式。唯一的问题是,像block_Word这样的项目可能会增长到数百万行,因为在许多语言中有很多单词可以被阻止。

请查看实体属性值方法或使用无模式的NoSQL数据存储

如果你正在处理中间层中的“阻塞”,你可以把列表作为序列化对象(例如JSON)转储到表中。p>


我假设您正在尝试执行访问控制列表之类的操作,根据您的平台,您可能会找到相应的插件

您是否有可能提供一些示例数据来帮助描述这些表是如何工作的我不确定我是否明白为什么表1需要超过2/3列。我添加了有关数据使用的详细信息。您使用的是什么样的框架,例如Rails、Spring、PHP?EAV为此提供了一个通用解决方案。您的实体将是它所应用到的对象的唯一名称(例如“用户”、“HTTP_ENV_VARS”、…)属性是实体的谓词(“电子邮件”、“远程IP”、…)以及
块列表的值(
)test@test.com', '10.1.1.1'...).