具有多值属性的SQLite表

gojuced7  于 2022-11-14  发布在  SQLite
关注(0)|答案(3)|浏览(222)

我想创建一个表,该表可以存储,比如说,第一列中某物的标题或名称,然后在下一列中具有关联的人或对象。问题是,可能有多个人与相同的头衔或名字相关联。如果第一列是我主键,我不能让每一行都有重复项。

Name1 | Jim
      | John
      | Jill

Name2 | Mike
      | Mary

Name3 | Jeff

这需要用中间表来完成吗?如果需要,我不知道如何对它们进行实际编码(在SQLite中)。是否只使用引用主表中相应属性的外键创建它们?任何帮助都将不胜感激。

fdbelqdn

fdbelqdn1#

是的,在SQLite(或任何关系数据库)中,您可以通过创建单独的表来对此进行建模。在关系模型中,在一列中存储两条信息是严重的错误。
很难对您的问题给出更准确的答案,因为您没有包括任何细节,但最有可能的情况是,您需要一个表来存储您感兴趣的“事物”,一个表来存储关于人的信息(每人一行),第三个“链接”表来将人与“物”相关联。
第三个表只包含组成“Things”表的主键的列和组成People表的主键的列。该表的主键由所有列组成(如果“Things”和People都由源表中的一列标识,则可能是两列),并包含两个外键,一个返回到“Things”,另一个返回到People。
添加一行以将人与事物相关联,但也可以添加其他行以将更多人与指定的事物相关联,并将更多的事物与每个人相关联。

wmtdaxz3

wmtdaxz32#

另一种选择是使用专为支持单个字段中的多个值而设计的DBMS。有几种方法可供选择,其中至少包括一种开源风格。看看d3,Rocket Software(U2 DBMS),Ladybridge(开放QM),在谷歌上搜索多值DBMS以了解更多信息。

z5btuh9x

z5btuh9x3#

MySQL 8.0.17+通过将值存储在JSON数组中并添加多值索引,很好地支持了这一点。

相关问题