【问题标题】:Should all relations be defined?是否应该定义所有关系?
【发布时间】:2018-03-31 13:33:04
【问题描述】:

是否应该定义所有关系?在这种情况下,是否也应该定义“公司-广告”关系?我的意思是优点是您不需要加入许多表。什么是对的?

company 1 - n person

person 1 - n advertising

(company 1 - n advertising)

公司:

id | name
1  | xcompany  
2  | ycompany

人:

id | name     | company_id
1  | xperson  | 1
2  | yperson  | 2

广告:

id | name     | person_id
1  | xad      | 1
2  | yad      | 2

advertising->person()->company();

SELECT 
    *
FROM
    advertising
        LEFT JOIN
    person ON advertising.person_id = person.id
        LEFT JOIN
    company ON person.company_id = company.id;

vs 广告:

id | name     | person_id | company_id
1  | xad      | 1         | 1
2  | yad      | 2         | 2

$advertising->company();

SELECT 
    *
FROM
    advertising
        LEFT JOIN
    company ON advertising.company_id = company.id;

【问题讨论】:

  • 我相信您正在考虑 DB 非规范化,这是一种有效的技术,但仅应在需要时应用:en.wikipedia.org/wiki/Denormalization
  • 虽然我认为这个问题非常基于意见,但 laravel 中的解决方案非常明确:HasManyThroughrelation
  • 只有当你有大规模应用程序并且需要提高性能时才去规范化,否则,保持规范化并节省你很多时间。
  • 检查polymorphic relations是否适合您的需求。

标签: mysql laravel symfony orm relational-database


【解决方案1】:

由于广告主要与人相关联,因此我只会关联广告 -> 人的关系。然而,这是我对一个简单场景的看法,它使事情变得简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2016-08-16
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多