IT虾米网

mysql之MySQL 和 Rails 中的外键建议

grandyang 2024年01月13日 编程语言 139 0

<分区>

我正在从事我的第一个真正的 Rails 项目,正在寻求一些专业建议。

我希望在我的 MySQL 数据库中有四个表(用户、图书、评论、标签)并且应用以下业务规则。

一个用户可以对一本书发表一条或多条评论,但一条评论只能属于一本书。 用户可以在一本书上放置一个或多个标签,但标签只能属于一本书。

在图形上,我想到了以下内容:(ascii 艺术永远不会消亡)

+---------+             +---------+   
|         |             |         | 
|         |             |         | 
|  User   |1           1|  Book   | 
|         |-----   -----|         | 
+---------+     |  |    +---------+ 
     | 1        |  |          | 1 
     |          |  |          | 
     |          |  |          |               
     | 1,*      |  |          | 1,* 
+---------+     |  | 1,*+---------+   
|         |     ---+----|         | 
|         |1,*     |    |         | 
| Comment |---------    |   Tag   | 
|         |             |         | 
+---------+             +---------+ 

我正在寻找有关如何在 Rails 中配置我的模型的任何建议。目前我正在寻找设置:

class Users 
  has_many :tags 
  has_many :comments 
  has_many :tagsBooks, :through=>tags, :class_name => "tags_books" 
  has_many :commentsBooks, :through=>comments, :class_name => "comments_books" 
end 
 
class Books 
  has_many :tags 
  has_many :comments 
  has_many :tagsUsers, :through=>tags, :class_name => "tags_users" 
  has_many :commentsUsers, :through=>comments, :class_name => "comments_users" 
end 
 
class Tags 
  belongs_top :users 
  belongs_to :books 
end 
 
class Comments 
  belongs_top :users 
  belongs_to :books 
end 

我“相信”这将有助于在标签和评论表中强制执行外键字段(User_id 和 Books_id)——这最终是我需要做的。我希望这将使我能够将标签和评论关联到用户和书籍中的任何一个/两者,即 books.tags 或 users.tags。

这是正确的吗?

只要在数据库和 rails 中强制执行外键,我很乐意完全改变设计。

干杯,

达摩


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!