mysql - 在 SQL 中的单元格内插入列表的最佳方法是什么?

标签 mysql sql list xampp

我正在创建一个简单的社交网络作为一个大学项目,其中我使用 xampp(以及 mysql 和 php)。
我面临着一个困境,即哪种是将对象列表包含为行元素的最佳方式。

我会更好地解释它:在我的项目中,其中包含学生和教授作为唯一用户,他们每个人都有一个他们正在参与的项目列表,每个项目都有一个正在融资或融资的行业/公司/公司的列表。只是观察项目;每个公司都有自己的简介。

我的困境是哪种方式是表示这种架构的最佳方式:
- 我应该为每个项目创建一个表,其中只有一列列出所有公司吗?
- 我是否应该创建一个引用表,其中每一行都包含单个项目的代码,以及与其相关的公司数量一样多的列(我不知道sql是否允许任意、可自动递增的列数) ?
- 我应该创建一个包含所有项目数据的表,并在最后添加一列来压缩公司的所有代码吗?
- 其他我现在无法弄清楚?

对我来说,棘手的部分是,我需要在所有项目中(不仅是公司)执行类似的四到五次,并且存在创建大量表格(以及很多困惑)的风险,但同时如果我只将列表压缩在一个单元格中,那么解析列表会花费大量的时间......
有什么建议吗?

最佳答案

你在不知道的情况下问的是标准化的概念。值得研究一下。您的系统的简单设计可能如下所示:

人员(ID、姓名、...类型)
项目(id、名称、...)
people_projects(project_id, people_id)
公司(id、名称、...)
company_projects(company_id,project_id)

每个教授或学生都是 people 表中的一行。每个项目都是 projects 表中的一行,项目中的每个人都是 people_projects 表中的一行。对于公司来说也是如此。

然后,您可以通过将表连接在一起来访问您的信息,例如,为了让名称为“Project X”的项目中的所有学生都参与进来,您可以执行一个简单的内部连接:

select *
  from projects p
    inner join project_people pp
      on p.id = pp.project_id
    inner join people pl
      on pp.people_id = pl.id
  where p.name = 'Project X'
    and pl.type = 'student';

简单、强大的数据库架构和简单的数据访问。

关于mysql - 在 SQL 中的单元格内插入列表的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29829133/

相关文章:

php - bubble 中的 session 系统 - 数据库和 UI

SQL/Doctrine : Left Join problem

mysql - 如何在 mySQL 数据库中表示字符串数组

mysql - 查询过滤今天的日期

MySQL STR_TO_DATE NULL 出错

algorithm - 与合并排序相比,修改后的合并排序的运行时间?

mysql - Ubuntu 上未初始化常量 MysqlCompat::MysqlRes (mysql gem 错误),未修复

c# - 如何从 Unity 游戏对象列表中禁用子对象

列出最佳实践的 Python 字符串

sql - 在 MS SQL Server 2005 中插入忽略?