可以在SQL中使用重复的值

时间:2015-11-13 00:25:44

标签: sql database-design semantics

我不是DBA,所以我不熟悉正确的术语,所以问题的标题可能会有点误导。

所以,事情。我有一个特定系统的会员,这些会员可以成为人口统计细分的一部分(任何类型的细分:最喜欢的颜色,性别,工作等)

这些是表格

SegmentCategory
ID, Name, Description

SegmentCategory_segment
SegmentID, SegmentCategoryID

Segment
ID, Name, Description

MemberSegment
ID, MemberID, SegmentID

因此,设计数据库的人决定对所有内容进行规范化,因此他将会员的性别置于某个细分受众群而不是会员表中。

这可以吗?根据我的逻辑,性别它是会员的财产,所以它必须在其实体上。但通过这样做,那么必须有重复的数据(成员和性别作为一个部分的性别)但成员表上的触发器可以解决这个问题(更新性别变化的部分)

为了从成员那里获取属性,必须抓取4个表似乎对我来说过于工程化。

我的问题是我是否正确?如果是这样,我怎么能提出对DBA的更改?

1 个答案:

答案 0 :(得分:1)

您无法应用这样的数据库决策。这取决于它支持的应用程序/进程。用于报告的数据库在更加非规范化(以经过深思熟虑的方式)而不是更具交易性的数据库时更容易使用。

例如,如果某些数据的访问或更新频率高于其他部分,则可以将客户记录分布在2个表中。假设您只需要90%的查询中的一半数据,但不想因为某种原因拖动那里的varchar(max)字段。

话虽如此,拥有一张只有性别/成员的桌子却处于极端的极端。根据我对您的情况的天真理解,我觉得您只需要一个会员表,其中包含您的细分的顶部视图。

至于DBA,最终我想他们将需要保持数据的完整性,所以我只是接近他们并说'嘿嘿,你怎么看待这个?&# 34;希望他们能够看到优点,或者能够为您的设计决策提供理由。