Sql 标记数未知的一个条目的数据结构
这里没有。我试图创建一个类或数据结构,其中每个条目都有一个唯一的名称和未知数量的描述性标记。我希望数据结构也可以很容易地导出为某种通用格式(我猜CSV无法满足我的要求,因为我认为我需要多个分隔符?) 作为背景,我试图定义这个数据结构,以便以后我可以实现一种方法来提取每个条目并查看所有标记,还可以实现一种方法来搜索哪些条目包含特定的标记 下面是一个我将要查看的原始数据的示例,其中包含一个唯一的名称、一个非唯一的编号和未知数量的非唯一标记Sql 标记数未知的一个条目的数据结构,sql,database,csv,Sql,Database,Csv,这里没有。我试图创建一个类或数据结构,其中每个条目都有一个唯一的名称和未知数量的描述性标记。我希望数据结构也可以很容易地导出为某种通用格式(我猜CSV无法满足我的要求,因为我认为我需要多个分隔符?) 作为背景,我试图定义这个数据结构,以便以后我可以实现一种方法来提取每个条目并查看所有标记,还可以实现一种方法来搜索哪些条目包含特定的标记 下面是一个我将要查看的原始数据的示例,其中包含一个唯一的名称、一个非唯一的编号和未知数量的非唯一标记 Name: Jim Age: 47 Descriptors
Name: Jim
Age: 47
Descriptors (Tags): Fat, Tall, Wrinkly
Name: Bob
Age: 88
Descriptors: Sad
Name: Charlie
Age: 12
Descriptor: Tall, Ugly
在数据库中,您通常会使用至少两个表来执行此操作:
用户
UserTags
userId tag
1 tall
1 ugly
如果标签必须来自指定的列表,那么通常会有第三个表,tags
,以确保标签有效
有些数据库支持在一行中包含多个值的结构。数组或JSON数组也是一种可能的解决方案。但是,我将从数据库中的标准规范化表示开始。以下是我将如何设计表
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字段都是主键(集群键)。描述符表中的Person ID是指向Person表的外键
每个人的姓名和出生日期显示一次
当您想要从描述符表中检索标记时,您需要指定个人ID。您可以使用姓名或出生日期间接地执行此操作
SELECT Tag FROM Descriptor Table, Person Table
WHERE Person ID Descriptor = Person ID Person
AND Name = 'Bob'
上述SQL无效,但我希望您能理解。既然您标记了SQL,我假设您想要使用关系数据库。您将创建一个带有姓名和年龄的Person表,以及一个指向Person行的描述符表,每个描述符一行。Jim将有三个描述符行,Bob将有一个描述符行。维基百科的文章,将提供更多的细节。谢谢吉尔伯特!澄清一下,当您说Jim将有3个描述符行时,您的意思是SQL中的描述符表中的数据将为每个描述符有一行,并且人员的姓名将在列中吗?因此,如果两个人有相同的描述符,那么他们将在同一行中的描述符?或者,你是说每一行只包含一个名称和一个描述符?我在我的示例中添加了第三个人来说明。嗯,我不知道有像CONTAINS命令这样的东西。因此,也许标记是文本,那么也许它们可以全部转储到一个单元格中,并在SQL环境中使用CONTAINS命令进行搜索。谢谢!你能解释一下“第二个表中每个用户和每个标记有一行”是什么意思吗?你的意思是每一行只包含一个描述符和一个名称(即两个单元格)?或者,你是说每一行都包含一个唯一的描述符和未知数量的名称?谢谢!谢谢更新!@rfii…好的。我想这对你来说还不够清楚。更新清除了它!感谢你为我们解释一切Noobs非常感谢!我用谷歌搜索了“盲键”“与SQL相关,但没有用,但是说我可以不使用描述符ID列是正确的吗?或者说它存在的原因是什么?我看到您提到用于连接表的盲键(并了解这在Person表中的重要性),但我不确定如何使用描述符ID连接任何内容,但我认为可能适用于其他情况。对吗?我在每张桌子上都放了盲键,即使它们目前还没有使用。每个表都需要一个主键,而盲主键又短又唯一。