我正在为我的新应用程序设计数据库。在应用程序中,有一个业务配置文件,其中包括类别和标签。根据类别的不同,会显示不同的标记。我有一个关于标签在不同类别中重复的情况的问题。示例:类别:俱乐部标签:屋顶类别:餐厅标签:屋顶我曾想过创建相同的标签两次,并将其与每个类别相关联。
azpvetkf1#
您所描述的是类别之间的多对多(M:M)关系:标签。这是一个非常常见的场景,通常通过引入第三个表(我们称之为profiles)来解决,该表包含其他相关表的id和任何交集数据(与组合相关的数据)。您不重复类别或标签。类似于:(参见demo)
profiles
create table categories (category_id integer generated always as identity primary key , name text not null unique , description text ); create table tags(tag_id integer generated always as identity primary key ,name text not null unique ); create table profiles(category_id integer not null references categories(category_id) ,tag_id integer not null references tags(tag_id) ,effective_dt date not null default current_date ,constraint profiles_pk primary key(category_id, tag_id) );
1条答案
按热度按时间azpvetkf1#
您所描述的是类别之间的多对多(M:M)关系:标签。这是一个非常常见的场景,通常通过引入第三个表(我们称之为
profiles
)来解决,该表包含其他相关表的id和任何交集数据(与组合相关的数据)。您不重复类别或标签。类似于:(参见demo)