Php 当数据大小不确定时,如何管理数据库中的数据?

Php 当数据大小不确定时,如何管理数据库中的数据?,php,mysql,database,database-design,relational-database,Php,Mysql,Database,Database Design,Relational Database,我正在寻找建立一个数据库来存储周围学校学生的名字。我现在正在考虑一张所有学校的表格,然后看起来下一个逻辑步骤是每个学校的表格,问题是我不知道我需要做多少学校。它很容易超过200个,看起来我最终将拥有一个包含数百个表的数据库。是否可以设计一个数据库,为每个条目创建一个新表 此外,如果人们必须提交回复,但是回复的长度可能会有很大的差异,那么您如何处理这些问题呢。比如,当你处理某人的电子邮件地址时,给每个地址分配500个字符似乎是浪费,但同时,你知道肯定有一封电子邮件是100个字符。你是迎合最坏的情况

我正在寻找建立一个数据库来存储周围学校学生的名字。我现在正在考虑一张所有学校的表格,然后看起来下一个逻辑步骤是每个学校的表格,问题是我不知道我需要做多少学校。它很容易超过200个,看起来我最终将拥有一个包含数百个表的数据库。是否可以设计一个数据库,为每个条目创建一个新表

此外,如果人们必须提交回复,但是回复的长度可能会有很大的差异,那么您如何处理这些问题呢。比如,当你处理某人的电子邮件地址时,给每个地址分配500个字符似乎是浪费,但同时,你知道肯定有一封电子邮件是100个字符。你是迎合最坏的情况还是有办法解决这个问题

我正在寻找建立一个数据库来存储周围学校学生的名字。我现在正在考虑一张所有学校的表格,然后看起来下一个逻辑步骤是每个学校的表格,问题是我不知道我需要做多少学校

右半:一张包含所有学校(及其相关信息)的表格。该表将有一个主键——一个自动递增的整数就可以了

然后有一个学生表,其中有一列包含该学生就读学校的ID

只有两张桌子:一张给学校,一张给学生。与外键相关的。或者,有选择地,如果一个学生可以去多所学校,则需要一个学生

你是迎合最坏的情况还是有办法解决这个问题


对。你想让你的应用程序为每个人工作,所以让它为每个人工作。

考虑对两个表使用一对多关系:

学校

  • 身份证
  • 名字
学生

  • 身份证
  • 学生
  • 名列前茅
  • 姓氏
  • 电子邮件
这样的查询就可以工作了:

SELECT school.name, student.nameFirst, student.nameLast, student.email
FROM student
INNER JOIN school ON student.schoolID = school.id;
如果一名学生可以就读多所学校,您将需要一个连接表:

学校

  • 身份证
  • 名字
学生

  • 身份证
  • 名列前茅
  • 姓氏
  • 电子邮件
学生学校

  • 学生
  • 学生
第三个表是促进多对多关系的连接表。许多学生可能就读于零所、一所或多所学校。这样的查询就可以工作了:

SELECT school.name, student.nameFirst, student.nameLast, student.email
FROM studentSchool
INNER JOIN school ON studentSchool.schoolID = school.id
INNER JOIN student ON studentSchool.studentID = student.id;

关于字段长度,在大多数情况下,MySQL使用动态行大小,这样就不会浪费空间。如果使用VARCHAR(255),最多可以存储255个字符,但只需要最小的存储空间(加上一些小的开销)来存储值。看

Ahhh,这很有道理。好的,还有一个问题。对于每个学生,让我们说他们可以上不止一所学校。他们可以参加的人数没有限制,我不知道最坏的情况是什么。我如何应对?我更新了答案,加入了关于多对多关系的信息,我相信这些信息解决了你的问题。