一般程序化|难以解决程序问题

时间:2014-07-19 12:22:47

标签: c# database

我很难解决问题: 这些是我在解决方案中的对象

  

研究者   和a   书

调查员写了一本书。

他们都有一个类,我想要实现的是功能:(2件事)

有超过1名调查员写过他的书。 (1本书 - >多一位调查员) 和调查员写了一本书。

资料库

我有两个表用于Investigator,一个用于Book

我认为我需要添加的是:

public class Investigator{
...
public int[] Books { get; set; } //the books that the investigator wrote
}

public class Book{
...
public int[] investigators { get; set; } //the investigators that wrote the book
}

但后来我不知道该怎么做,在数据库中添加一个包含多个值的列? (这不可能)所以有什么替代方案?


在这里阅读答案后 This video帮助我理解它。

1 个答案:

答案 0 :(得分:2)

通常在多对多关系中,您将拥有三个数据库表。在这种情况下,您将拥有一个调查员表,一个书籍表和一个包含调查人员和书籍的表格,其中包含调查员ID列和书籍ID列,主键是两者的组合。

然而,我看到有人用两个表做了这个表,其中的字段包含用逗号分隔的ID列表 - 所以书的表格会有一个调查员列,例如'2,5,6'和调查人员会有一本书专栏。

对于第二个版本,您必须以编程方式处理逗号,如果有人写了很多书,那么它可能会变得非常混乱,所以我不推荐它。第一种选择是标准做法是有原因的。