【发布时间】:2012-01-13 17:46:31
【问题描述】:
我正在建立一个拥有用户的网站。用户可以搜索歌曲并(如果已登录)将其保存到播放列表或歌曲库中。
我希望它像 iTunes 一样,播放列表中的所有歌曲都是库的一部分,因此当用户选择查看他们的歌曲库时,播放列表中的歌曲以及刚刚添加的歌曲都会显示去图书馆。我希望一首歌曲能够存储在多个播放列表中。
现在我正在使用 Mongodb,做这样的事情:
var UserSchema = new Schema();
var Library = new Schema({
songs: [SongsSchema],
user: Schema.ObjectId
});
var Playlist = new Schema({
title: String,
description: String,
user: Schema.ObjectId
});
var SongsSchema = new Schema({
position: Number,
name: String,
artist: String,
artistGid: String,
album: String,
albumGid: String
time: Number,
url: String,
gid: String,
location: String (either youtube, vimeo, soundcloud for now),
playlist: [Schema.ObjectId] (array of object ids that point to playlists?)
});
这看起来是最好的吗?我习惯了关系,所以看起来有很多重复,但我很难以一种可行的方式对其进行规范化。
【问题讨论】:
标签: mongodb database-design relational-database database-schema nosql