2012-12-11 256 views
-2

我是数据库设计界的新手,所以我有一些非常基本的问题。我想创建一个人员的数据库,每个人都可以进行零个或多个测试。每个测试都会有一个描述,一个分数和与之相关的日期。从面向对象的背景来看,这听起来很平凡,但是我在使用mySQL(或任何其他数据库语言/平台)找到类似场景时遇到了一些麻烦。面向对象的数据库设计

任何帮助在这里将不胜感激。

+0

你似乎忘记提问了。 – JJJ

回答

1

创建三个表格:用户,测试,提交。

'用户'表将保存关于每个人的信息。

“测试”表将包含有关每个测试的信息。

'提交'表将其他两个表绑定在一起。当用户进行测试时,您会将用户的ID,测试ID和时间戳添加到“提交”表中。通过这样做,您可以查询哪些用户已经在哪些时间进行了哪些测试。

这是否有意义?

+1

分数也可以保存在提交表 – meouw

+0

是的,或多或少。这是否让我把一个以上的测试与用户联系起来?假设我想为每个用户获得#2的测试分数,并且一些用户没有得分#2,这可能吗? –

+0

是的。您将有多个条目具有指向不同测试ID的相同用户标识。所以,如果测试二的ID号是'235',你可以从测试ID ='235'的表中选择用户。没有输入测试二的用户不会被退回。 – Jerad

1

MySQL是relational database。这意味着对象被表示为表格。这些表格通过关键值相关联。

Jerad's answer给出了Person和Test对象的关系表示的详细信息。关键值是用户标识和测试标识。在关系数据库中,对象的实例(表中的行)由键值标识。

Jerad的提交表定义了用户表和测试表之间的关系。用户可以进行多个测试,并且可以由多个用户进行测试。