sql - 涉及另一个表中多行的字段

标签 sql database field

我已经创建/正在创建 3 个表:SlavesCitizensIncidents

我应该如何处理涉及多个公民奴隶事件? 现在我正在考虑在 Incidents 中创建两个字段,其中包含 CitizenID 和 SlaveID(SlaveID1、SlaveID2...、SlaveIDn)的列表,但这看起来很愚蠢。

最佳答案

其实你的想法听起来一点也不蠢。您可以像这样设计您的 Incidents 表:

+------------+-----------+---------+
| IncidentID | CitizenID | SlaveID |
+------------+-----------+---------+
|     1      |     A     |    A    |      <-- incident #1 involved 2 citizens and 1 slave
|     1      |     B     |    A    |
|     2      |     A     |    A    |      <-- incident #2 involved 2 citizens and 2 slaves
|     2      |     B     |    A    |
|     2      |     A     |    B    |
|     2      |     A     |    B    |
+------------+-----------+---------+

现在,当您查询某个事件 ID 时,您可以获得事件中涉及的所有公民和奴隶的列表。这是您的数据库模式中的多对多关系。

关于sql - 涉及另一个表中多行的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31284014/

相关文章:

sql - 递归删除一张表中的多行

sql - TSQL - 根据列中的记录创建表列

c# - 如何在 C# 中找到对象的所有公共(public)字段?

mysql - 非唯一的多对多表设计

java - 如果非最终字段的值可以更改,如何在匿名类类中使用它们?

javascript - 如果对上一个文本进行了编辑,光标会跳到文本末尾

sql - ORACLE 中的 "less than"用于两个 varchars?

sql - 跟踪每个 T-SQL 语句的等待统计信息

java - 数据库索引如何工作?

java - Ruby 与 Java 及其瓶颈