标签: entity-relationship

Laravel Eloquent嵌套关系仅在第一个元素上返回数据

介绍

我正在努力获取所有相关元素的数据.我使用Laravel作为REST后端服务,将Json暴露给前端javascript应用程序.

数据结构

考虑我有以下表格:

+----------------+ +----------------+ +-------------+
|topics          | |posts           | |users        |
+----------------+ +----------------+ +-------------+
|id: int         | |id: int         | |id: int      |
|title: varchar  | |content: varchar| |name: varchar|
|content: varchar| |user_id: int    | +-------------+
|user_id: int    | |topic_id: int   |
+----------------+ +----------------+ 
Run Code Online (Sandbox Code Playgroud)

一个主题有0到多个帖子,它有一个作者(用户)

帖子有一位作者(用户)

UML:http://i58.servimg.com/u/f58/11/26/57/95/intrep10.png

Laravel模型

class User extends Eloquent {
    protected $table = 'users';

    public function topics() {
        reutrn $this->hasMany('Topic');
    }

    public function posts() {
        reutrn $this->hasMany('Post');
    }
}

class Topic extends …
Run Code Online (Sandbox Code Playgroud)

php entity-relationship eager-loading laravel eloquent

12
推荐指数
1
解决办法
6345
查看次数

存储库模式:模型关系的实现和延迟加载

我有一个处理产品和产品类别的应用程序.对于这些中的每一个,我都使用POCO定义了模型.

// Represents a product.
class Product {
  public virtual int ID { get; set; }
  public virtual string Name { get; set; }
  public virtual ProductCategory Category { get; set; }
}

// Represents a product category.
class ProductCategory {
  public virtual int ID { get; set; }
  public virtual string Name { get; set; }
  public virtual IEnumerable<Product> Products { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

该应用程序使用存储库来访问这些模型

// The interface implemented by the application's repository
interface IProductRepository {
  IEnumerable<Product> GetAllProducts(); …
Run Code Online (Sandbox Code Playgroud)

c# entity-relationship design-patterns lazy-loading repository

10
推荐指数
1
解决办法
6840
查看次数

如何在表上建立具有许多m:n关系的数据库

我目前正在建立一个拥有大量多对多关系的数据库.每个关系都通过链接表建模.例:

一个人有许多工作,工作由一些人完成.一个人有许多房屋,房屋被一些人占用.一个人有许多他喜欢的餐馆,餐馆有很多喜欢这家餐馆的人.

首先我设计如下:

表:人,工作,房子,餐厅,Person_Job,Person_House,Person_Restaurant.

关系1 - n:人 - > Person_Job,人 - > Person_House,人 - > Person_Restaurant,工作 - > Person_Job,House - > Person_House,Restaurant - > Person_Restaurant.

这很快导致拥挤且复杂的ER模型.

试图简化这一点我建模如下:

表格:人,工作,房子,餐厅,Person_Attributes

关系1 - n:Person - > Person_Attributes,Job - > Person_Attributes,House - > Person_Attributes,Restaurant - > Person_Attributes

Person_Attributes表应如下所示:personId jobId houseId restaurantId

如果存在人 - 工作关系,我将添加一个条目,如下所示:

P1,J1,NULL,NULL

如果存在人与人之间的关系,我会添加一个条目,如下所示:

P1,NULL,H1,NULL

因此,第二个示例中的属性表将具有与添加的第一个示例的链接表相同数量的条目.

这简单地简化了ER模型,只要我为personId + jobId,personId + houseId和personId + restaurantId构建索引,我认为不会有很多性能影响.

我的问题是:第二种方法是一种正确的建模方法吗?如果没有,为什么?我对性能影响是对的吗?如果没有,为什么?

我在这里可以找到MySQL Workbench的例子:

http://www.2shared.com/file/3GBnodEZ/example.html

database-design entity-relationship relational-database database-schema

10
推荐指数
1
解决办法
3253
查看次数

如何为数据库中的项目建模折扣?

我正在建立一个电子商务网站,并希望在限定时间内提供某些商品的折扣.

我的产品表(MySQL)如下所示:

Product
    - productId
    - Name
    - Weight
    - Price (price as on the cover of the item)

我应该为交易制作另一张桌子:

Deals
 - dealID
 - productID (Foreign Key)
 - discount (fractional value: percentage)
 - description

用于检索项目:

  • q1:使用productID =交易表中的所有productID查找产品中的所有产品
  • q2:从交易表中以折扣价更新价格
  • q3:退回所有产品

有一个更好的方法吗 ?另外,我如何仅在有限的时间内处理现有交易的情况?

编辑:我想显示我们为每个产品提供多少折扣.因此,我需要每个产品两个值,原始价格和给定持续时间的折扣价格.

我发布了后续由crontab中提出的解决方案在这里

mysql database-design entity-relationship

10
推荐指数
2
解决办法
7911
查看次数

9
推荐指数
2
解决办法
2万
查看次数

当子关系实体在核心数据中更改时通知父实体

当其中任何一个关系对象发生变化时,是否可以在父实体中接收回调或通知?当实体的属性发生变化时,这很有用.以下方法......

- (void)didChangeValueForKey:(NSString *)key

在我的Entity子类上调用.但是,当其中一个关系中的属性发生更改时,不会调用此方法.

我正在尝试做的是当我的父实体的任何一个属性或关系对象发生更改时更新timeStamp属性.

entity-relationship core-data ios

9
推荐指数
1
解决办法
1875
查看次数

将三元关系分解为二元关系

我正在设计一个数据库,使用以下关系和约束来处理用户,帐户和项目:

  • 一个帐户有很多用户
  • 用户属于许多帐户
  • 一个帐户有很多项目
  • 一个项目属于一个帐户
  • 用户在许多项目中进行协作(冗余注释:每个项目都属于自己的帐户).

换句话说,用户可以在同一帐户的许多项目中进行协作.但由于用户可以属于多个帐户,因此用户可以在多个帐户的许多项目中进行协作.这引导我建立三元合作关系:

在此输入图像描述

在阅读了几篇关于将三元关系转换为二元关系的论文之后,我想出了以下等价关系:

在此输入图像描述

这里出现两个问题:

  1. 这种转换是否正确?我发现我必须在应用程序级别添加额外的检查来处理插入.例如,在添加新内容之前,(User,Project)我必须检查用户是否属于项目所属的同一帐户.

  2. 难道真的有必要建立的关系AccountUser?一旦添加了User和之间的关系Project,我们不能通过访问项目知道用户所属的帐户吗?

谢谢!!

database-design entity-relationship

9
推荐指数
1
解决办法
1万
查看次数

如何从sqlite db创建EER模型

我正在使用sqlitejdbc库来使用java创建数据库.现在我需要从存储在文件中的现有sqlite db生成eer模型.在过去我使用MySqlWorkbench从mysql数据库生成eer,但我不知道如何在sqlite db上做到这一点..有人可以帮助我吗?谢谢!!

java sqlite entity-relationship reverse-engineering eer-model

9
推荐指数
1
解决办法
8776
查看次数

上下文图如何与0级图不同?

上下文关系图和0级关系图之间有什么区别?

diagram entity-relationship

9
推荐指数
1
解决办法
2万
查看次数

可选性(强制性,可选)和参与(总计,部分)是一样的吗?

我知道可选性意味着关系的最小基数,表示为可选的可选,强制为可选,强制为强制.

参与表示为粗线和法线.

在互联网中,一些人将参与称为实体对关系的依赖,这也看起来像识别和非识别关系.

有些人将其称为最小基数

这些关系的正确定义是什么,有什么区别..

entity-relationship

9
推荐指数
1
解决办法
2万
查看次数