小编Tau*_*ris的帖子

使用键/值表优于可空列或单独表的[dis]优势是什么?

我正在升级我刚才创建的支付管理系统.它目前有一个表可以接受每种付款方式.它仅限于能够支付一件事,这个升级是为了缓解.我一直在问我应该如何设计它的建议,我有以下工作的基本想法:

  1. 每种付款类型都有一个表格,每个付款类型都有几个常用列.(目前的设计)
  2. 使用带有公共列的中央表协调所有付款(统一付款ID,无论类型如何),并标识具有专用于该付款类型的列的另一个表和行ID.
  3. 为所有付款类型设置一个表,并将未用于任何给定类型的列置空.
  4. 使用中心表的想法,但将专用列存储在键/值表中.

我的目标是:不要过于缓慢,尽可能地自我记录,并在保持其他目标的同时最大限度地提高灵活性.

由于每个表中的重复列,我不太喜欢1.它反映了继承基类的支付类型类,该基类为所有支付类型提供功能... ORM反向?

我倾向于最多2,因为它就像当前的设计一样"类型安全"和自我记录.但是,与1一样,要添加新的付款方式,我需要添加一个新表.

我不喜欢3因为它的"浪费的空间",并且不能立即清楚哪些列用于哪种支付类型.文档可以减轻这种痛苦,但我公司的内部工具没有一种有效的方法来存储/查找技术文档.

我给出的4个论点是,它可以减少在添加新的付款方式时需要更改数据库,但是由于缺乏明确性,它甚至比3更糟.目前,更改数据库不是问题,但如果我们决定开始让客户保留自己的数据库,它可能会成为一个后勤噩梦.

所以,我当然有偏见.有没有人有更好的想法?您认为哪种设计最合适?我应该根据什么标准做出决定?

sql database-design schema-design

24
推荐指数
2
解决办法
1万
查看次数

有没有办法引用(在XAML中)名称中带有空格的程序集?

是否无法引用名称中包含空格的程序集?我是否真的必须将程序集重命名为不包含空格?难道没有办法逃离这些空间吗?我找不到很多有这个问题的人,更不用说任何解决方案......

示例XAML:

<UserControl x:Class="SomeClass"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Some.Namespace;assembly=Some Assembly With Spaces In The Name"
    >
Run Code Online (Sandbox Code Playgroud)

这是编译器在您尝试执行此操作时提供的错误:

未知的构建错误,''clr-namespace:Some.Namespace; assembly =某些具有空格的程序集在名称中'映射URI无效.4号线位置2.'

放'或' 程序集名称周围没有帮助.

xaml

8
推荐指数
2
解决办法
2438
查看次数

SQLE中的索引使用情况:搜索与扫描

给定以下架构:

create table dbo.SomeTable 
(
    ID int primary key identity(1, 1),
    SomeColumn varchar(50)
);

create index IX_SomeColumn on dbo.SomeTable (SomeColumn);
Run Code Online (Sandbox Code Playgroud)

并用一些数据填充它:

declare @i int = 1000;

while @i > 0 begin
    set @i = @i - 1;

    insert dbo.SomeTable (SomeColumn) 
    values (convert(varchar, @i))
end
Run Code Online (Sandbox Code Playgroud)

此查询执行索引搜索:

select ID 
from dbo.SomeTable 
where SomeColumn = '431'
Run Code Online (Sandbox Code Playgroud)

此查询执行索引扫描时:

select ID 
from dbo.SomeTable 
where case when SomeColumn = '431' then 1 else 0 end = 1
Run Code Online (Sandbox Code Playgroud)

有没有办法让后者(或类似的东西)执行索引搜索?

我问,因为我希望能够将其case when放入视图的选择列表并在where子句中使用它,但如果我无法让SQL Server执行索引,它将永远不会像原始格式一样好寻求.

sql-server indexing sql-server-2008-r2 database-performance

2
推荐指数
1
解决办法
2152
查看次数