我是数据库设计的初学者。我有点困惑 一对一关系。
我有一个名为 task_tbl 的表,我希望用户对任务进行评分(评分为 5、1 到 5 星)。我对如何去做有点紧张;我应该创建另一个名为 rate_tbl 的表,还是应该将它放在 task_tbl 中名为 rate 的列中?该任务在数据库中只能有 1 个评分,从 1 到 5。
这是我的task_tbl:
CREATE TABLE `task` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(200) NOT NULL,
`description` VARCHAR(1000) NOT NULL,
`start_date` DATETIME NOT NULL,
`end_date` DATETIME NOT NULL,
`created_by` INT(11) NOT NULL,
PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=13;
最佳答案
您正在关联任务及其评分(我想您指的是评分,而不是酒店的食物费率)。
因此,根据规范化,您应该制作另一个表,rating_table
,它将具有从 0
到 10
的预定义值,因为评级将在在 0 到 10 之间。
现在您需要另一个表 tasks_ratings
,它将包含 task_id
和 rating_id
以及 user_id
。
看,从 0 到 10 的评分将从 rating_table
中获取,该表将在网络浏览器中显示给用户,他们的 Response(他们给出的评分)将存储在 tasks_ratings
包含 user_id、task_id 和 rating_id 的表。
现在,如果您想计算平均评分,请使用 tasks_ratings
表中的 avg()
,方法是从任务表中获取任务 ID。
关于php - 数据库设计一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413144/