我有一个包含小部件及其各种属性的postgresql表。每个窗口小部件属于一组用户,但该组中的每个用户可能希望从其视图中存档/隐藏任何给定的窗口小部件。可能有数百个这样的小部件,有些用户只关心它们的某些子集,但这会成为每个用户的偏好。
我对如何有效地实现这一点感到茫然。我可以包括一个"不活动"窗口小部件表上的列,其中包含隐藏每一行的用户列表,但这看起来非常低效。翻转它,所以我将隐藏的项目存储在用户配置文件中并不会好得多,因为该列表随着时间的推移会变得任意大。对于这类问题,有没有最佳做法?
答案 0 :(得分:0)
您正在寻找联结表。这是一个大纲:
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
);