【问题标题】:Laravel and Entity-Relationship Model - How far should I go?Laravel 和实体关系模型 - 我应该走多远?
【发布时间】:2013-01-22 09:41:25
【问题描述】:

有些人可能知道 ER-Diagrams?数据库的模型

例如: http://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model

这是我的数据库模型: (翻译:Werkstatt = Garage,Dienstleistung = Service,Categorie = Category,Bewertung = Rating,bewerten = rate,besitzt = owns,hat = has)

我的问题是:

1) 我可以为多对多关系建模,一对一,一对多。我应该在需要时为他们使用自己的桌子吗?例如 MANY-to-MANY 关系需要一个自己的表。 还是 Laravel 会通过其 Eloquent ORM 来处理这种关系?

2) 你可以设计一个很好的数据库,例如不能有 NULL 值。或者它以适当的方式处理依赖关系或冗余(参见http://en.wikipedia.org/wiki/Database_normalization#Normal_forms)。我应该处理冗余和依赖关系,还是 Laravel 会再次处理这些?

所以总的来说,我只想知道,我的数据库设计应该走多远?我应该让它尽可能好,还是仅仅创建基本实体就足够了?

信息:在这里您可以看到如果数据库未规范化可能发生的后果: http://en.wikipedia.org/wiki/Database_normalization#Free_the_database_of_modification_anomalies

问候

【问题讨论】:

    标签: database entity-relationship laravel eloquent third-normal-form


    【解决方案1】:

    在我看来,USER 和 GARAGE 之间应该没有直接关系。相反,应该将一个用户链接到 RATING(一对多),并将 GARAGE 链接到 RATING(同样,一对多)。所以我会将 Ratings 作为一个单独的表,每个评级都有一个用户 ID、一个车库 ID 和一个评级。我相信在这种情况下,您不需要单独的多对多表,除非您将评分视为多对多表(您不应该这样做——评分应该有自己的 Eloquent 模型,在事实上。)免责声明:我自己只是 Laravel 的初学者。

    【讨论】:

    • 我将评级建模为车库领域。每个车库都有自己的评级,评级只是一个值(整数或双倍)。那么为什么要制作自己的评级表呢?尽管如此,我将来可能会有一个更大的数据库模型。不止这四个。那么我怎么才能知道在哪里使用自己的桌子呢?这就是为什么有基本的 ER 建模和数据库规范化的原因......
    • 你说每个车库都可以被很多用户评分。车库自己的评分是每个用户的平均评分吗?我原本打算让评级表包含每个用户的个人评级;当然,您可以将平均评分作为garage 的值,但是如果不在单独的表中,您将如何跟踪单独的用户评分?
    • 不,我不需要跟踪收视率。我只想知道一个车库的所有用户的总评分;)
    • 什么是评级?也许我对此感到困惑。对我来说,评分就像一个介于 1 和 5 之间的数字。如果您不跟踪评分,那么当额外评分出现时您如何处理?你是不是只关注收视次数,不关注价值?如果用户想要更改他们的评分会发生什么?
    • 总平均评分...是的,它是一个介于 1 和 5 之间的数字,例如...第一个用户评分为 1,其他用户评分为 5...所以车库评分为 3 ...但问题是另一个问题;-)
    猜你喜欢
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2015-01-31
    相关资源
    最近更新 更多