【问题标题】:How to organize this context? Two tables or just one?如何组织这个上下文?两张桌子还是一张?
【发布时间】:2018-12-02 03:41:13
【问题描述】:

我有在会议注册的背景。如果是免费注册,则注册只有一步。如果是付费注册,则有两个步骤。

注册的第一步包括用户填写注册表,点击“存储注册”按钮后,信息将存储在数据库中,注册表的“状态”列始终存储值“我”(不完整)。

如果是免费注册,则无需额外步骤。

但如果它是付费注册,则还有另一个步骤。在此步骤 2 中,用户需要在会议开始日期之前支付注册费用。支付注册费后,注册表的“状态”列保持值为“C”(完成)。

怀疑:

如果是付费注册,则在step1之后需要向用户开具形式发票,而在step2之后,即在付款之后需要向用户开具发票/收据。

我的疑问是如何为这种问题形式和发票的上下文组织数据库。在每次付费注册中,用户点击“商店注册”按钮后,必须先开具形式,所有注册信息都存储在数据库中,然后在付款后开具发票。必须有两个模型/表格“发票”和“形式”,每个表格与注册表具有一对一的关系。还是只需要 1 个与注册表相关的表?

目前,我创建了两个表格 Proforma 和 Invoice,这些表格与 Registration 表格的关系如下 1 比 1,但我不知道它是否正确。

表格结构:

registration columns: id, status, conference_id, user_that_did_registration
proformas: id, proforma_number, registration_id
invoices: id, invoice_number, registration_id

问题的相关模型:

注册模式:

class Registration extends Model
{
    public function customer(){
        return $this->belongsTo(User::class, 'user_that_did_registration', 'id');
    }

    public function participants(){
        return $this->hasMany('App\Participant');
    }

    public function registration_types(){
        return $this->belongsToMany('App\RegistrationType', 'registration_registration_types');
    }

    public function conference(){
        return $this->belongsTo('App\conference');
    }

    public function proforma()
    {
        return $this->hasOne('App\Proforma');
    }

    public function invoice()
    {
        return $this->hasOne('App\Invoice');
    }
}

形式模型:

class Proforma extends Model
{
    public function registration()
    {
        return $this->belongsTo('App\Registration');
    }
}

发票模型:

class Invoice extends Model
{
    public function registration()
    {
        return $this->belongsTo('App\Registration');
    }
}

【问题讨论】:

  • 您过去研究过数据库设计吗?

标签: php database laravel database-design eloquent


【解决方案1】:

根据您的描述,您的设计看起来非常接近。由于并非所有注册都有形式或发票,因此将形式和发票放在单独的表中是有意义的。我只会做一个改变——如果形式和发票之间的关系真的是 1 对 1,那么您可以将所有字段放在一条记录中:

Proformas
    ID
    Registration_ID
    Proforma_Number
    Invoice_Number

【讨论】:

  • 谢谢,但是形式和发票之间没有关系,注册和形式之间有1-1的关系,注册和发票之间有1-1的关系。
  • 如果可以在没有相应形式的情况下对注册开具发票,那么您制定的设计很好。根据您的描述,我的印象是发票在逻辑上与付费注册的形式相关联。
  • 谢谢,在用户在付费会议中注册后,总是会为用户生成一个形式。但只有当用户完成付费注册的第 2 步,即支付注册费用时,才会生成发票。但是因此并不总是生成发票,因为用户可以进行注册,收到形式但没有完成注册(不支付)并且没有发票发送给用户并且注册被取消。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 2011-06-23
相关资源
最近更新 更多