我正在开发一个需要代表计算机及其用户的数据库.每台计算机可以有多个用户,每个用户可以与多台计算机相关联,因此这是一种典型的多对多关系.但是,还需要一个"主要"用户的概念.我必须能够加入主用户才能列出所有主要用户的计算机.我不确定数据库中最好的结构方式是什么:
1)正如我现在所做的那样:将表与布尔IsPrimary列链接起来.加入需要像ON一样(c.computer_id = l.computer_id AND l.is_primary = 1).它有效,但感觉不对,因为将数据限制为每台计算机只有一个主要用户并不容易.
2)计算机表上直接指向用户行的字段,用户表中的所有行表示非主要用户.这代表了每个计算机的一次主要约束,但却使计算机用户列表变得更难.
3)计算机表上的一个字段,链接到链接表中的一行.感觉很奇怪......
4)还有别的吗?
描述这种关系的"关系"方式是什么?
编辑:@Mark Brackett:第三个选项对我来说似乎不那么奇怪,因为你已经展示了它的外观.出于某种原因,我甚至没有想到使用复合外键,所以我想我必须在链接表上添加一个标识列才能使其正常工作.看起来很棒,谢谢!
@ j04t:很酷,我很高兴我们现在同意#3.
有大量的驱动程序和着名的应用程序没有64位.例如,Adobe不为Internet Explorer提供64位Flash播放器插件.正因为如此,即使我运行的是64位Vista,我也必须运行32位IE.Microsoft Office,Visual Studio也不提供64位AFAIK.
现在个人而言,我在使用64位构建应用程序时没有遇到太多问题.我只需记住一些经验法则,例如总是使用SIZE_T而不是UINT32来获取字符串长度等.
所以我的问题是,是什么阻止人们为64位构建?
我一直在使用这个长命令:
svn st | awk '/\?/ {print $2}' | xargs svn add
Run Code Online (Sandbox Code Playgroud)
同样,对于svn rm文件我意外删除了正常的rm:
svn st | awk '/\!/ {print $2}' | xargs svn rm --force
Run Code Online (Sandbox Code Playgroud)
我想我可以写一个bash函数来做这两个,但我更喜欢像git那样的交互式add/rm.
如何在设计时更改MFC 中控件的Z顺序- 即我不能使用SetWindowPos或在运行时执行此操作 - 我希望在设计器中看到更改的z顺序(即使我必须求助于 -编辑.rc代码).
我有一个MFC对话框,我正在添加控件.如果控件的边缘之间有重叠,我想将一个带到另一个的前面.在Windows窗体或WPF等我可以带到前面,发送到后面,前进,后退.我在MFC中找不到这些选项,也无法判断它如何确定前面的内容,因为刚刚添加的控件通常位于之前的控件之后.如何操作MFC中的Z顺序?即使我必须直接操作.rc文件代码(即在设计器周围运行).
在样式为csOwnerDrawFixed的TComboBox后代组件上实现"在键入时查找"行为的正确方法是什么?
我在C#中有一个同时具有静态和非静态接口的类.是否可以在具有相同名称和签名的类中使用静态和非静态方法?
当我尝试这样做时,我遇到编译器错误,但出于某种原因,我认为有一种方法可以做到这一点.我错了还是没有办法在同一个类中同时使用静态和非静态方法?
如果这是不可能的,有没有一种很好的方法来实现这样的东西,可以适用于任何情况?
编辑
从我收到的回复来看,很明显没有办法做到这一点.我将使用不同的命名系统来解决这个问题.
C#新手在这里,当下面的int'max'为0时我得到除零错误,我可以看出为什么会发生这种情况但是当max为0时我应该如何处理呢?位置也是一个int.
private void SetProgressBar(string text, int position, int max)
{
try
{
int percent = (100 * position) / max; //when max is 0 bug hits
string txt = text + String.Format(". {0}%", percent);
SetStatus(txt);
}
catch
{
}
}
Run Code Online (Sandbox Code Playgroud) 这是一个好奇的.我有一个A类.它有一个B类项目,我想在A的构造函数中使用初始化列表初始化,如下所示:
class A {
public:
A(const B& b): mB(b) { };
private:
B mB;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法捕获mB的拷贝构造函数可能在使用初始化列表方法时抛出的异常?或者我是否必须在构造函数的大括号中初始化mB才能获得try/catch?