此处没有。我试图创建一个类或数据结构,其中每个条目都有一个唯一的名称和未知数量的描述性标记。我希望数据结构也能很容易地导出到一些通用格式(我猜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数组也是一种可能的解决方案。然而,我将从数据库中的标准规范化表示开始。