我只是想知道在多对多关系中使用 SET TYPE 是否有一些好的做法?
我有一个用户表。每个用户都有他的爱好(多对多)、书籍等,目标是:
1) 插入、更新、删除用户的爱好
2)搜索某人的爱好(例如:爱好电影的人)
乍一看,使用 SET 类型很容易实现。
有没有足够的经验告诉我可能有什么缺点?
问候
使用set
. 首先,它限制了集合中元素的数量。对于某些应用程序,这可能不是问题。但是,SQL 多对多关系通常是“0/1-to-n”而不是“0/1-to-n,其中 n 比 MySQL 中集合实现中允许的最大数量小一些”。
第二个缺点是集合是非常特定于 MySQL 的。这使得将代码移植到另一个数据库变得更加困难。
也许最重要的限制是关联表(替代方案)实际上是“SQL”做事的方式。它们非常强大,而且是个好主意。我担心集合会很快导致您将值存储在逗号分隔的列表中——这比使用集合更糟糕。
在某些情况下,集合很有用。特别是,它们非常有效,因此对于某些性能关键的应用程序,它们是可取的。