PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP-2个实体上的数据库设计架构帮助大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

假设我在一个网站上有两个不同的实体.

师生.

他们俩都登录了网站.现在我有下表

**Users**

 - id
 - email
 - password

**Students**

 - GPA
 - SAT
 - ACT
 - user_id references Users ID

**Teachers**

 - user_id references Users ID
 - classroom_no
 - salary
 - average_class_size

因此,当学生注册时,我在“用户”和“教师”表中都添加了一行.

教师注册后,我在“用户”和“教师”表中都添加了一行.

拥有一个具有以下字段的表用户会更好吗?

**Users:**

 - id
 - ACT
 - GPA
 - SAT
 - average_class_size
 - salary
 - classroom_no
 - role (0 = teacher 1 = student)

即使某些行将引用教师(因此不使用ACT,SAT,GPA字段)

??

谢谢!

解决方法:

如果您不熟悉数据库规范化,请阅读this.

除非性能一个严重的问题,否则我不会考虑在此结构中使用单个表.随着项目的进行,您很有可能会向每个角色添加更多字段,并且可能还会添加更多角色.维持这一点将变得越来越困难.

我实际上将更进一步,并在应用程序中引入另一个称为角色的概念,以及用于持久化它的适当数据模型.

您的表格应为:

users:
 - id
 - email
 - password

roles:
 - id
 - type

user_roles:
 - user_id
 - role_id

role_teacher:
 - user_id
 - classroom_no
 - salary
 - average_class_size

role_student:
 - user_id
 - GPA
 - SAT
 - ACT

拥有单独的角色表将使您可以将身份验证表(用户)与其余数据分开.如果用户既可以是老师又可以是学生,这可能变得很重要.

这应该使您对如何构建数据库有基本的了解.

您可能会发现您将开始对系统中的其他概念(例如类)建模.因此,添加适当的表可能类似于:

role_teacher:
 - user_id
 - salary

classroom:
 - id
 - capacity

class:
 - id
 - name
 - teacher_id
 - classroom_id
 - start_date
 - end_date

class_enrollment:
 - class_id
 - student_id
 - enrollment_date
 - grade

诸如教师教室之类的项目现在移至该班级,允许教师教授多个班级(也许您需要重新添加“家庭教室”的概念).然后,教师的平均班级人数只是一个计算(尽管出于效率考虑,您可能仍要存储它).

希望这有助于指导您正确的方向!

大佬总结

以上是大佬教程为你收集整理的PHP-2个实体上的数据库设计架构帮助全部内容,希望文章能够帮你解决PHP-2个实体上的数据库设计架构帮助所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: