狗收养数据库设计

adu*_*pid 5 mysql erd database-design

抱歉,如果这不是常态,但我正在寻求有关“狗救援/领养”数据库设计的建议。

我已经完成了规范化研究,这是我第一次尝试数据库设计。任何提示/反馈/批评?

最棘手的部分是处理狗/用户/组织并代表谁拥有狗。

  1. 一只狗可以属于一个组织。一个组织可以有多个组织用户。想想动物收容所/磅

  2. 狗可以属于组织用户。想想一个人的乐队,他们拥有一次容纳多只狗的大房子

  3. 狗可以属于单个用户,不隶属于任何组织。认为有人搬到海外,他们需要为他们的狗找一个新主人

因此,dog 表必须附有组织 ID 或用户 ID,或两者兼有。也许是一个触发器,说明一个人必须不为空。

狗收养/救援数据库设计 ERD

Joe*_*sko 2

您可以让组织、用户和位置都引用一个公共表,该表代表可以成为狗的主人的事物。然后狗可以有一个对该表的引用。这是一个解释图。

在此输入图像描述

如果不清楚,dog.owner_id 引用 can_own_dog.can_own_dog_id。每个 can_own_dog 外键在其表中都是唯一的,理想情况下在所有三个表中都是唯一的。

我不确定您是否熟悉面向对象编程,但其想法类似于实现单个接口的多个类。

另一方面,您的图表显示“用户可以有多个位置”和“狗可以有多个位置”。我认为这些意思是说“位置可以有很多用户”和“位置可以有很多狗”?