问题列表 - 第19526页

是否有用于表示来自不同表的多个对象的规范化形式?

对于我当前正在构建的系统,会出现以下两种情况:

  1. 我的权限系统是将角色和角色的权限附加到用户的常年最爱,但有一个转折:权限可以应用于任何层的任何资产,并且有4个"层",编号为0到3.因此,角色分配表长度为5个字段:资产层,资产ID,角色ID,用户ID和"已禁用"标志.该"Tier/ID"系统还用于将用户分配给"Home Asset".

    这个系统的不幸副作用是,在应用程序本身中解析我的这些资产引用通常要简单得多,而不是在SQL中(我知道它可以这样做,但它会导致一些严重的丑陋查询) . 有没有更好的方式来表示这种关系?这是表达这种关系的可接受方式吗?

    旁注:资产本身的表(它们是分层的)是规范化的,外键引用从子节点指向父节点(例如,第3层包含有关第2层的信息等),因此一旦单个资产被固定,它就非常很容易找到它的孩子和祖先.

  2. 类似的问题,但不同的数据上下文:在最低层,设备可以"附加".还允许将设备放置在图形表示(如地图)上,并将它们的排列信息存储在数据库中.图形引用(也称为"点")应指向真实设备,但实际设备可能不指向图形引用.

    目前,所有"点"(代表设备)都有一个参考表,其中包含显示布局,位置,大小等信息.我可以从这里确定三个可能的事情:

    1. 创建一系列规范化表来表示各个设备,并使用类似的"设备类型/设备ID"系统查找它们,并将此信息存储在"点"表中; 这仍然需要应用程序在解析对各自表中的实际设备的引用时进行中间工作
    2. 创建一系列规范化表,并将它们指向"点"表; 此解决方案可能不需要应用程序取消引用点数据,但需要扫描所有设备表以查找任何第3层对象.
    3. 使用点表作为指导,将所有相关显示数据添加到每个相应的标准化表中.虽然这可以防止必须完全解决任何查找,但仍然需要扫描每个设备表,并且与其他解决方案相比,对于必须存储点数据的方式的任何变化也非常不容忍.

    这个问题已经解决了,我只是没有得到备忘录?是否有解决此问题的标准设计,或者我应该假设我必须自己解决这些引用?

注意:关于问题二,我认为以下两种解决方案是可怕的,我不会考虑它们(除非有一些疯狂的,令人惊讶的证据表明它是最好的方式,我很确定它不是):

  1. 在点表本身中存储有关每个设备的所有信息(在序列化数组或某些此类机制中).这具有明显的问题,即完全无法搜索并且违反正常形式
  2. 将所有设备存储在单个通用表中.不幸的是,这些设备在它们提供的数据类型以及它们必须如何被访问方面都有很大的不同,并且在一个表格中这样做需要,上次我尝试在纸上完成它,至少30(并且可能更多)列,其中一半以上的每行都为空.

请求和赞赏任何解决方案,但我特别寻找解决此问题的现有模式和/或规范化模式(如果存在).如果您知道这是正确答案的事实,"否"就足够了,我将继续使用应用程序层来解析这些引用.它还没有成为问题,我只是想知道当有人已经解决了这个/这些问题时,我并没有在错误的方向上开辟道路.提前致谢.

编辑:权限/资产架构

第0层实际上是隐含的,而不是在数据库中,但有些东西被注册为第0层(资产ID 0)

第1层:

id int(5) unsigned not null primary key auto_increment,
name varchar(32) not null,
disabled tinyint(1) unsigned not null,
Run Code Online (Sandbox Code Playgroud)

2级:

id int(5) unsigned not null primary key auto_increment,
parentId int(5) unsigned not null,
name varchar(32) not null,
abbr varchar(16) not null,
disabled tinyint(1) unsigned not null,
foreign key (parentId) references tier1(id)
Run Code Online (Sandbox Code Playgroud)

第3层:

id int(5) unsigned not null …
Run Code Online (Sandbox Code Playgroud)

php mysql architecture design-patterns normalization

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

通过boost :: bind从向量中删除字符串

我试图从矢量中删除短字符串.

std::vector<std::string> vec;

// ...

vec.erase(std::remove_if(vec.begin(),
                         vec.end(),
                         boost::bind(std::less<size_t>(),
                                     boost::bind(&std::string::length, _1),
                                     5),
          vec.end());
Run Code Online (Sandbox Code Playgroud)

编译器会发出一个非常大的错误消息:

qwer.cpp:20: error: no matching function for call to 'remove_if(__gnu_cxx::__nor
mal_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char
> >*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator
<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::al
locator<char> > > > >, __gnu_cxx::__normal_iterator<std::basic_string<char, std:
:char_traits<char>, std::allocator<char> >*, std::vector<std::basic_string<char,
 std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_strin
g<char, std::char_traits<char>, std::allocator<char> > > > >, boost::_bi::bind_t
<boost::_bi::unspecified, std::less<unsigned int>, boost::_bi::list2<boost::_bi:
:bind_t<unsigned int, boost::_mfi::cmf0<unsigned int, std::basic_string<char, st
d::char_traits<char>, std::allocator<char> > >, boost::_bi::list1<boost::arg<1>
> >, boost::_bi::value<int> > >, __gnu_cxx::__normal_iterator<std::basic_string<
char, …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-bind

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

XmlRootAttribute是可继承的吗?

我有一个用C#的XmlSerializer序列化的类.它标有XmlRoot属性,我想在派生类中继承此属性.

查看文档时,它没有说XmlRoot使用AttributeUsageAttribute将Inherit设置为false(Inherit应该默认为true),但是在尝试反序列化没有XmlRoot属性的继承类时出错("<rootNode xmlns ='' >没想到.").

这目前有效:

[Serializable()]
[XmlRoot("rootNode")]
public class BaseClass
{
    [XmlAttribute("attributeA")]
    public int A { get; set; }
}

[Serializable()]
[XmlRoot("rootNode")]
public class InheritedClass : BaseClass
{
    [XmlElement("elementB")]
    public int B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,但我想要的是:

[Serializable()]
[XmlRoot("rootNode")]
public class BaseClass
{
    [XmlAttribute("attributeA")]
    public int A { get; set; }
}

[Serializable()]
public class InheritedClass : BaseClass
{
    [XmlElement("elementB")]
    public int B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我可能会尝试将反序列化的XML InheritedClass看起来像这样:

<rootNode attributeA="abc">
    <elementB>123</elementB> …
Run Code Online (Sandbox Code Playgroud)

c# inheritance attributes xmlserializer

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

Java本地化数字格式

Java使用小数周期,例如1/2 = 0.5

有没有办法让它使用逗号代替,如1/2 = 0,5?而不是使用逗号成千上万(如十万= 100,000)但使用空格(100 000)?

说到输出,我想我可以使用各种字符串格式函数,但问题是输入(JTable).有些列需要Double格式,因此用户必须输入类似45.5的内容,并且在这些部分中它们用于45,5 :)提前感谢

更新:

我尝试使用myTable.setDefaultLocale(Locale.Germany); 但它没有用.我也做了Locale.setDefault(Locale.Germany); @ main函数并且它确实工作但是以相当愚蠢的方式:当单元格处于编辑模式时,您必须正常输入点,即45.5但是您按Enter键确认更改后,它将显示为逗号:45,5.我的意思是它只使用逗号用于显示目的,但是当编辑它仍然是相同的ol'点.

有没有办法解决它而不编写自定义表模型?

java swing localization number-formatting

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

在OnClickListener里面我无法访问很多东西 - 如何处理?

在OnClickListener中,我无法访问范围"外部"的大多数变量,如下所示:

findViewById(R.id.Button01).setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent mainApps = new Intent(Intent.ACTION_MAIN);
                mainApps.addCategory(Intent.CATEGORY_LAUNCHER);
                List<ActivityInfo> activities = this.getPackageManager().queryIntentActivities(mainApps, 0);
                /*
                Intent intent = new Intent("com.sygic.drive/com.sygic/drive/.SygicDriveActivity");
                startActivity(intent);*/
            }

        });
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我需要获取PacketManager,我无法得到它,因为我没有在OnClickListener中提供Context.

我可以在外面做一个静态引用,并在里面使用它,但这是正确的吗?似乎很奇怪必须一直这样做?

java android

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

默认Grails'/'控制器映射无法正确解析

这个一直让我疯狂.自从升级到Grails 1.2和Weblogic 10.3以来,"/"的默认根映射停止了工作.这是我的...

我有这个URL映射:

"/"(controller:"IGive", action:"index" )
Run Code Online (Sandbox Code Playgroud)

我有一个名为IGiveController的控制器,带有索引闭包

def index = {
    render "foo"
}
Run Code Online (Sandbox Code Playgroud)

当我使用http:// localhost:8080/mycontext /我在嵌入式Tomcat和Jetty中运行我的应用程序时,我得到了"foo"返回的属性.但是当我构建战争并部署到Weblogic 10.3时,我得到了404.

我降级到Grails 1.1.2并且它仍然无法在Weblogic 10.3上运行,但错误更具描述性

Could not open ServletContext resource [/WEB-INF/grails-app/views/index.gsp] 
Run Code Online (Sandbox Code Playgroud)

因此,它似乎完全忽略了我的URL映射"/",但其他更深层次的URL映射正在起作用.任何线索?

grails groovy weblogic weblogic-10.x

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

k&r与位操作混淆

练习是:写一个函数setbits(x,p,n,y)返回x,其中n位从位置p开始,设置为y的最右边n位,其他位保持不变.

我尝试解决方案是:

#include <stdio.h>

unsigned setbits(unsigned, int, int, unsigned);

int main(void)
{
    printf("%u\n", setbits(256, 4, 2, 255));
    return 0;
}

unsigned setbits(unsigned x, int p, int n, unsigned y)
{
    return (x >> (p + 1 - n)) | (1 << (n & y));
}
Run Code Online (Sandbox Code Playgroud)

这可能不正确,但我在正确的道路上吗?如果没有,我做错了什么?我不确定为什么我不完全理解这一点,但我花了大约一个小时试图想出这个.

谢谢.

c kr-c bit-manipulation

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

如何避免带有p标签的新行?

在使用<p>标签时如何保持同一条线?

html css tags

90
推荐指数
4
解决办法
22万
查看次数

非常基本的Objective-C/C问题

这是我的代码:

#import <Foundation/Foundation.h>

void PrintPathInfo() {
    const char *path = [@"~" fileSystemRepresentation];
    NSLog(@"My home folder is at '%@'", path);
}

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    PrintPathInfo();

    [pool drain];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的问题:程序收到信号:"EXC_BAD_ACCESS".

我真的认为问题是我的NSLog,但我不知道如何解决它.

有人可以帮帮我吗?谢谢!

objective-c

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

使用forked git存储库,但我克隆了公共repo URL,而不是私有URL

git是新手,所以希望这是一个简单的答案简单的问题.

我在GitHub上分叉了一个存储库.然后我使用公共repo URL在本地计算机上克隆它:git@github.com:samuelclay/django-mingus.git而不是私有repo URL : git://github.com/samuelclay/django-mingus.git.

我对代码进行了一些更改,提交了这些更改,并且为了将我的更改推送到我的分支仓库,我发布了:git remote add upstream git://github.com/samuelclay/django-mingus.git然后git push upstream,虽然这不会给我一个错误(它说的一切都达到了 -日期),肯定不会将我的更改推向GitHub.

有没有办法更改为私人repo URL?这甚至是必要的吗?

git github

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