c# - 通用程序化|解决程序问题的困难

标签 c# database

我在解决问题时遇到困难: 这些是我的解决方案中的对象

Investigator and a Book

调查员写一本书。

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

有超过 1 位研究者写过他的书。 (一本书 -> 不止一名研究者) 还有写了不止一本书的调查员。

数据库

我有两张 table ,一张用于调查员,一张用于书籍

我认为我需要添加的是:

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帮助我理解它。

最佳答案

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

但是,我见过有人用两个表来完成此操作,其中的字段包含用逗号分隔的 ID 列表 - 因此书籍表将有一个调查员列,例如“2,5,6”和调查人员将有一个图书专栏。

使用第二个版本,您必须以编程方式处理逗号,如果有人写了很多书,它可能会变得非常困惑,所以我不推荐它。第一个选项成为标准做法是有原因的。

关于c# - 通用程序化|解决程序问题的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840347/

相关文章:

c# - .net 框架是否支持在不同版本 1.1 和 3.5 之间使用策略文件进行程序集重定向?

sql-server - 如何在 Bonita 6 中使用 MS SQL 作为主数据库

mysql - 具有共享用户数据库的网站

.net - 使用 ASP.Net MVC 将图像上传到 SQL Server 2005?

c# - 错误邮件的防洪方法

c# - 在 Mono 和 Ubuntu 14.04 上使用 ASP.NET 5 时出现 NullReferenceException 崩溃

c# - native C++ dll 的 C++/CLI 包装器

c# - FtpWebRequest 表示 Stream 已处理

mysql - Node.js - 插入添加 0 而不是字符串

database - DynamoDB : How to get unique values of a GSI partition key?