MySQL优化表结构

时间:2012-01-07 04:59:28

标签: mysql database one-to-many

如果我有一个食物清单,每个都有一个“课程字段”,以文本形式输入课程(“主菜”)是否有意义,或者我会更好地创建一个课程表然后使用外键引用?这是课程和食物之间的一对多关系,但食物和课程之间的一对一关系是否正确?

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

我曾经为所有东西创建单独的表格,但有时它比它的价值更麻烦。所以这取决于您的维护。如果你要改变这些价值,并且不希望做大量的事情,例如:

UPDATE tblFood SET course = 'Main Entree' WHERE course = 'Entree'

如果你需要更改值,那么外部表可能不是一个坏主意。当您需要查询数据库时会出现问题...您需要内部或外部连接其他表。

DBA曾经告诉我,MSSQL在索引text / varchar值方面做得很糟糕,这就是为什么外部表方法诞生了......不确定我是否完全相信,但同时他说MySQL做了更好的工作,使查询更容易。

我确信您会看到10个不同的答案,原因有10个不同的原因,您应该或不应该使用外部表格,但很多时候,这取决于您的具体需求。希望这有点帮助。

答案 1 :(得分:0)

我坚持1:M的课程和食物。如果是这种情况,我将为课程创建一个单独的表,并为食物创建单独的表,并将course_id用作食物表上的外键。

无论如何以字符串形式进入课程仍然可以工作,但问题是当你要为特定课程做更新时,你仍会继续使用该课程更新它的每个食物项目,有时一些餐馆可能最终改变他们的当然,他们可以添加,编辑或删除课程。 :)