0

我正在开发一个项目,人们可以在该项目中创建播放列表并将其作为对象存储在 localStorage 中。目前一切都是客户端。

所以我现在想向前飞跃,创建一个用户登录系统(我可以使用 php mysql 和 fb connect 或 oauth 系统来完成,还有其他建议吗?)。问题是决定我是否为每个用户创建一个 sql 数据库并存储他们的播放列表(带有媒体信息),或者是否有其他方法可以解决。处理大量数据库对我来说会是个麻烦吗(就速度而言)?

我如何只创建一个数据库如下:

用户数据库 ---> 一个表包含{ user(primary key) pass someotherInfo} ,然后每个 USER 的表 {包含播放列表) ,每个播放列表的第三个表(包含用户 ID 和媒体信息,我的主键可能是什么?)

示例:我有 10 个注册用户,每个用户有 2 个播放列表

1.table 1: 10 entries
2.table(s): username - playlists (10 tables) || i make one table with one field user other field playlist name
3.tables: each playlist - media info, owner (20 tables)

还是有更简单的方法?

我希望我的问题很清楚。

PS:我是 php 和数据库的新手(所以这可能很愚蠢)

4

2 回答 2

2

惊讶的大多数答案似乎都错过了这个问题,但我会试一试;

这称为数据建模(您如何将数据库中的一堆表拼凑在一起,以便以最好的方式表达您想要的东西),不要觉得问很傻;有些人把所有醒着的时间都花在调整和设计数据模型上。它们对于任何系统的福祉都非常重要,事实上,它们比大多数人认为的要重要得多。

听起来你走在正确的道路上。定义实体并为每个实体创建一个表总是一个很好的提示,因此在这种情况下,您有用户、播放列表和歌曲(例如)。如此定义你的表格;用户、歌曲、播放列表。

接下来是定义字段和表的名称(也许上面建议的简单名称是,嗯,简单)。有些人引入了虚假的命名空间(即 MYAPP_USER 而不仅仅是 USER),特别是如果他们知道数据模型将来会在同一个数据库中扩展和扩展(或者,有些人因为他们知道这是不可避免的),而另一些人只会闯入无论他们需要什么。

最大的问题总是关于规范化和围绕它的各种问题,平衡性能与适用性,关于这个主题的书籍很多,所以我无法给你任何有意义的答案,但对我来说它的要点是;

表中的数据字段在什么时候才配得上它自己的表?一个例子是,您可以根据您希望如何拆分数据,只使用一个或两个或 6 个表来创建应用程序。这就是我认为你的问题真正出现的地方。

我想说你的假设非常正确,要记住的是一致的命名约定(关于如何命名标识符有很多意见)。对于您的应用程序(使用上面提到的表格),我会这样做;

USER { id, username, password, name, coffee_preference } 
SONG { id, artist, album, title, genre } 
PLAYLIST { id, userid } 
PLAYLIST_ITEM { id, songid, playlistid, songorder }

现在您可以使用 SQL 获取用户的所有播放列表;

   SELECT * FROM PLAYLIST WHERE userid=$userid

或获取播放列表中的所有歌曲;

   SELECT * FROM SONG,PLAYLIST_ITEM WHERE playlist_item.playlistid=$playlist.id AND song.id=playlist_item.songid ORDER BY playlist_item.songorder

等等。同样,关于这个主题的书籍已经写了很多。这一切都是为了在记下技术解决方案的同时清晰而语义化地思考。有些人只有这个作为职业(如DBA)。会有很多意见,尤其是关于我在这里写的内容。祝你好运。

于 2011-05-29T23:03:50.840 回答
0

您可以使用 MYSQL 或 Postgresql 等 SQL 数据库,也可以使用 MongoDB 等 NOSQL 数据库。每个都有它的优点和缺点,但由于你看起来像一个初学者,我会建议使用 MYSQL,因为它是大多数初学者使用的。看看这些文章

http://dev.mysql.com/tech-resources/articles/mysql_intro.html http://www.redhat.com/magazine/007may05/features/mysql/

当然,您可以随意在 The Big G 上自行搜索,因为那里有大量资源。

于 2011-05-29T22:33:40.817 回答