我正在构建一个利用大量多对多关系的数据库.例如,我有零件和机器项目,每个零件进入许多机器,每台机器有很多零件.此数据库的目的是能够输入部件列表并返回仅由该列表中的部件组成的机器列表,反之亦然.我是数据库设计的新手,所以我目前一直在用转换表建模这种关系,比如:
创建表机器(machine_id号,machine_name char(30))
create table part(part_id number,part_name char(30))
创建表关系(part_id号,machine_id号)
这似乎是一种非常丑陋和天真的方式来建模这种关系.有没有更好的方法来做到这一点,比如以某种方式在各自的表下的单列中存储和更新列表或者我还没想过的更好的东西?我正在尝试找到一种方法来最大限度地减少查询时间和后处理强度.
谢谢.
我编写了一个程序,它使用虚函数来实现多态.我有一个主要的User类,盲目地调用它认为是通用对象的方法(虽然它们实际上应该是专门的).这些对象来自覆盖其基类中的纯虚函数的类.以下改编的代码应该演示我的设置:
BaseConfig.h中的泛型类(BaseConfig):
class BaseConfig {
public:
...
virtual void display() const = 0;
...
}
Run Code Online (Sandbox Code Playgroud)
SpecialConfig.h中上述泛型类(SpecialConfig)的专用版本:
class SpecialConfig : public BaseConfig {
public:
...
void display() const;
...
}
Run Code Online (Sandbox Code Playgroud)
在SpecialConfig.cpp中实现上述专用类:
...
void SpecialConfig::display() const {
// print some text
}
...
Run Code Online (Sandbox Code Playgroud)
现在,当我创建BaseConfig指针并将其设置为SpecialConfig对象的地址时,调用display()会按原样点击SpecialConfig类的display()函数.但是,事情与我在下面的代码片段中所期望的有所不同,在某些情况下,在BaseConfig队列中返回SpecialConfig对象之后,调用它们上的display()函数不再触及SpecialConfig中的display()函数.但是尝试在BaseConfig中使用display()函数,导致程序退出.
这是用于生成配置排列的通用类.我们将其称为BaseRuleSet.h中的BaseRuleSet:
class BaseRuleSet {
public:
...
virtual queue<BaseConfig *> getValidChildConfigurations(BaseConfig * c) const = 0;
...
}
Run Code Online (Sandbox Code Playgroud)
它的getValidChildConfigurations函数将在专门的RuleSet类中重写,如SpecialRuleSet.h中的SpecialRuleSet类所示:
class SpecialRuleSet : public BaseRuleSet {
public:
...
queue<BaseConfig *> getValidChildConfigurations(BaseConfig * c) const;
}
Run Code Online (Sandbox Code Playgroud)
在SpecialRuleSet.cpp中实现上面的类:
...
queue<BaseConfig *> SpecialRuleSet::getValidChildConfigurations(BaseConfig …Run Code Online (Sandbox Code Playgroud) 我已经看到了一些类似的问题,但没有什么比我想弄清楚的更多,所以这里有.我有一个具有许多视图状态的灵活应用程序,其中一些经常使用,其中一些不是.目前,所有这些状态都驻留在一个mxml文件中,因此在客户端浏览器中只生成并加载了一个swf文件.我想通过将它们分成不同的源文件并将状态从一个文件加载到另一个文件来模块化这些视图状态,但是,我仍然希望用户只需要加载一个swf文件.我的主要原因是避免源文件超过10,000行.有没有一种解决这个问题的标准方法?
谢谢.