Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
Sql 如何实现数据库的按用户视图?_Sql_Postgresql_Database Design - Fatal编程技术网

Sql 如何实现数据库的按用户视图?

Sql 如何实现数据库的按用户视图?,sql,postgresql,database-design,Sql,Postgresql,Database Design,我有一个包含小部件及其各种属性的postgresql表。每个小部件都属于一组用户,但组中的每个用户都可能希望从他们的视图中归档/隐藏任何给定的小部件。这些小部件可能有数百个,有些用户只关心其中的一些子集,但这成为每个用户的首选项 我不知道如何有效地实现这一点。我可以在widget表中包含一个“非活动”列,其中包含隐藏了每一行的用户列表,但这似乎效率极低。翻转它以便将隐藏项存储在用户配置文件中似乎并没有什么好处,因为随着时间的推移,该列表可能会变得任意大。对于这类问题有什么最佳实践吗 您正在寻找连

我有一个包含小部件及其各种属性的postgresql表。每个小部件都属于一组用户,但组中的每个用户都可能希望从他们的视图中归档/隐藏任何给定的小部件。这些小部件可能有数百个,有些用户只关心其中的一些子集,但这成为每个用户的首选项


我不知道如何有效地实现这一点。我可以在widget表中包含一个“非活动”列,其中包含隐藏了每一行的用户列表,但这似乎效率极低。翻转它以便将隐藏项存储在用户配置文件中似乎并没有什么好处,因为随着时间的推移,该列表可能会变得任意大。对于这类问题有什么最佳实践吗

您正在寻找连接表。以下是一个概要:

create table widgets (
    widgetId serial primary key,
    . . . 
);

create table users (
    userId serial primary key,
    . . .
);

create table userWidgets (
    userWidgetId serial primary key,
    userId int not null references users(userId),
    widgetId int not null references widgets(widgetId),
    isVisible boolean
);