我想用PHPMYAdmin中我目前拥有的表创建一个关系数据库。但我不知道该怎么办呢?我目前有4个表,一个用户,朋友,消息,订单和商店。我相信我应该使用多对多关系,因为用户需要登录才能订购,等等。关于如何设置我的桌子的任何想法?这只是我在修补和学习。如果表格全部链接在一起,您将如何获取和更新表格?
答案 0 :(得分:3)
我的回答有点笼统,但应该可以帮助您找到适合您的解决方案。话虽如此,随时可以寻求建议。
1)设计关系数据库(即架构设计)
您目前有5个表:
但是,您需要先了解您的应用程序/数据/问题,并了解它们之间的相互关系。将它们绘制为ERD(实体关系图)。例如,朋友和消息传递如何相互关联?一个朋友可以创建许多消息(一对多),但一个消息只能由一个朋友创建。所以FRIEND和MESSAGE是一对多的关系。 “消息传递”表需要与朋友匹配的用户ID,它看起来像是这样。所以基本上你需要将它映射出来以确定你的表是否设计正确。
如果找到多对多关系,则需要对表进行划分,以便您具有一对多关系(假设您要规范化模式)。
设计完成后,您可以看到它是否与当前设计匹配,或者您是否需要更改表格或只是创建新表格。
如果您创建新表,则可以(小心地)使用SQL或脚本迁移数据。
2)MySQL - MyISAM vs InnoDB
https://dev.mysql.com/doc/refman/5.7/en/myisam-storage-engine.html
如果要定义表之间的“关系”并使用外键,使用外键约束,则可以创建新的InnoDB表(如果您选择创建新表或新数据库),或者您可以转换您现有的MyISAM表到InnoDB。一旦它们是InnoDB,您就可以根据数据库设计使每个表彼此“相关”。
例如,如果friend
与message
是一对多,那么message
表将包含friend-userid
,它将是{{1}的外键} REFERENCES
表friend
列。 InnoDB表将有更多的开销(更慢),但会为您提供您可能需要的真正的关系数据库属性(取决于您的应用程序)。
我个人更喜欢InnoDB表,如果我设计一个MySQL数据库,除非我正在考虑巨大的数据和性能,这是另一个(好的)问题。
希望这有帮助。