用户书签系统数据库设计

时间:2017-01-18 14:13:55

标签: database database-design

我的用户需要为其他人发布的文章,视频和图片添加书签。

现在我有一个用户表,一个文章表,一个视频表。

我提出了两种存储书签数据的方法..

首先,我可以创建三个一对多表。

enter image description here

第二种方法是只创建一个表并在其上添加一个类别列。

enter image description here

使用第一种方法,我可以存储外键以与文章和视频表相关联。女巫对于orm系统来说更容易

并且第二种方式只需要一个表,但不能存储关系..

如此。我应该选择哪一个,还是更好?

第三种方式就像。

enter image description here

1 个答案:

答案 0 :(得分:0)

我使用过使用这两种关系的表。为了便于使用,我不喜欢第二种方法。您可能希望尝试另一种方法,(抱歉,没有图片):

USER
UserId

USER_BOOKMARK
UserBookmarkId
UserId
BookmarkTypeId

USER_BOOKMARK_ASSET
UserBookmarkAssetId
UserBookmarkId
AssetType (Title, href, image, caption, tooltip, etc)
AssetStringValue (nullable)
AssetNumberValue(nullable)
AssetByteArray (nullable)

你会得到一个像这样的书签:

SELECT * AS UserBookmarkLinks
FROM USER_BOOKMARKS ub
INNER JOIN USER_BOOKMARK_ASSETS uba
    ON ub.UserBookmarkId = uba.UserBookmarkId
WHERE ub.UserId = 12345
AND uba.AssetType = "Link"

从那里你可以BOOKMARK_TYPE_ASSETS告诉你每种类型包含哪些资产以及它使用的USER_BOOKMARK_ASSETS中的哪个字段。这与表格有点联系,但更接近标准化。