标签: data-modeling

识别和非识别关系之间有什么区别?

我无法完全掌握差异.你能描述这两个概念并使用现实世界的例子吗?

database database-design data-modeling identifying-relationship

773
推荐指数
8
解决办法
39万
查看次数

推荐用于标记或标记的SQL数据库设计

我听说过几种实现标记的方法; 使用TagID和ItemID之间的映射表(对我有意义,但它是否可以缩放?),向ItemID添加固定数量的可能TagID列(似乎是一个坏主意),将标记保留在逗号分隔的文本列中(声音疯了,但可以工作).我甚至听过有人推荐稀疏矩阵,但那么标签名称如何优雅地增长?

我错过了标签的最佳做法吗?

sql tags tagging database-design data-modeling

274
推荐指数
5
解决办法
8万
查看次数

在日历应用程序中为重复事件建模的最佳方法是什么?

我正在构建一个需要支持重复事件的组日历应用程序,但是我提出来处理这些事件的所有解决方案看起来都像是一个黑客.我可以限制前方可以看到的距离,然后立即生成所有事件.或者我可以将事件存储为重复,并在日历上向前看时动态显示它们,但如果有人想要更改特定事件实例的详细信息,我将不得不将它们转换为正常事件.

我确信有更好的方法可以做到这一点,但我还没有找到它.对重复事件建模的最佳方法是什么,您可以在其中更改特定事件实例的详细信息或删除特定事件实例?

(我正在使用Ruby,但请不要让这限制你的答案.如果有一个特定于Ruby的库或其他东西,那么,这很有用.)

ruby algorithm recurrence calendar data-modeling

213
推荐指数
8
解决办法
6万
查看次数

什么是我应该在SQL varchar(长度)手机中考虑的最长的全球电话号码

什么是我在SQL varchar(length)手机中应该考虑的最长的全球电话号码.

注意事项:

  • +国家代码
  • ()用于区号
  • 扩展扩展的x + 6个数字(所以使其为8 {space})
  • 组之间的空格(即美国电话+ x xxx xxx xxxx = 3个空格)
  • 这是我需要你帮助的地方,我希望它能在全世界范围内使用

考虑到现在我的特殊情况,我不需要卡等.号码以国家代码开头,以扩展名结尾,没有传真/电话等评论,也不需要电话卡.

sql-server validation database-design data-modeling phone-number

187
推荐指数
5
解决办法
13万
查看次数

软删除是个好主意吗?

软删除是个好主意还是坏主意?

您只需将其标记为IsDeleted = true,而不是实际删除数据库中的记录,并且在恢复记录后,您可以将其标记为False.

这是一个好主意吗?

最好是物理删除记录,然后将其移动到存档数据库,如果用户想要记录回来,那么软件会在存档中查找记录并重新创建它吗?

sql database database-design data-modeling soft-delete

136
推荐指数
9
解决办法
8万
查看次数

我应该如何命名将两个表一起映射的表?

假设我有两张桌子:

Table: Color
Columns: Id, ColorName, ColorCode

Table: Shape
Columns: Id, ShapeName, VertexList
Run Code Online (Sandbox Code Playgroud)

我该怎么称呼将颜色映射到形状的表格?

Table: ???
Columns: ColorId, ShapeId
Run Code Online (Sandbox Code Playgroud)

sql database database-design data-modeling naming-conventions

126
推荐指数
10
解决办法
6万
查看次数

如何实现has_many:通过与Mongoid和mongodb的关系?

使用Rails指南中的这个修改示例,如何使用mongoid建模关系"has_many:through"关联?

挑战是mongoid不支持has_many:通过ActiveRecord.

# doctor checking out patient
class Physician < ActiveRecord::Base
  has_many :appointments
  has_many :patients, :through => :appointments
  has_many :meeting_notes, :through => :appointments
end

# notes taken during the appointment
class MeetingNote < ActiveRecord::Base
  has_many :appointments
  has_many :patients, :through => :appointments
  has_many :physicians, :through => :appointments
end

# the patient
class Patient < ActiveRecord::Base
  has_many :appointments
  has_many :physicians, :through => :appointments
  has_many :meeting_notes, :through => :appointments
end

# the appointment
class Appointment < ActiveRecord::Base
  belongs_to :physician
  belongs_to :patient …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails data-modeling mongodb mongoid

94
推荐指数
3
解决办法
2万
查看次数

什么是支持应用程序中自定义字段的设计模式?

我们开发商业应用程序.我们的客户要求提供自定义字段支持.例如,他们想要在Customer表单中添加一个字段.

存储字段值的已知设计模式和有关字段的元数据有哪些?

我现在看到这些选项:

选项1:将varchar类型的Field1,Field2,Field3,Field4列添加到我的Customer表中.

选项2:在customer表中添加一个XML类型的列,并将自定义字段的值存储在xml中.

选项3:添加CustomerCustomFieldValue表,其中包含varchar类型的列,并在该列中存储值.该表还有一个CustomerID,一个CustomFieldID.

CustomerID,  CustomFieldID, Value
10001,       1001,          '02/12/2009 8:00 AM'
10001,       1002,          '18.26'
10002,       1001,          '01/12/2009 8:00 AM'
10002,       1002,          '50.26'
Run Code Online (Sandbox Code Playgroud)

CustomFieldID将是另一个名为CustomField的表中的ID,其中包含以下列:CustomFieldID,FieldName,FieldValueTypeID.

选项4:添加CustomerCustomFieldValue表,其中包含每个可能值类型的列,并在右列中存储值.与#3类似,但使用强类型列存储字段值.

CustomerID,  CustomFieldID, DateValue,           StringValue,       NumericValue                 
10001,       1001,          02/12/2009 8:00 AM,  null,              null
10001,       1002,          null,                null,              18.26
10002,       1001,          01/12/2009 8:00 AM,  null,              null
10002,       1002,          null,                null,              50.26
Run Code Online (Sandbox Code Playgroud)

选项5:选项3和4使用特定于单个概念(客户)的表.我们的客户也要求以其他形式提供自定义字段.我们应该有一个系统范围的自定义现场存储系统吗?因此,我们不是拥有多个表,例如CustomerCustomFieldValue,EmployeeCustomFieldValue,InvoiceCustomFieldValue,而是拥有一个名为CustomFieldValue的表?虽然对我来说似乎更优雅,但这不会导致性能瓶颈吗?

你使用过这些方法吗?你成功了吗?你会选择什么方法?你知道我应该考虑的任何其他方法吗?

此外,我的客户希望自定义字段能够引用其他表中的数据.例如,客户可能想要向客户添加"收藏付款方式"字段.付款方式在系统的其他地方定义.这带来了"外键"的主题.我是否应该尝试创建约束以确保存储在自定义字段表中的值是有效值?

谢谢

======================

编辑07-27-2009:

谢谢您的回答.似乎方法列表现在非常全面.我选择了选项2(单个XML列).这是目前最容易实施的.我可能不得不折射更强烈定义的方法,因为我的要求会变得更复杂,并且支持的自定义字段的数量会变得更大.

database-design data-modeling

71
推荐指数
3
解决办法
2万
查看次数

OLAP数据库是否应该针对读取性能进行非规范化?

我一直认为数据库应该针对读取性能进行非规范化,因为它是为OLAP数据库设计完成的,而不是为OLTP设计进一步夸大3NF.

PerformanceDBA在各种帖子中,例如,在基于时间的数据的不同方法的表现中,捍卫了数据库应该总是通过归一化到5NF和6NF(正规形式)来精心设计的范例.

我是否理解正确(以及我理解的是什么)?

OLAP数据库(低于3NF)的传统非规范化方法/范例设计有什么问题,以及3NF足以满足大多数OLTP数据库实际情况的建议?

例如:

我应该承认,我永远无法理解非规范化有助于读取性能的理论.任何人都可以给我参考,对这个和相反的信念有很好的逻辑解释吗?

在试图说服我的利益相关者说OLAP/Data Warehousing数据库应该规范化时,我可以参考哪些来源?

为了提高可见度,我从评论中复制了这里

"如果参与者在他们看到或参与过的6NF中添加(披露)有多少现实生活(没有包含科学项目)的数据仓库实施,那将是一件好事.快速集合.Me = 0." - Damir Sudarevic

维基百科的数据仓库文章告诉我们:

"标准化的方法[与Ralph Kimball的维度相比],也称为3NF模型(第三范式),其支持者被称为"Inmonites",相信Bill Inmon的方法,其中声明数据仓库应该是使用ER模型/标准化模型建模."

看起来规范化的数据仓库方法(Bill Inmon)被认为不超过3NF(?)

我只是想了解数据仓库/ OLAP是非规范化的同义词的神话(或无处不在的公理信念)的起源是什么?

达米尔苏达雷维奇回答说他们铺好了道路.让我回到这个问题:为什么反规范化被认为有助于阅读?

database olap database-design data-modeling data-warehouse

60
推荐指数
4
解决办法
2万
查看次数

Datomic中的数据建模

我一直在研究Datomic,它看起来很有趣.虽然似乎有关于Datomic如何在技术上工作的非常好的信息,但我还没有看到如何考虑数据建模.

Datomic中的数据建模有哪些最佳实践?这个问题有什么好的资源吗?

data-modeling datomic

59
推荐指数
1
解决办法
8790
查看次数