0

我正在寻找一种将用户输入的数据存储和检索为下拉列表的解决方案。


用户希望从包含品种值的现有下拉列表开始。

品种选择列表

<select>
<option value="0">select</option>
<option value="1">Afghan Hound</option>
<option value="2">Airedale Terrier</option>
<option value="3">American Bulldog</option>
<option value="4">Belgian Malinois</option>
</select>

存在品种表

|breed_id|  breed_title   |
---------------------------
|   1    |  Afghan Hound  |
|   2    |Airedale Terrier|
|   3    |American Bulldog|
|   4    |Belgian Malinois|

品种 ID 值将与宠物值一起保存

|pet_id| pet_name | pet_sex |breed_id|
--------------------------------------
|  1   | 'Foo Foo'|   'M'   |    2   |
|  2   | 'Sparky' |   'f'   |    4   |
|  3   |  'Spot'  |   'M'   |    1   |

因为有很多不同类型的品种,并且因为输入错误品种类型的可能性 - 用户希望能够添加、编辑和删除品种类型。

我可以看到我可以在品种表中编辑和添加品种类型。但是如果用户删除了一个品种,比如说品种#2:

|breed_id|  breed_title   |
---------------------------
|   1    |  Afghan Hound  |
|   3    |American Bulldog|
|   4    |Belgian Malinois|

该品种的宠物协会丢失了:

|pet_id| pet_name | pet_sex |breed_id|
--------------------------------------
|  1   | 'Foo Foo'|   'M'   |   (2)  |<<<<<<<
|  2   | 'Sparky' |   'f'   |    4   |
|  3   |  'Spot'  |   'M'   |    1   |

对于具有已从品种表中删除的品种​​ ID 的宠物之间的关联,我该怎么办?

下次调用宠物时,我尝试填充品种选择列表- 品种 #2 消失了。我现在怎么处理那些宠物品种?我现在如何填充我的下拉列表?


我可以想出几种方法来处理这个问题 - 但我不确定正确的解决方案 - 或最佳实践。

我意识到可能有更多的逻辑或数据输入方法、解决方案类型。无论解决方案是什么——我只想知道专业人士是如何处理这种事情的。

谢谢 : )

问候

4

1 回答 1

0

如何处理引用已删除品种的狗将取决于为什么需要更改品种。

当他们试图实现不同的目标时,每个不同的原因都会产生不同的结果。有几个是:

  1. 品种拼写错误或重命名
  2. 两个品种实际上是一个
  3. 创建了一个错误的(不存在的)品种

我会为每种情况建议以下行为

  1. 重命名只是更新现有的品种表,能够做到这一点是首先规范化品种数据的主要动机之一。

  2. 合并,如果您确定“阿富汗猎犬”“库奇猎犬”实际上是同一品种,那么您首先将所有引用“阿富汗猎犬”的狗改为引用“库奇猎犬”,然后您可以删除“阿富汗猎犬”猎犬的品种不用担心悬空的参考。

  3. 删除,假设创建了一个品种“Yo Mama”,如果您决定也不需要该品种类型的狗,您可以先删除所有引用“Yo Mama”的狗,然后再删除该品种。如果您想保留这些狗,我建议创建一个“未知”品种类型,或将品种设置为NULLable,并在删除该品种之前将所有“Yo Mama”狗的品种设置为 NULL。

无论哪种方式,这些结果将取决于您希望特定系统的行为类型,但我希望这能让您了解一些常见的迁移类型。

于 2013-02-05T03:18:20.187 回答