1

我遇到了一些让我烦恼的事情,以至于我想来这里向你们(和女孩)寻求一种“最佳实践”类型的建议

我的模型中有一张桌子,我们称之为prospect. 两个独立的外部系统可以为该表中的行提供更新,但仅作为相应系统中该记录的“状态”。

我需要在本地存储这些状态。最初的想法,当然,它只是为了制作两个可以为空的外键。像这样的东西。

+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| prospect_id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| ext_status_1_id | int(11)      | YES  |     | NULL    |                |
| ext_status_2_id | int(11)      | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

在这个例子中,当然会有两个表,其中包含状态的 id/value 对。

这是一个问题 -除非是(这正是业务规则的工作方式),否则ext_status_2_id始终为 NULL 。ext_status_1_id1

我是否正确建模了这个?我只是在我的大脑后面有一个唠叨的声音告诉我“不是每一行都需要一个ext_status_2_id,所以这可能是不正确的”。

如果重要的话,这是 MySQL 5.0.45,我正在使用 InnoDB

4

3 回答 3

4

既然 Status2 在 Status1 上存在内置依赖关系,为什么不在潜在客户表上只有一个状态字段,并在 Status1 表上创建 Status2 作为属性?它当然以这种方式被大量标准化,但是以这种方式拥有数据结构说明了 Status2 对 Status1 的依赖性。

于 2009-07-20T18:23:24.963 回答
1

这可能没问题。但由于您总是只使用 2 个中的 1 个,因此您可以将其建模为:

ext_status_type(1 或 2)和实际 id 的 ext_status。

我可能会和你一样做,因为围绕它建立索引可能更容易,而且这两个数字似乎具有真正不同的含义。

如果会有更多状态(3、4、5、6),我会在我的回答中考虑第一种方法。

于 2009-07-20T18:23:58.643 回答
0

有什么可能ext__status__1ext__status__2只有status__1=1在? 是什么status__1=2?我部分同意日产范。但是 和 之间是否存在直接依赖status__1关系Status__2?是否存在形式的功能依赖关系status__1 -> Status__2
如果没有这种依赖关系,那么将status__1and保存Status__2在单独的表中并不能解决您的问题。

于 2009-07-24T08:38:49.177 回答