我如何着手使用我现在拥有的创建关系数据库?
How do I go about creating a relational Database with what I have now?
我想用我目前在 PHPMYAdmin 中的 table 创建一个关系数据库。但我不知道该怎么做?我目前有 4 tables,一个用户、朋友、消息、订单和商店。我相信我应该使用多对多关系,因为用户需要登录才能订购,等等。关于如何设置 table 有什么想法吗?这只是我在修修补补和学习。另外,如果 table 全部链接在一起,您将如何获取和更新它们?
我的回答有点笼统,但应该可以帮助您找到适合您的解决方案。话虽这么说,请随时寻求建议。
1) 设计关系数据库(即模式设计)
您目前有 5 个 table:
- 朋友
- 消息
- 订单
- 商店
- 用户
然而,您需要先了解您的 application/the data/the 问题,并找出它们之间的关系。将它们画成 ERD(实体关系图)。例如,朋友和消息是如何相互关联的?一个朋友可以创建多条消息(一对多),但一条消息只能由一个朋友创建。所以 FRIEND 和 MESSAGE 是一对多的关系。 "messaging" table 需要一个与朋友匹配的用户标识,看起来确实如此。所以基本上你需要把它映射出来看看你的 tables 是否设计正确。
如果找到 many-to-many 关系,则需要划分 table 以便拥有 one-to-many 关系(假设您要规范化模式)。
设计完成后,您可以查看它是否与当前设计匹配,或者您是否需要更改 table 或简单地创建新设计。
如果您创建新的 table,您可以(小心地)使用 SQL 或脚本迁移您的数据。
2) MySQL - MyISAM 与 InnoDB
https://dev.mysql.com/doc/refman/5.7/en/myisam-storage-engine.html
MyISAM versus InnoDB
如果你想在 table 之间定义 "relationships" 并使用外键,带有外键约束,那么你可以创建新的 InnoDB tables(如果你选择创建新的 tables 或新数据库),或者您可以将现有的 MyISAM tables 转换为 InnoDB。一旦它们成为 InnoDB,您就可以根据您的数据库设计使每个 table "relate" 成为彼此。
例如,如果 friend
是 one-to-many 而 message
那么 message
table 将包含一个 friend-userid
,这将是一个REFERENCES
friend
table userid
列的外键。 InnoDB tables 会有更多的开销(更慢),但会为您提供您可能需要的真正的关系数据库属性(取决于您的应用程序)。
如果我设计一个 MySQL 数据库,我个人更喜欢 InnoDB tables,除非我考虑的是大数据和性能,这是另一个(好)问题,需要深入研究。
希望这对您有所帮助。
我想用我目前在 PHPMYAdmin 中的 table 创建一个关系数据库。但我不知道该怎么做?我目前有 4 tables,一个用户、朋友、消息、订单和商店。我相信我应该使用多对多关系,因为用户需要登录才能订购,等等。关于如何设置 table 有什么想法吗?这只是我在修修补补和学习。另外,如果 table 全部链接在一起,您将如何获取和更新它们?
我的回答有点笼统,但应该可以帮助您找到适合您的解决方案。话虽这么说,请随时寻求建议。
1) 设计关系数据库(即模式设计)
您目前有 5 个 table:
- 朋友
- 消息
- 订单
- 商店
- 用户
然而,您需要先了解您的 application/the data/the 问题,并找出它们之间的关系。将它们画成 ERD(实体关系图)。例如,朋友和消息是如何相互关联的?一个朋友可以创建多条消息(一对多),但一条消息只能由一个朋友创建。所以 FRIEND 和 MESSAGE 是一对多的关系。 "messaging" table 需要一个与朋友匹配的用户标识,看起来确实如此。所以基本上你需要把它映射出来看看你的 tables 是否设计正确。
如果找到 many-to-many 关系,则需要划分 table 以便拥有 one-to-many 关系(假设您要规范化模式)。
设计完成后,您可以查看它是否与当前设计匹配,或者您是否需要更改 table 或简单地创建新设计。
如果您创建新的 table,您可以(小心地)使用 SQL 或脚本迁移您的数据。
2) MySQL - MyISAM 与 InnoDB
https://dev.mysql.com/doc/refman/5.7/en/myisam-storage-engine.html
MyISAM versus InnoDB
如果你想在 table 之间定义 "relationships" 并使用外键,带有外键约束,那么你可以创建新的 InnoDB tables(如果你选择创建新的 tables 或新数据库),或者您可以将现有的 MyISAM tables 转换为 InnoDB。一旦它们成为 InnoDB,您就可以根据您的数据库设计使每个 table "relate" 成为彼此。
例如,如果 friend
是 one-to-many 而 message
那么 message
table 将包含一个 friend-userid
,这将是一个REFERENCES
friend
table userid
列的外键。 InnoDB tables 会有更多的开销(更慢),但会为您提供您可能需要的真正的关系数据库属性(取决于您的应用程序)。
如果我设计一个 MySQL 数据库,我个人更喜欢 InnoDB tables,除非我考虑的是大数据和性能,这是另一个(好)问题,需要深入研究。
希望这对您有所帮助。