【问题标题】:What is the correct mysql (relational) database design structure for什么是正确的mysql(关系)数据库设计结构
【发布时间】:2011-10-03 01:34:30
【问题描述】:

我的数据库中有一个名为Resource 的表。这包含有关资源的通用信息(资源可以是文章、静态网络链接、YouTube 视频或任何数量的其他类型)。

以我为例:

表:资源

primary key - id,
column - type,
column - title,
column - description,
column - created_on,
column - updated_on

表:resource_video

primary key - id,
column - youtube_id (spose this could be the primary key, but not relevant in the question).
column - ...

表:resource_weblink

primary key - id,
column - url
column - ...

所以基本上resource 表包含通用(适用于所有资源)、列,然后设置表以保存resource_type 特定数据。在resourceresource_type 之间建立关系的最佳(标准化)方法是什么。

我的第一直觉是,它应该是在resource_videoresource_weblink 表中具有resource_id 外键的两个表之间的一对一识别关系,或者是否有更好的方法来处理这个问题情况?

【问题讨论】:

    标签: mysql relational-database normalization


    【解决方案1】:

    我会让每个resource_* 表的主键对resourceid 列都有一个外键约束。对于每个资源子类型,不需要单独的 id。有关如何执行此操作的示例,请参阅 this thread(查看已接受答案中的 SupportSystem 层次结构)。

    【讨论】:

    • 所以基本上我走在了正确的道路上,使用资源表中的 id 作为 resource_* 表中的主键的方法略有不同。附带说明一下,我可以完全删除 resource.type 列,因为它也无关紧要。我想那是我让自己感到困惑的地方。正确的路径,有一些不必要的列。谢谢!
    • 不,您不能消除 resource.type。它与数据完整性高度相关。看看这个 SO 答案中的“pub_type”列是如何工作的:stackoverflow.com/questions/4969133/database-design-problem/…
    猜你喜欢
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多