我从来没有创建过购物车,或在php论坛。除了查看和分析另一个人的项目或查看教程来展示如何制作这样的项目或如何成为这样一个项目。一个人如何知道如何设计数据库结构来创建这样的事情?即时猜测其可能是通过试验和错误...如何在创建高级php应用程序时知道如何设计mysql数据库?
回答
您可以了解的关于数据库设计的主要技术称为Database Normalization。
数据库规范化有它的限制,特别是如果你有很多事务。在某些时候,您可能会被迫到Denormalize。
但是,imho最好从规范化的数据库设计开始。
你应该阅读和了解normalization的基础知识。对于大多数项目来说,规范化为第三范式将会很好。当你想要或多或少的标准化时,总是会有某些场景,但理解它背后的概念可以让你思考你的数据库是如何以规范化的格式来构建的。
这里有一个正常化表的非常简单的例子:包含各种数据
students
student_id
student_name
student_class
student_grade
一个非常标准的表格,但我们可以看到一些问题的时候了。我们可以看到一个学生的姓名取决于他的ID,但是,一个学生可能参与不止一个班级,而每个班级可能会有不同的成绩。那么我们可以考虑一下表这样:
students
student_id
student_name
class
class_id
class_name
这是不坏,现在我们可以看到,我们有各种各样的学生,以及各种类,但我们还没有捕捉到的学生的成绩。
grades
student_id
class_id
grade
现在我们有一个第三表,它可以让我们了解一个特定学生,特定类,以及与该类相关的等级之间的关系。从我们的第一个初始表中,我们现在在一个规范化的数据库中有3个表格(让我们假设我们不需要为了举例而进一步归一化等级:))
我们可以从这个非常基本的例子中收集一些东西:
- 我们的数据全部绑定到某种类型的关键字(student_id,class_id和student_id + class_id)。这些是每个表内的唯一标识符。
- 我们可以将信息相互联系起来(有多少班是学生#4096报名?)
- 我们可以看到我们的表现在不会包含重复的数据(想想我们的第一张桌子,其中student_class可能是很多学生相同的值。如果我们不得不改变类的名称,我们不得不更新所有的记录。在我们的标准化的格式,我们可以只更新的类标识码CLASS_NAME)
优秀答案伙计 – jake 2008-10-25 18:43:32
我还建议使用可视化编辑器来创建数据库模式。我最近一直在使用:http://dev.mysql.com/workbench/
一旦你创建了一个数据库设计,让有更多经验的人来看看它并给你反馈。但要知道,尽可能多地花费时间进行设计,最终必须执行并发现你错过了某些东西,或者可能以另一种方式做得更好。
因此,设计,获得反馈,但不要害怕改变。
- 1. 如何创建高级数据网格
- 2. 如何在JavaScript中创建高级倒数计时器?
- 3. 如何在事先不知道计数时创建对象
- 4. 如何在应用程序运行时备份mysql数据库?
- 5. 如何创建数据库在iPhone应用程序中?
- 6. 如何在Android应用程序之外创建SQLite数据库?
- 7. 如何在我的android应用程序中创建数据库?
- 8. 如何为报价应用程序设计Firebase数据库?
- 9. 如何使用脚本(PHP等)在MySQL上创建数据库
- 10. 如何知道我的应用程序的活动计数?
- 11. 使用php和mysql高级排序和搜索mysql数据库
- 12. 如何创建高级PHP链接?
- 13. 如何为使用MySQL数据库的android应用程序创建REST服务?
- 14. 如何设计这个mysql数据库
- 15. 如何知道用户是在设置应用程序?
- 16. 如何知道我的仪表应用程序在何时?
- 17. 如何为Android创建数据库应用程序?
- 18. 创建数据库后,如何知道表是否退出?
- 19. 如何在首次启动.NET Windows应用程序时创建Access数据库?
- 20. 如何创建应用程序以使用实时通知
- 21. 何时为应用程序创建本地(SQLite)数据库?
- 22. 数据库设计web应用程序
- 23. 云应用程序,数据库设计
- 24. 如何让Android应用程序使用MySQL在线数据库?
- 25. 如何知道比赛计数preg_replace_callback - PHP
- 26. 如何创建MySQL数据库?
- 27. 如何创建一个MySQL数据库
- 28. 我的Flex应用程序如何知道数据何时陈旧?
- 29. 我如何知道用户何时退出应用程序
- 30. 当我使用Moodle创建PHP课程时,应该如何处理数据库?
感谢您纠正拼写错误。我的英语是可怕的..我知道:( – 2008-10-15 06:36:38