gpt4 book ai didi

php - 在一个字段中存储多个值

转载 作者:行者123 更新时间:2023-11-29 04:03:31 25 4
gpt4 key购买 nike

我希望用户能够选择他们的专业。

例如,A 可以选择计算机科学、数学和历史作为他的专业。用户可以选择任意数量的专业。

我的数据库中有一个组织列表,这些组织只接受特定专业的学生。例如,机构A只接受计算机科学和数学专业。组织可以选择任意数量的专业。

我想为学生匹配适合他们专业的组织。例如,我想在数据库中搜索接受一个或多个 Person A 专业的组织,这些专业是计算机科学、数学和历史。接受全部或大部分人员 A 专业的组织将列在第一位。因此,如果组织 B 接受人员 A 的所有三个专业,但组织 A 只接受人员 A 的两个专业,则组织 B 将排在第一位。

mysql数据库如何存储组织录取的专业?如何存储学生的专业,以实现学生信息和组织信息的高效匹配?

我正在考虑将组织接受的所有专业作为序列化值存储在数据库中。

所以我有2张 table

组织
ID 整数
名称 varchar(255)
majors_accepted blob

学生
ID 整数
名称 varchar(255)
专业 Blob

我可以将组织接受的专业作为序列化值存储在 majors_accepted blob 中。该领域可能有不止 1 个专业。

或者我可以将学生正在考虑的专业作为序列化值存储在学生表的专业字段中。该领域可能有不止一个专业。然后我想我可以遍历 organizations 表中的所有行,并将每个 majors_accepted 字段与学生数据进行比较。但这似乎效率低下......

最佳答案

我会这样做:

  1. 创建一个 majors 表 - 有一个 majorID 和一个 majorName
  2. 创建学生和专业之间的关联表,其中包含学生 ID 和专业 ID。
  3. 在具有 orgID 和 majorID 的组织和专业之间创建关联表。

在一个字段中存储多个值并不是好的数据库设计,就像您尝试对 blob 所做的那样,因此将其分解,您可以执行所有必要的查询来确定哪个组织是学生可以通过连接表来连接。

假设您正在寻找一个特定学生可以加入的组织(我们假设该学生的 studentID 为 1):

SELECT Students.ID,
Organizations.name
FROM Students
INNER JOIN StudentsMajors ON Students.ID = StudentsMajors.studentID
INNER JOIN OrganizationsMajors ON StudentsMajors.majorID = OrganizationsMajors.majorID
INNER JOIN Oranizations ON OrganizationsMajors.orgID = Organizations.ID
WHERE Students.ID = 1

关于php - 在一个字段中存储多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6487439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com