我的用户需要为其他人发布的文章,视频和图片添加书签。
现在我有一个用户表,一个文章表,一个视频表。
我提出了两种存储书签数据的方法..
首先,我可以创建三个一对多表。
第二种方法是只创建一个表并在其上添加一个类别列。
使用第一种方法,我可以存储外键以与文章和视频表相关联。女巫对于orm系统来说更容易
并且第二种方式只需要一个表,但不能存储关系..
如此。我应该选择哪一个,还是更好?
第三种方式就像。
答案 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
中的哪个字段。这与表格有点联系,但更接近标准化。