Database 仅部分地以相同的方式获取记录结构
在浏览9gag.com时,我想到了一个想法(问题)。假设我想创建一个网站,用户可以在其中添加不同种类的条目。现在,每个条目都是不同的类型,需要不同的/附加的列 假设我们可以添加:Database 仅部分地以相同的方式获取记录结构,database,database-design,logic,Database,Database Design,Logic,在浏览9gag.com时,我想到了一个想法(问题)。假设我想创建一个网站,用户可以在其中添加不同种类的条目。现在,每个条目都是不同的类型,需要不同的/附加的列 假设我们可以添加: youtube视频 需要引用作者姓名和姓氏的引用 需要额外游戏类别、描述、类型等的flash游戏 需要链接的图像 现在,以上所有内容都是条目,并且有一些共同的列(如id、add_date、add_user_id等)和一些不同/附加的列(例如:仅flash游戏需要说明或仅图像需要加上需要指定的_18列)。问题是,我应
- youtube视频
- 需要引用作者姓名和姓氏的引用
- 需要额外游戏类别、描述、类型等的flash游戏
- 需要链接的图像
那么,解决这个问题的最佳方法是什么呢?父表似乎是最好的选择
// This is the parent table
Entry
ID PK
Common fields
Video
ID PK
EntryID FK
Unique fields
Game
ID PK
EntryID FK
Unique fields
...
查询的外观在很大程度上取决于查询的类型。例如,要在某个日期前订购所有游戏,查询将如下所示:
SELECT *
FROM Game
JOIN Entry ON Game.EntryID = Entry.ID
ORDER BY Entry.AddDate
要按日期获取所有内容,将有点混乱。例如:
SELECT *
FROM Entry
LEFT JOIN Game ON Game.EntryID = Entry.ID
LEFT JOIN Video ON Video.EntryID = Entry.ID
...
ORDER BY Entry.AddDate
如果您想运行类似于上面的查询,我建议您为主键字段(即VideoID
和GameID
)指定唯一的名称,这样您就可以轻松地识别正在处理的条目类型(例如,通过检查GameID不为NULL
)
或者您可以在条目
中添加类型
字段