mysql - 需要设计数据库方面的帮助

标签 mysql sql database database-design

我是 Web 开发新手,我正在尝试通过做项目来学习 Web 开发。

我决定建立一个网站,您可以搜索一本书的名称,结果将是用户阅读这本书的列表。

我知道这没有用,只是想学习

我的问题是我不知道如何在数据库中存储用户阅读的书籍列表。

我自己找到了两种方法来创建可以为我完成此操作的数据库,但我确信这不是最快的方法。

1-我可以将它们全部存储在带有读者 ID 的一张表中,很快它们就会变得太多行并使我的网站变慢

2-我可以为每个用户创建一个表,然后在所有表中搜索一本特定的书,然后我可以返回包含该书的表的所有者名称,我认为搜索数据库的整个表非常慢也是。

我将非常感谢任何能够回答我的问题的人。 我真的被困在我的网站的这一点上 ;)

最佳答案

怎么样

users table
-----------
id
name
other_stuff


books table
-----------
id
title
author
isbn_number
release_date
other_stuff


lendings table
--------------
book_id
user_id
lended_from
lended_to

使用此设计,您可以查看谁目前拥有一本特定的书

select u.name
from users u
join lendings l on l.user_id = u.id
join books b on l.book_id = l.book_id
where b.title = 'moby dick'
and now() >= lended_from 
and lended_to is null

关于mysql - 需要设计数据库方面的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24187285/

相关文章:

php - 搜索记录的最佳搜索技术是什么

php - 获取dropdown的值并在php中使用

mysql - 无法在Excel 2016 VBA中连接到mysql数据库

mysql - 按具有最大列的查询进行分组

python - 如何在 appengine 之外使用 ndb?

sql - 如何使用 SQL 将 Sql Server DateTime 转换为通用时间

mysql - 如何在 MySQL 的 JSON 路径中使用 CONCAT?

mysql - 使用数据透视表时我真的需要外键吗?

php - SQL从一个表中选择不在另一个表中的项目

php - codeigniter transact 将数据添加到两个表中