如何选择属性和table?

How to choose attribute and table?

我正在考虑学生注册系统的数据库设计。首先,系统将接受任何将存储其数据的人的注册。然后管理员将检查表格并选择要接受的学生。我应该使用两个分开的 table 吗,第一个是存储注册人的信息,第二个是存储录取学生的信息?或者我应该只使用一个 table 并使用属性(confirmedOrNot)来标记(0 或 1)那个人是否已被接受,如下图所示?被录取者还应在截止日期前缴纳费用。否则,他们将从接受名单中删除。我还使用了一个属性来标记它。只有被录取并缴费的人才是系统最终的学生名单。这样的设计合理吗?什么是更好的设计?

一个学生是否"accepted"听起来像是一个学生的属性。自然而然的做法是将所有学生放在一个 table 中,并使 "accepted" 在这个 table 中成为一个属性。如果您制作两个 table,那么您可能会有两个 table,其中包含所有相同的字段。当一个学生被录取时,你必须将他的所有数据从"pending" table复制到"accepted" table,然后可能会删除"pending"中的记录] table。这比仅更改一个字段中的值要多得多。更重要的是,如果您保留的学生数据发生变化,您必须记住更改两个 table,并更改复制数据的代码。你正在为自己创造更多的工作。迟早有人会犯错误,使两个 table 中的字段大小不同,或者忘记复制新字段等,然后您就会丢失数据。