该公司为地产代理商设立董事会,例如出售,让董事会。
当代理人发布工作时,董事会地址,拥有董事会的代理人和工作类型都会被存储。
注意:属性前的星号是主键,星号后是外来的。并非所有表格都显示
// background info to help understand the project more
AGENTS
*agent_id
agency_name
agency_office
address_id*
BOARDS
*board_id
client_id*
address_id*
PENDING_JOBS
*job_id
board_id*
job_type_id*
notes
submitted_on
现在我有一个工作类型表。每份工作都有:
这是我的工作类型表
JOB_TYPES
*job_type_id
action
board
slip
,数据如下所示:(省略行)
JOB_TYPES
id | action | board | slip
-----------------------------------
1 | up | for sale | sold
2 | up | to let | let by
3 | up | for sale | null
4 | up | to let | null
5 | down | null | null
6 | service call | null | null
我一直在尝试有效地规范化我的数据库,并且根据规范化,您应该只在表中包含直接依赖于ID的数据,例如agent_name和agent_office直接依赖于agent_id!
但是在作业类型表中,SLIP直接依赖于BOARD列,而board列直接依赖于action列。
但是肯定用一把钥匙将所有列单独分成单独的表是不对的吗?
我想我的模糊问题是:
Is this okay?
Or in the real world, do people use better method or storing data like this?
答案 0 :(得分:0)
但是在作业类型表中,SLIP直接依赖于BOARD 列,电路板列直接取决于操作列。
依赖是规范化中的技术术语;它有一个确切的含义。这是您数据的一部分。
JOB_TYPES
id | action | board | slip
-----------------------------------
1 | up | for sale | sold
2 | up | to let | let by
3 | up | for sale | null
4 | up | to let | null
在规范化中,问题,
答案显然是“不”。给定action = 'up'
,您知道'board'至少有两个不同的值:'for sale'和'to let'。所以那里没有功能依赖。
尽管如此,我不得不说的工作类型表看起来有点奇怪。我怀疑你是将多个独立的事实捆绑在一个表中,但我想在做出判断之前看到更多有代表性的数据。 (想想“挂板”,“搁置单”,“取下板”,“取下单”。)
将多个独立事实捆绑到一个表中会创建一个多值依赖项,您可以通过标准化为4NF或5NF来修复它。
答案 1 :(得分:0)
两行“待售”/出售和“待售”/ null与您的陈述相矛盾,即BOARD对SLIP存在功能依赖。