问题列表 - 第25519页

为什么使用common-lookup表来限制实体的状态错误?

根据Anith Sen 应该避免五个简单数据库设计错误,使用通用查找表来存储实体的可能状态是一个常见的错误.

编辑+答案: Anith文章中的数字没有很好的标注 - 我认为图1图2都是糟糕设计的例子,而图2是好的设计.P,在那里担心了一会儿.

综上所述:

  • 查找表:.
  • 通用查找表:不好.

我将在下面提出我的问题以供参考.


给出以下原因:

  1. "你失去了确保准确数据的手段;约束.通过将不同的实体组合到一个表中,你没有声明方法来约束某个类别的值."
    限制价值如何失去准确性?

  2. "您必须将每种数据类型表示为具有此类通用查找表的字符串."
    如果我想表示另一种数据类型,我可以在其查找表中添加一列.

  3. "你致力于坚强和随后的复杂性."
    怎么样?

  4. 第四,也是最后,您面临着物理实现问题.
    我不明白为什么.

我不同意给出的大多数理由,并希望对我的错误进行一些客观的批评?逻辑.

我的例子:

引用维修服务中的工作示例,其中包含许多可能具有自然流动的可能状态,让我们采取一个JobStatus表格:

  1. 预订
  2. 分配给技师
  3. 诊断问题
  4. 等待客户确认
  5. 修理并准备好接送
  6. 修理和Couriered
  7. 无法弥补并准备好接送
  8. 引用被拒绝

可以说,这些状态中的一些可以标准化为表格Couriered Items,Completed Jobs并且Quotes(具有待定/接受/拒绝状态),但这感觉就像不必要的模式复杂化.

另一个常见示例是OrderStatus限制订单状态的表:

  1. 有待
  2. 已完成
  3. 取消
  4. 退款

状态标题和描述在一个地方进行编辑,并且易于作为带有外键的下拉列表用于动态数据应用程序.这对我来说过去很有用.如果业务规则规定了新订单状态的创建,我可以将其添加到OrderStatus表中,而无需重建我的代码.

为什么这是一个不好的做法?


编辑:我在我的问题中加入了Anith的理由,并试图保持客观.

-

database-design

23
推荐指数
2
解决办法
9989
查看次数

VIM:全局匹配行,删除此行和以下2行

以下是我的想法:

% g/All Claims\t 0/3d
Run Code Online (Sandbox Code Playgroud)

但这不起作用(在这种模式下乘以动作似乎是无效的语法).我最终得到了以下序列:

qq
/All Claims\t 0
3dd
q
10000@q
Run Code Online (Sandbox Code Playgroud)

这个宏观组合很好.我只是好奇是否有适合的东西并且适合第一个例子的上下文.为了进一步扩展,我正在寻找能够用第一行替换3d的东西,并使用相同的命令,或者适当地引用宏.

vim

5
推荐指数
1
解决办法
331
查看次数

C++类接口类的析构函数

开始在现有代码库上使用PC-Lint(恐惧和恐惧).

它抱怨的一件事是:

 class IBatch
 {
 public:
    virtual void StartBatch() =0;
    virtual int CommitBatch() =0;
 };
Run Code Online (Sandbox Code Playgroud)

当另一个类派生出来时,它就像一个接口一样使用它

base class 'IBatch' has no destructor
Run Code Online (Sandbox Code Playgroud)

所以,问题是:当您创建如上所述的接口类时,您是否始终包含虚拟析构函数?为什么?(是样式还是编码错误?)

编辑:应该说我不希望或希望IBatch 的用户破坏,他们只是一个服务的消费者,通过这个接口到一些外部实现类(如果这会有所作为)

c++

24
推荐指数
4
解决办法
9703
查看次数

当我切换分支时,Git正在删除被忽略的文件

我有一个分支(让我们称之为B)忽略某个文件,在某些其他分支(例如分支A)中不会忽略该文件.当我从分支B切换到分支A,然后再次返回到B时,该文件已被删除.

这是正常的吗?我可以看到它会如何发生,在分支B认为它不存在的意义上,分支A认为它是,所以当我回到B时它"整理它".但它有点烦人.

有什么建议?

git

31
推荐指数
2
解决办法
5669
查看次数

写一个课时出错

我正在http://www.sthurlow.com/python/lesson08/上在线阅读教程,我相信我理解类在python中是如何工作的,至少在某种程度上,但是当我运行这段代码时:

class Shape:
    def __init__(self,x,y):
        self.x = x
        self.y = y
    description = "This shape has not been described yet"
    author = "Nobody has claimed to make this shape yet"
    def area(self):
        return self.x * self.y
    def perimeter(self):
        return 2 * self.x + 2 * self.y
    def describe(self,text):
        self.description = text
    def authorName(self,text):
        self.author = text
    def scaleSize(self,scale):
        self.x = self.x * scale
    self.y = self.y * scale
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Traceback (most recent call last):
  File "Y:/python/Shape.py", line 1, …
Run Code Online (Sandbox Code Playgroud)

python class

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

数据挖掘教科书

如果您遵循DM课程,使用哪本教科书?

我了解数据挖掘:实用机器学习工具和技术(第二版)本次调查.你有效地使用了什么?

data-mining

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

使用C++和Linux获取我的系统的逻辑地址

请建议如何使用C++和Linux获取我的系统的IP地址(逻辑地址).

c++ linux ip-address

0
推荐指数
1
解决办法
999
查看次数

我可以在python脚本中找到运行python脚本的可执行文件的路径吗?

有没有办法检索运行当前python脚本的可执行文件的路径(从python脚本中)?

python introspection

8
推荐指数
1
解决办法
360
查看次数

可以弹簧mvc修剪从表格中获得的所有琴弦吗?

我知道struts2默认配置会修剪从表单中获取的所有字符串.

例如:

我打字

"   whatever "
在表格和提交,我会得到
"whatever"
该字符串已被自动修剪

spring mvc也有这个功能吗?谢谢.

spring spring-mvc

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

为什么Visual Studio 2010会在Boost 1.42.0中抛出此错误?

我正在尝试重新编译应用程序,在visual studio 2005和visual studio 2008中使用警告级别4进行编译.由于错误(见下文)来自std:tr1,我认为存在一些冲突,但不确定如何修理.我的第一个想法是删除所有对boost的引用,但是后来我得到一个错误,它无法找到格式方法.所以这里有一个错误:(不确定它意味着什么)任何想法,建议,解决方案?谢谢!

编辑:刚开始时我看到一条消息:未知的编译器版本 - 请运行配置测试并报告结果

EDIT2:我认为导致此错误的一段代码:(更改为保护无辜)EDIT3:我更新了错误消息,即添加了更多...但是我得到了更多错误消息,例如这一个..所以有一个更大的问题/问题.

 !m_someMap.insert( std::make_pair( "somestring", SomeClass::isTrue ) ).second
....
.....
 inline bool isTrue ( const IDog & dog ) { return s.IsDogTrue(); }



1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\type_traits(197): error C2752: 'std::tr1::_Remove_reference<_Ty>' : more than one partial specialization matches the template argument list
1>          with
1>          [
1>              _Ty=bool (__cdecl &)(const IDog &)
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xtr1common(356): could be 'std::tr1::_Remove_reference<_Ty&&>'
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xtr1common(350): or …
Run Code Online (Sandbox Code Playgroud)

c++ boost visual-studio-2010

4
推荐指数
1
解决办法
7031
查看次数