多个可为空的外键与多个资源表

时间:2018-11-13 18:41:17

标签: database database-design foreign-keys relational-database

我们正在设计一个系统,其中有两种类型的实体公司和财产。 Property和Company都有自己的媒体资源(视频,照片),因此我们正在数据库级别上讨论两种处理方法。

首先是要有一个Media表,该表具有指向Company和Property的可空外键

nuget page

第二个是对于Company和Property,我们将拥有CompanyMedia和PropertyMedia

enter image description here

这些方法中的哪一种更有意义?

编辑:

应该因为建议解决方案2而被杀死:)。

1 个答案:

答案 0 :(得分:1)

第二种方法是恕我直言。 media_url media_type 属性在数据库中必须唯一。否则,您可能会面临重复和同步问题。

模型2出现问题的例子:

  • 一种媒体与公司1关联。其类型为“视频”。
  • 同一媒体(即URL)链接到媒体资源1。其类型为“博客”。
  • 如果您想要所有媒体及其类型的列表,现在会发生什么?您会选哪一个?
  • 您必须查询2个效率低的表。

我在这里看到4张桌子。公司,媒体资源,媒体和媒体类型。媒体类型也应该有自己的表,以避免重复。

因此:

Company
    idCompany
    CompanyName

Property
    idProperty
    PropertyName

Media
    idMedia
    MediaURL
    idMediaType, FK to MediaType

MediaType
    idMediaType
    Type

和链接表:

Property_has_Media
    idProperty
    idMedia

Company_has_Media
    idCompany
    idMedia

型号:

enter image description here

如果一种媒体从未同时与公司和财产相关联,我会建议采用这种结构。 根据您的问题,这就是我的理解。从概念上讲,媒体没有定义公司与财产之间的链接,因此拥有2个单独的链接表更为合理。还将在整个查询中避免“ IS NOT NULL”。