具有未知标记数的一个条目的数据结构



此处没有。我试图创建一个类或数据结构,其中每个条目都有一个唯一的名称和未知数量的描述性标记。我希望数据结构也能很容易地导出到一些通用格式(我猜CSV无法完成我的要求,因为我认为我需要多个分隔符?(。

作为背景,我正在尝试定义这个数据结构,以便以后我可以实现一种方法来提取每个条目并查看所有标签,还可以实现一个方法来搜索哪些条目包含特定标签。

下面是我要查看的原始数据的一个示例,它有一个唯一的名称、一个非唯一的编号和未知数量的非唯一标签。

Name: Jim
Age: 47
Descriptors (Tags): Fat, Tall, Wrinkly
Name: Bob
Age: 88
Descriptors: Sad
Name: Charlie
Age: 12
Descriptor: Tall, Ugly

以下是我如何设计这些表。

Person Table
Person ID   Name       Birthdate
----------------------------------
1   Jim       1973-10-02
2   Bob       1932-06-02
3   Charlie   2008-12-25

Descriptor Table
Descriptor ID   Person ID   Tag
--------------------------
1           1   Fat
2           1   Tall
3           1   Wrinkly
4           2   Sad
5           3   Tall
6           3   Ugly

两个表的ID字段都是一个自动递增的整数。它们也被称为盲钥匙。除了将表连接在一起之外,它们没有其他意义。

两个表的ID字段都是主(集群(键。Descriptor表中的Person ID是指向Person表的外键。

每个人的姓名和出生日期显示一次。

当您想从Descriptor表中检索标签时,您需要指定个人ID。您可以通过使用姓名或出生日期间接执行此操作。

SELECT Tag FROM Descriptor Table, Person Table
WHERE Person ID Descriptor = Person ID Person
AND Name = 'Bob'

以上内容不是有效的SQL,但我希望您能理解。

在数据库中,通常至少使用两个表:

  • Users
  • UserTags

第二个表每个用户和每个标签将有一行。插入新标签就是在此表中插入一行:

userId  tag
1     tall
1     ugly

如果标签必须来自指定的列表,那么通常会有第三个表Tags来确保标签有效。

有些数据库支持在一行中具有多个值的结构。数组或JSON数组也是一种可能的解决方案。然而,我将从数据库中的标准规范化表示开始。

相关内容

  • 没有找到相关文章

最新更新