我正在构建一个小型网站,让用户可以相互推荐他们最喜欢的书籍。所以我有两张 table ,书籍和小组。一个用户的图书馆中可以有 0 本书或多本书,一本书属于 1 个或多个组。目前,我的表格如下所示:
books table
|---------|------------|---------------|
| book_id | book_title | book_owner_id |
|---------|------------|---------------|
| 22 | something | 12 |
|---------|------------|---------------|
| 23 | something2 | 12 |
|---------|------------|---------------|
groups table
|----------|------------|---------------|---------|
| group_id | group_name | book_owner_id | book_id |
|----------|------------|---------------|---------|
| 231 | random | 12 | 22 |
|----------|------------|---------------|---------|
| 231 | random | 12 | 23 |
|----------|------------|---------------|---------|
如您所见,users+books 和 books+groups 之间的关系在表中定义。我应该在他们自己的表中定义关系吗?像这样:
books table
|---------|------------|
| book_id | book_title |
|---------|------------|
| 22 | something |
|---------|------------|
| 23 | something2 |
|---------|------------|
books_users_relationsship table
|---------|------------|---------|
| rel_id | user_id | book_id |
|---------|------------|---------|
| 1 | 12 | 22 |
|---------|------------|---------|
| 2 | 12 | 23 |
|---------|------------|---------|
groups table
|----------|------------|
| group_id | group_name |
|----------|------------|
| 231 | random |
|----------|------------|
groups_books_relationsship table
|----------|---------|
| group_id | book_id |
|----------|---------|
| 231 | 22 |
|----------|---------|
| 231 | 23 |
|----------|---------|
感谢您的宝贵时间。
最佳答案
具有四个表的第二种形式是正确的。您可以从 books_users_relationsship
中删除 rel_id
,因为主键可能与 user_id
和 book_id
组合在一起,就像在 groups_books_relationsship
表。
关于mysql - 处理这些 MySQL 数据库关系的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4767859/