pet*_*hen 6 database entity-relationship
在数据库原型中,我有一组字段(如名称,描述,状态),这些字段在多个功能不同的表中是必需的.
这些字段始终具有相同的最终用户功能,用于标记,显示,搜索,过滤等.它们不是外键约束的一部分.该如何建模?
我可以想到以下变种:
每个表都获得所有这些属性.在这种情况下,你会如何命名他们?相同,在每个表中,或与表名前缀(如usrName,prodName)
将它们移动到表属性中,将外键添加到"核心"表,引用Attributes.PK
如上所述,但不是外键,而是在各自的核心表中使用Attributes.PK作为PK.
听起来你可能会把规范化的想法推得太过分了.记住,这是你减少数据冗余的想法.您的示例似乎表明您担心数据库设计的元信息中的"冗余".
最终虽然,user.name和user.description是从功能的不同product.name和product.description,并且应被视为这样.因为status,这取决于你的意思.是status不仅仅是一个产品/用户的记录的指标是主动或不?如果是这样,那么将它分成不同的表是有意义的.
使用您提供的信息,如果"活动/过期/删除"仅仅是数据库中状态的指示,那么我肯定会同意这样的表结构:
users products status
id id id
name name name
description description
status_id status_id
Run Code Online (Sandbox Code Playgroud)
然而,如果status可以想象地改变以表示语义上不同的东西(即,对于用户,可能是"活跃/退休/解雇"),我建议将其拆分为未来的设计证据:
user_status product_status
id id
name name
Run Code Online (Sandbox Code Playgroud)
简而言之,规范化您的数据,而不是数据库设计.
| 归档时间: |
|
| 查看次数: |
299 次 |
| 最近记录: |