![]() |
1
3
我在这种情况下使用xml类型列。。。 http://msdn.microsoft.com/en-us/library/ms189887.aspx 在使用xml之前,我们必须使用选项3。在我看来这仍然是一个很好的方法。特别是如果你有一个数据访问层,它能够为你正确地处理类型转换。我们将所有内容都存储为字符串值,并定义了一个列,其中包含用于转换的原始数据类型。 选项1和2是不允许的。不要在生产中动态更改数据库模式。
|
![]() |
2
2
肯定是3号。
|
![]() |
3
2
3或4是我唯一会考虑的-您不想在运行中更改模式,尤其是在使用某种映射层时。 我一般都会选择第三种。作为明智之举,我总是在CUSTOM\u PROPERTY表中有一个type列,它在CUSTOM\u PROPERTY\u VALUE表中重复。通过向<Primary Key,Type>的自定义属性表中添加一个superkey,您就可以拥有一个引用它的外键(以及只引用主键的简单外键)。最后,一个check约束,它确保基于此类型列,只有CUSTOM\u PROPERTY\u VALUE中的相关列不为null。 这样,你就知道如果有人定义了一个int类型的自定义属性,比如,Tine count,你实际上只会找到一个存储在这个属性的所有实例的自定义属性值表中的int。
如果您需要它来引用多个实体表,那么它可能会变得更复杂,特别是如果您想要完全的引用完整性。例如(数据库中有两种不同的实体类型):
|
![]() |
4
0
如果数据库很好地支持XML,我倾向于将数据存储为XML,或者为不同的数据类型使用少量不同的表(尝试格式化数据,使其适合少量类型中的一种--不要将一个表用于VARCHAR(15),另一个表用于VARCHAR(20),等等),类似于#5,但所有表都是预先创建的,等等所有的东西都塞进了现有的桌子里。每一行应该保存一个主记录ID、记录类型指示符和一段数据。根据记录类型设置索引,按数据排序,可以查询特定的字段值(其中RecType==19,data==Fred)。查询匹配多个字段值的记录会更困难,但这就是生活。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
![]() |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |